Exemple #1
0
        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;
        }