Ejemplo n.º 1
0
        public async Task <Unit> Handle(UpdateCourseAssignmentsCommand request, CancellationToken cancellationToken)
        {
            if (request.InstructorID == null)
            {
                throw new NotFoundException(nameof(Instructor), request.InstructorID);
            }

            var instructor = await _context.Instructors.Include(x => x.CourseAssignments).Where(x => x.ID == request.InstructorID).FirstOrDefaultAsync();

            if (instructor == null)
            {
                throw new NotFoundException(nameof(Instructor), request.InstructorID);
            }

            if (request.SelectedCourses == null)
            {
                instructor.CourseAssignments = new List <Domain.Entities.CourseAssignment>();
            }

            var selectedCoursesHS = new HashSet <string>(request.SelectedCourses);
            var instructorCourses = new HashSet <int>
                                        (instructor.CourseAssignments.Select(c => c.CourseID));

            foreach (var course in _context.Courses)
            {
                if (selectedCoursesHS.Contains(course.CourseID.ToString()))
                {
                    if (!instructorCourses.Contains(course.CourseID))
                    {
                        instructor.CourseAssignments.Add(new Domain.Entities.CourseAssignment {
                            InstructorID = instructor.ID, CourseID = course.CourseID
                        });
                    }
                }
                else
                {
                    if (instructorCourses.Contains(course.CourseID))
                    {
                        Domain.Entities.CourseAssignment courseToRemove = instructor.CourseAssignments.FirstOrDefault(i => i.CourseID == course.CourseID);
                        _context.CourseAssignments.Remove(courseToRemove);
                    }
                }
            }

            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
        private static async Task AddCourseAssignments(Instructor[] instructors, Course[] courses, SchoolContext context)
        {
            var courseInstructors = new Domain.Entities.CourseAssignment[]
            {
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Chemistry").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Kapoor").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Chemistry").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Harui").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Microeconomics").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Zheng").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Macroeconomics").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Zheng").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Calculus").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Fakhouri").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Trigonometry").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Harui").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Composition").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Abercrombie").ID
                },
                new Domain.Entities.CourseAssignment {
                    CourseID     = courses.Single(c => c.Title == "Literature").CourseID,
                    InstructorID = instructors.Single(i => i.LastName == "Abercrombie").ID
                },
            };

            foreach (Domain.Entities.CourseAssignment ci in courseInstructors)
            {
                context.CourseAssignments.Add(ci);
            }
            await context.SaveChangesAsync();
        }