public static List<ExamView> FromExamList(ScheduleRepository _repo, List<Exam> list) { var result = new List<ExamView>(); string consAud; string examAud; foreach (var exam in list) { var disc = _repo.GetFirstFiltredDisciplines(d => d.DisciplineId == exam.DisciplineId); if (exam.ConsultationAuditoriumId != 0) { consAud = _repo.GetAuditorium(exam.ConsultationAuditoriumId).Name; } else { consAud = ""; } if (exam.ExamAuditoriumId != 0) { examAud = _repo.GetAuditorium(exam.ExamAuditoriumId).Name; } else { examAud = ""; } result.Add(new ExamView() { ExamId = exam.ExamId, ConsultationAuditorium = consAud, ConsultationDateTime = exam.ConsultationDateTime, DisciplineName = disc.Name, ExamAuditorium = examAud, ExamDateTime = exam.ExamDateTime, GroupName = disc.StudentGroup.Name }); } return result; }
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; }