public ActionResult LecturersJournal(int?id) { if (id == null) { return(HttpNotFound()); } Teachers Lecturer; LecturerViewModel viewModel = new LecturerViewModel(); using (DiaryConnection db = new DiaryConnection()) { //Находим семестер, группу и предмет для запроса. //Вначале находим самый близкий к сегодняшней дате семестер var TGS = db.TeachersGroupsSubjects.Where(p => p.TeacherId == id); List <Semester> founsSemesters = new List <Semester>(); //Находим все семестры в которые преподавал преподаватель foreach (var item in TGS) { var tables = item.TableOfGrades; foreach (var table in tables) { founsSemesters.Add(table.Semester); } } founsSemesters = founsSemesters.Distinct().ToList(); //Находим самый близкий к сегодняшней дате семестер Semester youngestSemester = founsSemesters.First(); foreach (var semester in founsSemesters) { if (semester.BeginningDate > youngestSemester.BeginningDate) { youngestSemester = youngestSemester; } } //Получаем первую попавшиеся группу и предмет для найденного семестра. Groups group = youngestSemester.TableOfGrades.First().TeachersGroupsSubjects.Groups; Subjects subject = youngestSemester.TableOfGrades.First().TeachersGroupsSubjects.Subjects; //Заполняем модель представления. viewModel.GetAllFinalGrades(db, group.Id, id.Value, subject.Id, youngestSemester); //Заполнения модели представления //Получение название предметов для журнала viewModel.GetNamesOfStudents(db, group.Id, id.Value, subject.Id, youngestSemester); //Получение данных для заполнения области таблицы с оценками viewModel.GetStudentsGrades(db, group.Id, id.Value, subject.Id, youngestSemester); //Для строки с названиями месяцев viewModel.GetMounthNames(); //С количеством дней в месяцах для для colspan. viewModel.GetDaysMounth(); //Для отображение строки где день месяца + день недели. viewModel.GetDaysSemester(); //Для формирование таблиц с итоговыми оценками viewModel.GetAllFinalGrades(db, group.Id, id.Value, subject.Id, youngestSemester); } return(View(viewModel)); }