public DisciplineView(ScheduleRepository repo, Discipline discipline) { DisciplineId = discipline.DisciplineId; Name = discipline.Name; Attestation = Constants.Constants.Attestation.ContainsKey(discipline.Attestation) ? Constants.Constants.Attestation[discipline.Attestation] : ""; AuditoriumHours = discipline.AuditoriumHours; LectureHours = discipline.LectureHours; PracticalHours = discipline.PracticalHours; StudentGroupName = discipline.StudentGroup.Name; var tefd = repo.GetFirstFiltredTeacherForDiscipline(tfd => tfd.Discipline.DisciplineId == discipline.DisciplineId); if (tefd != null) { TeacherFIO = tefd.Teacher.FIO; ScheduleHours = repo.getTFDHours(tefd.TeacherForDisciplineId); } else { TeacherFIO = "нет"; ScheduleHours = 0; } }
public Dictionary<DateTime, Dictionary<int, List<SessionEvent>>> GetFacultyExams(ScheduleRepository _sRepo, List<int> groups) { // Дата - (id группы + список строк) var result = new Dictionary<DateTime, Dictionary<int, List<SessionEvent>>>(); for (int i = 0; i < groups.Count; i++) { var groupExams = GetGroupActiveExams(_sRepo, groups[i], false); foreach (var exam in groupExams) { var examGroups = new List<int>(); var discipline = _sRepo.GetDiscipline(exam.DisciplineId); string fio = ""; var tfd = _sRepo.GetFirstFiltredTeacherForDiscipline(tefd => tefd.Discipline.DisciplineId == discipline.DisciplineId); if (tfd != null) { fio = tfd.Teacher.FIO; } if (!groups.Contains(discipline.StudentGroup.StudentGroupId)) { var studentIds = _sRepo.GetFiltredStudentsInGroups(sig => sig.StudentGroup.StudentGroupId == discipline.StudentGroup.StudentGroupId) .ToList() .Select(stig => stig.Student.StudentId); var groupsListIds = _sRepo.GetFiltredStudentsInGroups(sig => studentIds.Contains(sig.Student.StudentId)) .ToList() .Select(stig => stig.StudentGroup.StudentGroupId); foreach (var group in groups) { if (groupsListIds.Contains(group)) { examGroups.Add(group); } } } if (examGroups.Count == 0) { examGroups.Add(discipline.StudentGroup.StudentGroupId); } if (exam.ConsultationDateTime != Constants.Constants.DefaultEmptyDateForEvent) { if (!result.ContainsKey(exam.ConsultationDateTime.Date)) { result.Add(exam.ConsultationDateTime.Date, new Dictionary<int, List<SessionEvent>>()); foreach (var groupId in examGroups) { result[exam.ConsultationDateTime.Date].Add(groupId, new List<SessionEvent>()); } } foreach (var groupId in examGroups) { if (!result[exam.ConsultationDateTime.Date].ContainsKey(groupId)) { result[exam.ConsultationDateTime.Date].Add(groupId, new List<SessionEvent>()); } } var consAud = _sRepo.GetAuditorium(exam.ConsultationAuditoriumId); string consAudName = ""; if (consAud != null) { consAudName = consAud.Name; } foreach (var groupId in examGroups) { if (groupId == groups[i]) { result[exam.ConsultationDateTime.Date][groupId].Add(new SessionEvent() { IsExam = false, DisciplineName = discipline.Name, TeacherFIO = fio, Time = exam.ConsultationDateTime, Auditorium = consAudName }); } } } if (exam.ExamDateTime != Constants.Constants.DefaultEmptyDateForEvent) { if (!result.ContainsKey(exam.ExamDateTime.Date)) { result.Add(exam.ExamDateTime.Date, new Dictionary<int, List<SessionEvent>>()); foreach (var groupId in examGroups) { result[exam.ExamDateTime.Date].Add(groupId, new List<SessionEvent>()); } } foreach (var groupId in examGroups) { if (!result[exam.ExamDateTime.Date].ContainsKey(groupId)) { result[exam.ExamDateTime.Date].Add(groupId, new List<SessionEvent>()); } } var examAud = _sRepo.GetAuditorium(exam.ExamAuditoriumId); string examAudName = ""; if (examAud != null) { examAudName = examAud.Name; } foreach (var groupId in examGroups) { if (groupId == groups[i]) { result[exam.ExamDateTime.Date][groupId].Add(new SessionEvent() { IsExam = true, DisciplineName = discipline.Name, TeacherFIO = fio, Time = exam.ExamDateTime, Auditorium = examAudName }); } } } } } return result; }