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"));
        }
예제 #5
0
        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();
        }