Beispiel #1
0
        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);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #2
0
        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);
        }