public IActionResult AssignStudents(int id) { Course course = courseService.GetCourse(id); if (course == null) { return(NotFound()); } List <Student> allStudents = studentService.GetAllStudents(); CourseStudentsAssignmentViewModel model = new CourseStudentsAssignmentViewModel(); model.Course = course; model.StudentsAssignmentsList = new List <StudentAssignment>(); foreach (var student in allStudents) { bool isAssigned = course.Students.Any(c => c.Id == student.Id); model.StudentsAssignmentsList.Add(new StudentAssignment() { Student = student, IsAssigned = isAssigned }); } return(View(model)); }
//[Fact] public void AssignStudents_Post_ReturnsNotFound_WhenNonExistingCourseInModel() { // Arrange int nonExistingCourseId = 0; Course nonExistingCourse = new Course() { Id = nonExistingCourseId }; CourseStudentsAssignmentViewModel model = new CourseStudentsAssignmentViewModel() { Course = nonExistingCourse, StudentsAssignmentsList = new List <StudentAssignment>() }; var courseServiceMock = Substitute.For <CourseService>(); courseServiceMock.IsCourseExisted(nonExistingCourse).Returns(false); var controller = new CourseController(courseServiceMock, null, null, null, null); // Act var result = controller.AssignStudents(model); // Assert var viewResult = Assert.IsType <NotFoundResult>(result); }
public void AssignStudents_Post_RedirectToCourses() { // Arrange int courseId = 1; const int assignedStudentId = 2; const int nonAssignedStudentId = 3; Course course = new Course() { Id = courseId }; CourseStudentsAssignmentViewModel model = new CourseStudentsAssignmentViewModel() { Course = course, StudentsAssignmentsList = new List <StudentAssignment>() { new StudentAssignment() { Student = new Student() { Id = assignedStudentId }, IsAssigned = true }, new StudentAssignment() { Student = new Student() { Id = nonAssignedStudentId }, IsAssigned = false } } }; var courseServiceMock = Substitute.For <CourseService>(); courseServiceMock.IsCourseExisted(course).Returns(true); courseServiceMock.AssignStudentsToCourse(courseId, new List <int>()).Returns(true); var studentServiceMock = Substitute.For <StudentService>(); //studentServiceMock.IsStudentExisted(new Student()).Returns(true); var controller = new CourseController(courseServiceMock, studentServiceMock, null, null, null); // Act var result = controller.AssignStudents(model); // Assert var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Null(redirectToActionResult.ControllerName); Assert.Equal("Courses", redirectToActionResult.ActionName); }
public IActionResult AssignStudents(CourseStudentsAssignmentViewModel model) { // todo check //if (!courseService.IsCourseExisted(model.Course)) // return NotFound(); //foreach(var studentAssignment in model.StudentsAssignmentsList) //{ // if (!studentService.IsStudentExisted(studentAssignment.Student)) // return NotFound(); //} var assignedStudentsId = model.StudentsAssignmentsList.Where(al => al.IsAssigned).Select(s => s.Student.Id).ToList(); courseService.AssignStudentsToCourse(model.Course.Id, assignedStudentsId); return(RedirectToAction("Courses")); }
public IActionResult AssignStudents(CourseStudentsAssignmentViewModel model) { var assignedStudentsId = model.StudentsList.Where(a => a.IsAssigned) .Select(s => s.Student.Id); repository.SetStudentsToCourse(model.Course.Id, assignedStudentsId); var courseHometasksIds = repository.GetCourse(model.Course.Id).HomeTasks .Select(h => h.Id); foreach (var studentId in assignedStudentsId) { var studentHometaskIds = repository.GetStudentById(studentId, true).HomeTaskAssessments .Select(a => a.HomeTask.Id); var missingHometasksId = courseHometasksIds.Except(studentHometaskIds); List <HomeTaskAssessment> assessments = new List <HomeTaskAssessment>(); foreach (var hometaskId in missingHometasksId) { HomeTaskAssessment assessment = new HomeTaskAssessment() { IsComplete = false, Date = DateTime.Now, HomeTask = new HomeTask() { Id = hometaskId }, Student = new Student() { Id = studentId } }; assessments.Add(assessment); } repository.CreateHomeTaskAssessments(assessments); } return(RedirectToAction("Courses")); }
public void AssignStudents_Get_ReturnsViewResult_WithCourseStudentsAssignmentViewModel() { // Arrange const int courseId = 1; const string courseName = "test"; const int assignedStudentId = 2; const int nonAssignedStudentId = 3; var allStudents = new List <Student>() { new Student() { Id = assignedStudentId }, new Student() { Id = nonAssignedStudentId } }; CourseStudentsAssignmentViewModel expectedModel = new CourseStudentsAssignmentViewModel() { Course = new Course() { Id = courseId, Name = courseName, Students = new List <Student>() { new Student() { Id = assignedStudentId } } }, StudentsAssignmentsList = new List <StudentAssignment>() { new StudentAssignment() { Student = new Student() { Id = assignedStudentId }, IsAssigned = true }, new StudentAssignment() { Student = new Student() { Id = nonAssignedStudentId }, IsAssigned = false } } }; var courseServiceMock = Substitute.For <CourseService>(); courseServiceMock.GetCourse(courseId).Returns(new Course() { Id = courseId, Name = courseName, Students = new List <Student>() { new Student() { Id = assignedStudentId } } }); var studentService = Substitute.For <StudentService>(); studentService.GetAllStudents().Returns(allStudents); var controller = new CourseController(courseServiceMock, studentService, null, null, null); // Act var result = controller.AssignStudents(courseId); // Assert var viewResult = Assert.IsType <ViewResult>(result); var actualModel = Assert.IsType <CourseStudentsAssignmentViewModel>(viewResult.Model); actualModel.WithDeepEqual(expectedModel).Assert(); }