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() }); }
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); }
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); }