public ActionResult Subject() { List<Subject> subjects = new List<Subject>(); List<SubjectVM> subjectsVM = new List<SubjectVM>(); List<Group> groups = _teacherService.GetAllGroups(); List<GroupVM> groupsVM = Mapper.Map<List<GroupVM>>(groups); if (User.IsInRole("Student")) { subjects = _subjectService.GetStudentSubjects(); subjectsVM = Mapper.Map<List<Subject>, List<SubjectVM>>(subjects); } else if (User.IsInRole("Teacher")) { subjects = _subjectService.GetList(); subjectsVM = Mapper.Map<List<Subject>, List<SubjectVM>>(subjects); Teacher teacher = _teacherService.GetTeacherByUserId(_teacherService.UserId); foreach (var c in teacher.Subjects) { subjectsVM.Find(x => x.Id == c.SubjectId).Join = true; } foreach (var i in subjectsVM) { i.Groups = Mapper.Map<List<GroupVM>>(groups); } foreach (var a in subjectsVM) { foreach (var b in a.GroupSubject) { a.Groups.Find(x => x.Id == b.GroupId).Join = true; } } } else { subjects = _subjectService.GetList(); subjectsVM = Mapper.Map<List<Subject>, List<SubjectVM>>(subjects); } SubjectGroupListsVM subjectGroupList = new SubjectGroupListsVM { Subjects = subjectsVM, AllGroups = groupsVM }; return View(subjectGroupList); }
public void TeacherConfigure(SubjectGroupListsVM subjectGroupList) { Teacher teacher = GetTeacherByUserId(UserId); if (teacher != null) { foreach (var i in subjectGroupList.Subjects) { Subject subject = _unitOfWork.SubjectRepository.Get(i.Id); if (i.Join == false && teacher.Subjects.FirstOrDefault(t => t.SubjectId == i.Id) != null) { DeleteTeacherFromSubject(i.Id, teacher.Id); } else if (i.Join && teacher.Subjects.FirstOrDefault(t => t.SubjectId == i.Id) == null) { AddTeacherToSubject(i.Id, teacher.Id); } foreach (var x in i.Groups) { if (x.Join) { if (subject.GroupSubject == null || subject.GroupSubject.Where(t => t.GroupId == x.Id).FirstOrDefault() == null) { AddSubjectToGroup(i.Id, x.Id); if (teacher.Groups.Where(t => t.GroupId == i.Id).FirstOrDefault() == null) { AddTeacherToGroup(x.Id, teacher.Id); } } } else if (!(x.Join)) { if (subject.GroupSubject != null && subject.GroupSubject.Where(t => t.GroupId == x.Id).FirstOrDefault() != null) { DeleteSubjectFromGroup(i.Id, x.Id); } } } } var groups = _unitOfWork.GroupRepository.GetAll(); foreach (var group in groups) { var subjectsTG = subjectGroupList.Subjects.Where(x => x.Groups.Where(t => t.Id == group.Id && t.Join == false) != null); if (subjectsTG != null && subjectsTG.Count() == subjectGroupList.Subjects.Count()) { DeleteTeacherFromGroup(group.Id, teacher.Id); } } } }
public ActionResult TeacherConfigure(SubjectGroupListsVM subjectGroupList) { _teacherService.TeacherConfigure(subjectGroupList); return RedirectToAction("Subject"); }