public void LoadExamsForTeacher(List <TeacherCouple> couples, DateTime NeedDate) { TeacherCouple someCouple; //проверяется имя преподавателя if (App.Current.Properties.TryGetValue("teacherName", out object AppTeacherName)) { string thisTeacher = (string)AppTeacherName; foreach (var f in App.facultiesExam) { foreach (var g in f.Groups) { for (int j = 0; j < g.Couples.Count; j++) { //Contains, так как в паре английского может быть несколько преподавателей if (g.Couples[j].CoupleTeacher.Contains(thisTeacher)) { if (Convert.ToDateTime(g.Couples[j].Day).Day == NeedDate.Day && Convert.ToDateTime(g.Couples[j].Day).Month == NeedDate.Month) { someCouple = new TeacherCouple(g.Couples[j], g.GroupName + " (" + g.Course + " курс)"); bool added = false; for (int q = 0; q < couples.Count; q++) { if (Convert.ToDateTime(couples[q].TimeBegin) == Convert.ToDateTime(someCouple.TimeBegin)) { //чтобы не добавлять одну группу два раза, //это возможно т.к. в расписании группа разделена на подгруппы if (couples[q].CoupleTeacher == someCouple.CoupleTeacher) { added = true; break; } } if (Convert.ToDateTime(couples[q].TimeBegin) > Convert.ToDateTime(someCouple.TimeBegin)) { couples.Insert(q, someCouple); added = true; break; } } if (!added) { couples.Add(someCouple); } } } } } } } }
public TimelineItemForTeacher MakeDayForTeacher(DateTime NeedDate) { DateTime now = DateTime.Now; Dictionary <byte, TeacherCouple> teacherCouples = new Dictionary <byte, TeacherCouple>(); List <TeacherCouple> teacherCoupleList = new List <TeacherCouple>(); string dt = NeedDate.DayOfWeek.ToString().ToLower(); DetermineTheNumberOfWeek(NeedDate.Day, NeedDate.Month); string numOfWeek = ""; if (App.Current.Properties.TryGetValue("numOfWeek", out object num)) { numOfWeek = (string)num; } //проверяется имя преподавателя if (App.Current.Properties.TryGetValue("teacherName", out object AppTeacherName)) { string thisTeacher = (string)AppTeacherName; foreach (var f in App.facultiesMain) { foreach (var g in f.Groups) { foreach (var c in g.Couples) { //Contains, так как в паре английского может быть несколь преподавателей if (c.CoupleTeacher.Contains(thisTeacher)) { if (c.Week == numOfWeek) { if (c.Day == dt) { //проверка, чтобы не показывать уже завершенные пары if (NeedDate.Day == now.Day && NeedDate.Month == now.Month) { string[] s = c.TimeEnd.Split(':'); int h = Convert.ToInt32(s[0]); int m = Convert.ToInt32(s[1]); TimeSpan t = new TimeSpan(h, m, 0); if (t < now.TimeOfDay) { continue; } } #region Проверка в графике, учится ли данная группа, если да, то пара добавляется в коллекцию int indexOfDigit = 0; for (int i = 0; i < g.GroupName.Length; i++) //вырезаем код специальности, чтобы по нему искать { if (Char.IsDigit(g.GroupName[i])) { indexOfDigit = i; break; } } string code = g.GroupName.Substring(indexOfDigit, 8); string course = g.GroupId[0].ToString(); foreach (var item in App.timetable) { if (item.SpecialtyName.Contains(code)) { foreach (var courses in item.Courses) { if (courses.CourseNumber == course) { int day = NeedDate.Day; int month = NeedDate.Month; for (int j = 0; j < courses.Days.Count; j++) { if (courses.Days[j].ThisDay == day && courses.Days[j].ThisMonth == month) { if (courses.Days[j].Content == null && j + 6 < courses.Days.Count) //change 24 { byte coupleNum = Convert.ToByte(c.CoupleNum); if (!teacherCouples.ContainsKey(coupleNum)) { teacherCouples.Add(coupleNum, new TeacherCouple(c, g.GroupId + (c.SubgroupId != null ? "(" + c.SubgroupId + ")" : ""))); } else { teacherCouples[coupleNum].CoupleTeacher += ", " + g.GroupId + (c.SubgroupId != null ? "(" + c.SubgroupId + ")" : ""); } } break; } } break; } } } } #endregion } } } } } } } //сортировка пар, так как могут находится не в правильном порядке if (teacherCouples != null) { SortedDictionary <byte, TeacherCouple> sortedTeacherCouples = new SortedDictionary <byte, TeacherCouple>(teacherCouples); teacherCoupleList = sortedTeacherCouples.Values.ToList(); LoadExamsForTeacher(teacherCoupleList, NeedDate); } TimelineItemForTeacher nowaday = new TimelineItemForTeacher { ThisDate = NeedDate }; if (teacherCoupleList.Count == 0) { TeacherCouple some = new TeacherCouple { CoupleName = "Ничего интересного..." }; teacherCoupleList.Add(some); } nowaday.AddRange(teacherCoupleList); return(nowaday); }