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