public ActionResult EditStudents([Bind(Include = "StudentGroup,Students")] StudentGroupEditStudentsViewModel viewModel) { if (viewModel == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var studentGroupID = viewModel.StudentGroup?.Id; if (studentGroupID != null) { var studentGroup = _studentGroupService.GetByID((int)studentGroupID); foreach (var studentViewModel in viewModel.Students) { var student = _studentService.GetByID(studentViewModel.Id); if (studentViewModel.IsAssociatedToStudentGroup == true) { _studentGroupStudentService.AssociateStudentToStudentGroup(student, studentGroup); } else if (studentViewModel.IsAssociatedToStudentGroup == false) { _studentGroupStudentService.DisassociateStudentFromStudentGroup(student, studentGroup); } } } return(RedirectToAction("Details", new { id = studentGroupID })); }
// GET: StudentGroups/Edit/5 public ActionResult EditStudents(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var userID = User.Identity.GetUserId(); StudentGroup studentGroup = _studentGroupService.Find(id); if (studentGroup == null) { return(HttpNotFound()); } var checkedStudents = _studentGroupService.GetStudentsByStudentGroup(studentGroup.Id).ToList(); var uncheckedStudents = _studentService.GetAll().Where(x => x.Owner == userID).ToList().Except(checkedStudents, new StudentComparer()).ToList(); var checkedStudentsViewModel = AutoMapper.Mapper.Map <List <EditStudentViewModel> >(checkedStudents); var uncheckedStudentsViewModel = AutoMapper.Mapper.Map <List <EditStudentViewModel> >(uncheckedStudents); checkedStudentsViewModel.ForEach(x => x.IsAssociatedToStudentGroup = true); uncheckedStudentsViewModel.ForEach(x => x.IsAssociatedToStudentGroup = false); var editStudentsViewModel = checkedStudentsViewModel.Concat(uncheckedStudentsViewModel).OrderBy(x => x.Email).ToList(); StudentGroupEditStudentsViewModel viewModel = new StudentGroupEditStudentsViewModel() { StudentGroup = studentGroup, Students = editStudentsViewModel }; return(View(viewModel)); }