Ejemplo n.º 1
0
        private StudentViewModel UpdateStudentEnrollments(List <int> selectedCourses, StudentViewModel studentViewModel)
        {
            Student student = _StudentRepo.GetStudentById(studentViewModel.ID);
            List <EnrollmentViewModel> studentExistingEnrollments = student.Enrollments.Select(e => new EnrollmentViewModel
            {
                EnrollmentID = e.EnrollmentID,
                CourseID     = e.CourseID,
                StudentID    = e.StudentID,
                Course       = new CourseViewModel {
                    CourseID = e.Course.CourseID, Title = e.Course.Title, Credits = e.Course.Credits
                }
            }).ToList();

            studentViewModel.Enrollments = studentExistingEnrollments;

            if (selectedCourses == null)
            {
                studentViewModel.Enrollments = new List <EnrollmentViewModel>();
                return(studentViewModel);
            }
            var AvailableCourses  = _StudentRepo.GetEnrollmentsAll();
            var selectedCoursesHS = new HashSet <int>(selectedCourses);
            var instructorCourses = new HashSet <int>
                                        (studentExistingEnrollments.Select(e => e.Course.CourseID));

            foreach (var course in AvailableCourses)
            {
                if (selectedCoursesHS.Contains(course.CourseID))
                {
                    if (!instructorCourses.Contains(course.CourseID))
                    {
                        EnrollmentViewModel newEnrollment = new EnrollmentViewModel();
                        newEnrollment.Course = new CourseViewModel {
                            CourseID = course.CourseID, Title = course.Title, Credits = course.Credits
                        };
                        newEnrollment.CourseID  = course.CourseID;
                        newEnrollment.StudentID = student.ID;



                        studentViewModel.Enrollments.Add(newEnrollment);
                    }
                }
                else
                {
                    if (instructorCourses.Contains(course.CourseID))
                    {
                        EnrollmentViewModel deleteEnrollmentViewModel = studentViewModel.Enrollments.Where(e => e.Course.CourseID == course.CourseID).FirstOrDefault();
                        studentViewModel.Enrollments.Remove(deleteEnrollmentViewModel);
                    }
                }
            }
            return(studentViewModel);
        }