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