public DisplayCurriculumLesson Copy() { DisplayCurriculumLesson copy = new DisplayCurriculumLesson(); copy._Regaction = _Regaction; copy._Subject = _Subject; copy._Group = _Group; copy._Teacher = _Teacher; copy._Type = _Type; copy._Day = _Day; copy._Number = _Number; copy._Ring = _Ring; //copy._RingObj = _RingObj; copy._Hours = _Hours; copy._Error = _Error; copy._LessonID = _LessonID; copy._Flow = _Flow; copy._Auditorium = _Auditorium; copy._AudID = _AudID; copy._Date = _Date; return(copy); }
public void ShedLoadByGroup() { Curriculums.Clear(); Lessons.Clear(); HelpMessage = "Перетягивайте элементы на расписание"; if (SelectedGroup == null) return; using (UniversitySheduleContainer cnt = new UniversitySheduleContainer("name=UniversitySheduleContainer")) { // узнаем форму обучения для группы var group = (from g in cnt.Groups where g.Id == selectedGroup.Id select g).First(); int studytype = group.StudyTypeId; //поставим начало срока обучения if (group.EduPeriod.Count > 0) selecteddate = group.EduPeriod.First().Begin; // не обновится на форме.. // получим учебный план группы IEnumerable<Curriculum> cur = (from lt in cnt.Curriculums.Include("RegulatoryAction").Include("RegulatoryAction.AcademicLoad").Include("RegulatoryAction.AcademicLoad.Employe") where lt.Group.Id == selectedGroup.Id select lt); foreach (Curriculum c in cur) { var ra = c.RegulatoryAction; var al = ra.AcademicLoad.First(); var e = al.Employe.Name; var lt = ra.LessonsType.Name; DisplayCurriculumLesson dispCurr = new DisplayCurriculumLesson() { _Subject = c.Subject.Name, _Teacher = e, _Type = lt, _Regaction = ra.Id, _Hours = ra.Hours, // _Error = false, }; Curriculums.Add(dispCurr); } // узнаем срок обучения группы чтобы не прокручивать расписание за его пределы // .. откуда только?.. // ---------------------------------------- // в зависимости от формы обучения выводим расписание // для заочников ищем по дате // для очников по дню недели int selectedWeekDayNumber = (int)selecteddate.DayOfWeek; DateTime startDay = selecteddate.AddDays(1 - selectedWeekDayNumber); // начнём неделю с понедельника (а не с воскресенья) DateTime endDay = startDay.AddDays(7); if (studytype == 1) // очная { // заполняем табличку расписания для очников for (int i = 1; i < 8; ++i) // lesson number { for (int j = 0; j < 7; ++j) // day { IEnumerable<Lesson> lessons = (from l in cnt.Lessons where l.RingId == i && l.Day == j && l.Period == upweek select l); /// придумать вывод расписания от дня недели с определение типа недели (верх/низ) /*j = (int)day.DayOfWeek - 1; if (j < 0) j = 6; days[j] = day.ToString("dddd d.MM.y"); OnPropertyChanged("Day" + (j + 1).ToString());*/ Collection<Lesson> filtered_lessons = new Collection<Lesson>(); foreach (var c in cur) // отбросим пары других групп { foreach (var l in lessons) { if (c.RegulatoryActionId == l.RegulatoryActionId) filtered_lessons.Add(l); } } DisplayCurriculumLesson dispLess = null; if (filtered_lessons.Count() == 0) { dispLess = new DisplayCurriculumLesson(); } else { var les = filtered_lessons.First(); var currsForLes = (from lt in cnt.Curriculums.Include("RegulatoryAction") .Include("RegulatoryAction.AcademicLoad").Include("RegulatoryAction.AcademicLoad.Employe") where lt.RegulatoryActionId == les.RegulatoryActionId select lt); var curForLes = currsForLes.First(); var ra = curForLes.RegulatoryAction; var al = ra.AcademicLoad.First(); var e = al.Employe.Name; var lesstype = ra.LessonsType.Name; var auditorium = (from a in cnt.Auditoriums where a.Id == les.AuditoriumId select a).First(); bool flow = false; if (currsForLes.Count() > 1) flow = true; dispLess = new DisplayCurriculumLesson() { _Regaction = les.RegulatoryActionId, _Subject = curForLes.Subject.Name, _Teacher = e, _Type = lesstype, //_Error = false, _LessonID = les.Id, _Flow = flow, _Auditorium = "ауд. " + auditorium.Number, _AudID = auditorium.Id, _Day = les.Day, _Number = les.RingId, }; } Lessons.Add(dispLess); } } } else if (studytype == 2) // заочная { // заполняем табличку расписания для заочников for (int i = 1; i < 8; ++i) // lesson number { //for (int j = 0; j < 7; ++j) // day int j = 0; for (DateTime day = startDay; day < endDay; day = day.AddDays(1)) { IEnumerable<Lesson> lessons = (from l in cnt.Lessons where l.RingId == i && /*l.Day == j*/ l.Date == day /*&& l.Period == upweek*/ select l); j = (int)day.DayOfWeek - 1; if (j < 0) j = 6; days[j] = day.ToString("dddd d.MM.y"); OnPropertyChanged("Day" + (j + 1).ToString()); Collection<Lesson> filtered_lessons = new Collection<Lesson>(); foreach (var c in cur) // отбросим пары других групп { foreach (var l in lessons) { if (c.RegulatoryActionId == l.RegulatoryActionId) filtered_lessons.Add(l); } } DisplayCurriculumLesson dispLess = null; if (filtered_lessons.Count() == 0) { dispLess = new DisplayCurriculumLesson(); } else { var les = filtered_lessons.First(); var currsForLes = (from lt in cnt.Curriculums.Include("RegulatoryAction") .Include("RegulatoryAction.AcademicLoad").Include("RegulatoryAction.AcademicLoad.Employe") where lt.RegulatoryActionId == les.RegulatoryActionId select lt); var curForLes = currsForLes.First(); var ra = curForLes.RegulatoryAction; var al = ra.AcademicLoad.First(); var e = al.Employe.Name; var lesstype = ra.LessonsType.Name; var auditorium = (from a in cnt.Auditoriums where a.Id == les.AuditoriumId select a).First(); bool flow = false; if (currsForLes.Count() > 1) flow = true; dispLess = new DisplayCurriculumLesson() { _Regaction = les.RegulatoryActionId, _Subject = curForLes.Subject.Name, _Teacher = e, _Type = lesstype, //_Error = false, _LessonID = les.Id, _Flow = flow, _Auditorium = "ауд. " + auditorium.Number, _AudID = auditorium.Id, _Day = les.Day, _Number = les.RingId, }; } Lessons.Add(dispLess); } } } } }
public DisplayCurriculumLesson Copy() { DisplayCurriculumLesson copy = new DisplayCurriculumLesson(); copy._Regaction = _Regaction; copy._Subject = _Subject; copy._Group = _Group; copy._Teacher = _Teacher; copy._Type = _Type; copy._Day = _Day; copy._Number = _Number; copy._Ring = _Ring; //copy._RingObj = _RingObj; copy._Hours = _Hours; copy._Error = _Error; copy._LessonID = _LessonID; copy._Flow = _Flow; copy._Auditorium = _Auditorium; copy._AudID = _AudID; copy._Date = _Date; return copy; }