Esempio n. 1
0
        public IExecutionResult GradeStudent(GradeStudentViewModel model, string userId)
        {
            var repo   = unitOfWork.GetRepository <StudentsCourses>();
            var checks = repo.FirstOrDefault(
                where : r => r.StudentId == model.StudentId && r.CourseId == model.CourseId,
                select: r => new
            {
                IsTrainer     = r.Course.Trainer.Id == userId,
                CourseEndDate = r.Course.EndDate
            });

            if (checks == null)
            {
                return(new ExecutionResult()
                {
                    Succeded = false,
                    Message = CourseMessages.CannotGradeNotSignedUp()
                });
            }

            if (!checks.IsTrainer)
            {
                return(new ExecutionResult()
                {
                    Succeded = false,
                    Message = CourseMessages.NotTrainerInCourse()
                });
            }

            if (checks.CourseEndDate.CompareTo(DateTime.Now) > 0)
            {
                return(new ExecutionResult()
                {
                    Succeded = false,
                    Message = CourseMessages.CannotGradeEndDateHasntPassed()
                });
            }

            var relationship = repo.FirstOrDefault(where : r => r.StudentId == model.StudentId && r.CourseId == model.CourseId);

            relationship.Grade = model.Grade;

            repo.Update(relationship);
            unitOfWork.Save();

            return(new ExecutionResult()
            {
                Succeded = true,
                Message = CourseMessages.SuccessfullyGraded()
            });
        }
Esempio n. 2
0
        public IExecutionResult SignUpToCourse(int courseId, string studentId)
        {
            var result = new ExecutionResult();

            var courseStartDate = unitOfWork
                                  .GetRepository <Course>()
                                  .FirstOrDefault(
                where : c => c.Id == courseId,
                select: c => c.StartDate);

            if (courseStartDate.CompareTo(DateTime.Now) == -1)
            {
                result.Succeded = false;
                result.Message  = CourseMessages.UnsuccessfulSignUpPassedStartDate();
                return(result);
            }
            var relationshipRepo = unitOfWork.GetRepository <StudentsCourses>();

            if (relationshipRepo.Any(r => r.CourseId == courseId && r.StudentId == studentId))
            {
                result.Succeded = false;
                result.Message  = CourseMessages.AlreadySignedUp();
                return(result);
            }

            try
            {
                relationshipRepo.Add(new StudentsCourses()
                {
                    StudentId = studentId,
                    CourseId  = courseId,
                    Course    = unitOfWork.GetRepository <Course>().FirstOrDefault(@where: c => c.Id == courseId),
                    Student   = unitOfWork.GetRepository <Student>().FirstOrDefault(s => s.Id == studentId)
                });
                unitOfWork.Save();
            }
            catch (DbException)
            {
                result.Succeded = false;
                result.Message  = CourseMessages.UnsuccessfulSignUpDbError();

                return(result);
            }

            result.Succeded = true;
            result.Message  = CourseMessages.SuccessfulSignUp();

            return(result);
        }
Esempio n. 3
0
        public IExecutionResult SignOutOfCourse(int courseId, string studentId)
        {
            var result = new ExecutionResult();

            var courseStartDate = unitOfWork
                                  .GetRepository <Course>()
                                  .FirstOrDefault(
                where : c => c.Id == courseId,
                select: c => c.StartDate);

            if (courseStartDate.CompareTo(DateTime.Now) == -1)
            {
                result.Succeded = false;
                result.Message  = CourseMessages.UnsuccessfulSignUpPassedStartDate();
                return(result);
            }

            var relationshipRepo = unitOfWork.GetRepository <StudentsCourses>();

            if (!relationshipRepo.Any(r => r.CourseId == courseId && r.StudentId == studentId))
            {
                result.Succeded = false;
                result.Message  = CourseMessages.NotSignedUp();
                return(result);
            }

            var relationship = relationshipRepo.FirstOrDefault(sc => sc.StudentId == studentId && sc.CourseId == courseId);

            try
            {
                relationshipRepo.Delete(relationship);

                unitOfWork.Save();
            }
            catch (DbException)
            {
                result.Succeded = false;
                result.Message  = CourseMessages.UnsuccessfulSignOutDbError();

                return(result);
            }

            result.Succeded = true;
            result.Message  = CourseMessages.SuccessfulSignOut();

            return(result);
        }