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; }
// Dictionary<DateTime, Dictionary<auditoriumId, String>> public Dictionary<DateTime, Dictionary<int, String>> GetAuditoriumMap(ScheduleRepository _sRepo) { var result = new Dictionary<DateTime, Dictionary<int, String>>(); foreach (var exam in GetAllExams()) { var disc = _sRepo.GetDiscipline(exam.DisciplineId); if (!result.ContainsKey(exam.ConsultationDateTime.Date)) { result.Add(exam.ConsultationDateTime.Date, new Dictionary<int, string>()); } if (!result[exam.ConsultationDateTime.Date].ContainsKey(exam.ConsultationAuditoriumId)) { result[exam.ConsultationDateTime.Date].Add(exam.ConsultationAuditoriumId, ""); } result[exam.ConsultationDateTime.Date][exam.ConsultationAuditoriumId] += "\n" + disc.StudentGroup.Name + "\nК\n" + exam.ConsultationDateTime.ToString("H:mm"); if (!result.ContainsKey(exam.ExamDateTime.Date)) { result.Add(exam.ExamDateTime.Date, new Dictionary<int, string>()); } if (!result[exam.ExamDateTime.Date].ContainsKey(exam.ExamAuditoriumId)) { result[exam.ExamDateTime.Date].Add(exam.ExamAuditoriumId, ""); } result[exam.ExamDateTime.Date][exam.ExamAuditoriumId] += "\n" + disc.StudentGroup.Name + "\nЭ\n" + exam.ExamDateTime.ToString("H:mm"); } return result; }