public ActionResult AssignTeacher(int? id) { if (!id.HasValue) { return RedirectToAction("ManageTeachers"); } TeachersAssignVM model = new TeachersAssignVM(); model.Id = id.Value; model.Courses = unitOfWork.CourseRepository.GetAll().ToList(); return View(model); }
public ActionResult AssignTeacher(TeachersAssignVM model) { if (ModelState.IsValid) { Course selectedCourse = unitOfWork.CourseRepository.GetById(model.SelectedCourseId); if (selectedCourse == null) { model.Courses = unitOfWork.CourseRepository.GetAll().ToList(); TempData.FlashMessage("Select a course", null, FlashMessageTypeEnum.Red); return View(model); } Teacher teacher = unitOfWork.TeacherRepository.GetById(model.Id, true); List<CoursesSubjects> css = unitOfWork.CoursesSubjectsRepository.GetByCourseId(model.SelectedCourseId); int a; // keys to be assigned for the course List<int> ids = Request.Form.AllKeys.Where(x => int.TryParse(x, out a)).Select<string, int>(x => int.Parse(x)).ToList(); List<int> newIds = new List<int>(ids); teacher.CourseSubjects.RemoveAll(x => { if(x.CourseId != selectedCourse.Id) { return false; } if (ids.Contains(x.Id)) { newIds.Remove(x.Id); return false; } return true; }); teacher.CourseSubjects.AddRange(css.Where(cs => cs.CourseId == selectedCourse.Id && newIds.Contains(cs.SubjectId))); unitOfWork.Save(); return RedirectToAction("ManageTeachers"); } model.Courses = unitOfWork.CourseRepository.GetAll().ToList(); return View(model); }