예제 #1
0
        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);
        }
예제 #2
0
        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);
        }