예제 #1
0
        /// <summary>
        /// Обработка данных для получения структурированного расписания экзаменов
        /// </summary>
        private void ParseExams()
        {
            _listExams.Clear();
            int i = 0;
            // Производим поиск необходимых элементов
            while (i < _dataStrArrayExams.Count)
            {
                // Проверяем, нет ли элемента строки в строке документа исходного
                if (_dataStrArrayExams[i].Contains("bgcolor=#ddddee>&nbsp;"))
                {
                    // Создаем объект предмета и заполняем его поля
                    var subject = new Exam();

                    string pattern = "&nbsp;(\\d+\\.\\d+\\.\\d+)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        var date = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value;
                        subject.DateExam = DateTime.ParseExact(date, "dd.MM.yyyy", CultureInfo.InvariantCulture);
                    }

                    i++;
                    pattern = "&nbsp;(\\w+)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        subject.DayOfWeek = (DayOfWeek)(new DayOfWeekConverter()).ConvertBack(Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value, typeof(DayOfWeek), null, CultureInfo.CurrentCulture);
                    }

                    i++;
                    pattern = "&nbsp;(\\S+ - \\S+)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        subject.StringTime = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value;
                    }

                    i++;
                    pattern = "&nbsp;([\\S\\s]*)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        subject.StringSubject = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value;
                    }

                    i++;
                    pattern = "&nbsp;([\\S\\s]*)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        subject.StringTeacher = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value;
                    }

                    i++;
                    pattern = "&nbsp;([\\S\\s]*)&nbsp;";
                    if (Regex.IsMatch(_dataStrArrayExams[i], pattern))
                    {
                        subject.StringLocation = Regex.Match(_dataStrArrayExams[i], pattern).Groups[1].Value;
                    }

                    _listExams.Add(subject);
                }
                i++;
            }
            _sortedListExams.Clear();
            _sortedListExams = new ObservableCollection<Exam>(_listExams.OrderBy(exam => exam.DateExam));
            _isExamsLoaded = true;
            NotifyPropertyChanged("Exams");
        }