public ActionResult TeachersContent(int school, int year) { // get subjects var subjects = repository.GetSchoolSubjects(school).OrderBy(x => x.name); var viewmodel = new List <SubjectTeacher>(); foreach (var entry in subjects) { var subject = entry; var subjectTeacher = db.subject_teachers.Where(x => x.year == year && x.subjectid == subject.id); var model = new SubjectTeacher() { subjectid = subject.id, subjectname = subject.name }; foreach (var teacher in subjectTeacher.GroupBy(x => x.user)) { var subjectentry = new SubjectTeacherEntry(); subjectentry.teachername = teacher.Key.ToName(); foreach (var klass in teacher.OrderBy(x => x.school_class.name)) { subjectentry.AllocatedClasses.Add(new IdName(klass.classid, klass.school_class.name)); } model.teachers.Add(subjectentry); } viewmodel.Add(model); } return(View(viewmodel)); }
public ActionResult TeachersEdit(long subject, int year, int school) { // get active teachers var teachers = repository.GetUsers() .Where(x => (x.usergroup == (int)UserGroup.TEACHER || x.usergroup == (int)UserGroup.HEAD) && x.schoolid.HasValue && x.schoolid.Value == school && x.employments.Count != 0 && x.employments.Any(y => y.start_date.HasValue && y.start_date.Value.Year <= year && (!y.end_date.HasValue || y.end_date.Value.Year >= year))) .OrderBy(x => x.name) .Select(x => new IdName() { id = x.id.ToString(), name = x.ToName(false) }); var s = repository.GetSchoolSubject(subject); var viewmodel = new SubjectTeacher(); viewmodel.subjectid = s.id; viewmodel.subjectname = s.name; var subjects = db.subject_teachers.Where(x => x.subjectid == subject); if (!subjects.Any()) { // nothing var subjectentry = new SubjectTeacherEntry(); subjectentry.teachers = teachers.Select(x => new SelectListItem() { Text = x.name, Value = x.id }); subjectentry.classes = db.school_classes .Where(x => x.schoolid == school) .OrderBy(x => x.name) .Select(x => new SelectListItem() { Text = x.name, Value = x.id.ToString() }); viewmodel.teachers.Add(subjectentry); } else { foreach (var teacher in subjects.GroupBy(x => x.user)) { var subjectentry = new SubjectTeacherEntry(); subjectentry.classes = db.school_classes .Where(x => x.schoolid == school) .OrderBy(x => x.name) .Select(x => new SelectListItem() { Text = x.name, Value = x.id.ToString() }); IGrouping <user, subject_teacher> teacher1 = teacher; subjectentry.teachers = teachers.Select(x => new SelectListItem() { Text = x.name, Value = x.id, Selected = x.id == teacher1.Key.id.ToString() }); foreach (var klass in teacher.OrderBy(x => x.school_class.name)) { subjectentry.AllocatedClasses.Add(new IdName(klass.classid, klass.school_class.name)); } viewmodel.teachers.Add(subjectentry); } } return(View(viewmodel)); }