Example #1
0
        public void Schedule20150209Test()
        {
            // arrange
            const int year = 2015;

            var expectedItem0 = new ScheduleItem()
            {
                Start    = new DateTime(year, 02, 10, 8, 0, 0),
                End      = new DateTime(year, 02, 10, 17, 30, 0),
                Location = "Flamingo's"
            };

            var expectedItem1 = new ScheduleItem()
            {
                Start    = new DateTime(year, 02, 13, 9, 0, 0),
                End      = new DateTime(year, 02, 13, 18, 30, 0),
                Location = "Panda's"
            };

            // act
            var htmlContent   = GetFileContent("20150209_rooster.txt");
            var contentParser = new ScheduleParser(htmlContent, year);
            var schedule      = contentParser.GetScheduleFromContent();

            // assert
            Assert.That(schedule, Is.Not.Null);
            Assert.That(schedule.Count(), Is.EqualTo(2));
            AssertSchedule(schedule[0], expectedItem0);
            AssertSchedule(schedule[1], expectedItem1);
        }
Example #2
0
        public void ReparseSchedule()
        {
            Debugger.Write("Schedule parsing started...");
            ScheduleParser parser = new ScheduleParser();

            Debugger.Write("Saving schedule to db started...");
            DbWorker.ReParseSchedule(parser.Parse());
            Debugger.Write("Save to db: success");
        }
        public void ParseIncorrectPage()
        {
            var scheduleParser = new ScheduleParser();

            var htmlDocument = new HtmlDocument();

            htmlDocument.LoadHtml("<!doctype html><html>Some random text</html>");

            Assert.That(() => scheduleParser.ParseTable(htmlDocument, ""), Throws.ArgumentException.And.Message.Contains("таблиц"));
        }
Example #4
0
        public void ReparseGroup(int id)
        {
            Debugger.Write("Schedule parsing started...");
            ScheduleParser parser        = new ScheduleParser();
            var            groupSchedule = parser.ParseLessons(id).Result;

            Debugger.Write("Schedule parsing successfully");

            DbWorker.ParseGroupSchedule(id, groupSchedule);
        }
        public void ParseCorrectPage()
        {
            var scheduleParser = new ScheduleParser();

            var htmlDocument = new HtmlDocument();

            htmlDocument.LoadHtml(CorrectPageWithFifteenLessons);

            var list = scheduleParser.ParseTable(htmlDocument, "1");

            Assert.That(list, Is.Not.Empty);
            Assert.That(list.Count, Is.EqualTo(15));
            Assert.That(list.All(i => i.Teacher != null && i.Subject != null), Is.True);
            Assert.That(list.All(i => i.Group == "1"), Is.True);
        }
Example #6
0
        static void handleSchedule(Options opts)
        {
            string html;

            if (string.IsNullOrEmpty(opts.inputHtml))
            {
                html = ScheduleParser.FetchScheduleHtml(opts.inputURL);
            }
            else
            {
                html = System.IO.File.ReadAllText(opts.inputHtml);
            }
            var games = ScheduleParser.GamesScheduleFromHtml(html);
            //var games = ScheduleParser.GamesScheduleFromDailyHtml(html);
        }
Example #7
0
        public void Schedule2020Page0Test()
        {
            // arrange
            const int YEAR = 2020;

            var expectedItem0 = new ScheduleItem
            {
                Start    = new DateTime(YEAR, 12, 07, 8, 30, 0),
                End      = new DateTime(YEAR, 12, 07, 18, 0, 0),
                Location = "Aapjes",
            };

            var expectedItem1 = new ScheduleItem
            {
                Start    = new DateTime(YEAR, 12, 08, 7, 45, 0),
                End      = new DateTime(YEAR, 12, 08, 14, 30, 0),
                Location = "Aapjes",
            };

            var expectedItem2 = new ScheduleItem
            {
                Start    = new DateTime(YEAR, 12, 08, 14, 30, 0),
                End      = new DateTime(YEAR, 12, 08, 17, 30, 0),
                Location = "Verhuizing groepen",
            };

            var expectedItem3 = new ScheduleItem
            {
                Start    = new DateTime(YEAR, 12, 09, 16, 30, 0),
                End      = new DateTime(YEAR, 12, 09, 18, 30, 0),
                Location = "Verhuizing groepen",
            };

            // act
            var htmlContent   = GetFileContent("2020/page_0.txt");
            var contentParser = new ScheduleParser(NullLogger.Instance);
            var schedule      = contentParser.GetScheduleFromContent(htmlContent, YEAR).ToList();

            // assert
            Assert.NotNull(schedule);
            Assert.Equal(4, schedule.Count);
            AssertSchedule(schedule[0], expectedItem0);
            AssertSchedule(schedule[1], expectedItem1);
            AssertSchedule(schedule[2], expectedItem2);
            AssertSchedule(schedule[3], expectedItem3);
        }
Example #8
0
        public void Schedule201508Test()
        {
            // arrange
            const int year = 2015;

            var expectedItem0 = new ScheduleItem
            {
                Start    = new DateTime(year, 02, 16, 8, 0, 0),
                End      = new DateTime(year, 02, 16, 13, 15, 0),
                Location = "Zebra's"
            };

            var expectedItem1 = new ScheduleItem
            {
                Start    = new DateTime(year, 02, 16, 13, 45, 0),
                End      = new DateTime(year, 02, 16, 17, 30, 0),
                Location = "Krokodillen"
            };

            var expectedItem2 = new ScheduleItem
            {
                Start    = new DateTime(year, 02, 17, 8, 0, 0),
                End      = new DateTime(year, 02, 17, 17, 30, 0),
                Location = "Flamingo's"
            };

            var expectedItem3 = new ScheduleItem
            {
                Start    = new DateTime(year, 02, 20, 9, 0, 0),
                End      = new DateTime(year, 02, 20, 18, 30, 0),
                Location = "Panda's"
            };

            // act
            var htmlContent   = GetFileContent("2015-08.html");
            var contentParser = new ScheduleParser(htmlContent, year);
            var schedule      = contentParser.GetScheduleFromContent();

            // assert
            Assert.That(schedule, Is.Not.Null);
            Assert.That(schedule.Count(), Is.EqualTo(4));
            AssertSchedule(schedule[0], expectedItem0);
            AssertSchedule(schedule[1], expectedItem1);
            AssertSchedule(schedule[2], expectedItem2);
            AssertSchedule(schedule[3], expectedItem3);
        }
Example #9
0
        private void ChangeTable_Click(object sender, EventArgs e)
        {
            ScheduleRepository  scheduleRepository = new ScheduleRepository();
            DataTableCollection data;

            using (var stream = File.Open(fileName, FileMode.Open, FileAccess.Read))
            {
                using (var reader = ExcelReaderFactory.CreateReader(stream))
                {
                    DataSet result = reader.AsDataSet();
                    data = result.Tables;
                    DataTable BakTable = data[0];
                    ScheduleParser.ParseScheduleFromExcel(data[0].Rows, practiceRepository, scheduleRepository, competenceRepository);
                }
            }
            practiceRepository.Save();
            scheduleRepository.Save();
            competenceRepository.Save();
        }
Example #10
0
        static void handleResults(Options opts)
        {
            string html;

            if (string.IsNullOrEmpty(opts.inputHtml))
            {
                if (!string.IsNullOrEmpty(opts.inputURL))
                {
                    html = ScheduleParser.FetchScheduleHtml(opts.inputURL);
                }
                else
                {
                    html = ResultsParser.FetchResultsHtml(DateTime.Now.AddDays(1));
                }
            }
            else
            {
                html = System.IO.File.ReadAllText(opts.inputHtml);
            }
            var gameResults = ResultsParser.GamesResultsFromHtml(html);
        }
Example #11
0
        public void Schedule20141212Test()
        {
            // arrange
            const int year = 2014;

            var expectedItem0 = new ScheduleItem()
            {
                Start    = new DateTime(year, 12, 08, 9, 0, 0),
                End      = new DateTime(year, 12, 08, 13, 30, 0),
                Location = "Boventallig werken, mentor en inwerken"
            };

            var expectedItem1 = new ScheduleItem()
            {
                Start    = new DateTime(year, 12, 08, 14, 0, 0),
                End      = new DateTime(year, 12, 08, 17, 30, 0),
                Location = "Boventallig werken, mentor en inwerken"
            };

            var expectedItem2 = new ScheduleItem()
            {
                Start    = new DateTime(year, 12, 11, 11, 0, 0),
                End      = new DateTime(year, 12, 11, 12, 30, 0),
                Location = "Boventallig werken, mentor en inwerken"
            };

            // act
            var htmlContent   = GetFileContent("20141212_rooster.txt");
            var contentParser = new ScheduleParser(htmlContent, year);
            var schedule      = contentParser.GetScheduleFromContent();

            // assert
            Assert.That(schedule, Is.Not.Null);
            Assert.That(schedule.Count(), Is.EqualTo(3));
            AssertSchedule(schedule[0], expectedItem0);
            AssertSchedule(schedule[1], expectedItem1);
            AssertSchedule(schedule[2], expectedItem2);
        }
Example #12
0
 public StringScheduleInput(ScheduleParser parser, string input)
 {
     this._parser       = parser;
     this._input        = input;
     this._lazySchedule = new Lazy <Schedule>(() => _parser.Parse(input));
 }
Example #13
0
        /// <summary>
        /// Runs through the schedules available and checks which Questionnairs must be assigned.
        /// </summary>
        public static void ScheduleQuestionnaires()
        {
            AccessHandlerManager         ahm            = new AccessHandlerManager();
            List <AssignedQuestionnaire> questionnaires = ahm.EpisodeAccessHandler.GetAssignedQuestionnaires();

            foreach (AssignedQuestionnaire aq in questionnaires)
            {
                var milestones     = aq.Episode.MileStones.GroupBy(m => m.Milestone.Name.ToLower()).ToDictionary(k => k.Key, v => (IEnumerable <DateTime>)v.Select(m => m.MilestoneDate).ToList());
                var scheduledDates = new ScheduleParser().ParseSchedule(aq.ScheduleString, aq.Episode.DateCreated, milestones);

                /*
                 * foreach (var scheduled in aq.Schedules)
                 * {
                 *  if (scheduled.ResponseGroup != null && scheduled.ResponseGroup.Status == QuestionnaireUserResponseGroupStatus.New && (!scheduledDates.ContainsKey(scheduled.ScheduleString) || !scheduledDates[scheduled.ScheduleString].Contains(scheduled.CalculatedDate.Value)))
                 *  {
                 *      // TODO should we remove?
                 *  }
                 * }*/

                // Find which dates we have to schedule
                List <ToSchedule> toSchedule = new List <ToSchedule>();
                var schedules = aq.Schedules.GroupBy(s => s.ScheduleString).ToDictionary(k => k.Key, v => v.Select(s => s.CalculatedDate).ToList());
                foreach (var dates in scheduledDates)
                {
                    if (!schedules.ContainsKey(dates.Key))
                    {
                        foreach (DateTime date in dates.Value)
                        {
                            toSchedule.Add(new ToSchedule()
                            {
                                ScheduleString = dates.Key, DateTimeToSchedule = date
                            });
                        }
                    }
                    else
                    {
                        foreach (DateTime date in dates.Value)
                        {
                            if (!schedules[dates.Key].Contains(date))
                            {
                                toSchedule.Add(new ToSchedule()
                                {
                                    ScheduleString = dates.Key, DateTimeToSchedule = date
                                });
                            }
                        }
                    }
                }

                // Create the new ScheduledQuestionnaireDate instances
                List <ScheduledQuestionnaireDate> newSchedules = new List <ScheduledQuestionnaireDate>();
                foreach (ToSchedule ts in toSchedule)
                {
                    ScheduledQuestionnaireDate sqd = ahm.EpisodeAccessHandler.ScheduleDateForQuestionnaire(aq.QuestionnaireName, aq, ts.DateTimeToSchedule, ts.ScheduleString);
                    newSchedules.Add(sqd);
                }

                newSchedules.AddRange(aq.Schedules.Where(s => s.ScheduleHasBeenExecuted = false));

                if (newSchedules.Count > 0)
                {
                    newSchedules.OrderBy(s => s.CalculatedDate);

                    // Schedule the last one that is not schedule and after this date
                    DateTime today     = DateTime.Now;
                    var      lastEntry = newSchedules.Where(s => s.CalculatedDate < today).OrderBy(s => s.CalculatedDate).LastOrDefault();
                    if (lastEntry != null)
                    {
                        ahm.QuestionnaireAccessHandler.CreateQuestionnaireUserResponseGroup(aq.Episode.Patient.Id, aq.QuestionnaireName, null, lastEntry);
                        lastEntry.ScheduleHasBeenExecuted = true;
                        ahm.EpisodeAccessHandler.UpdateScheduleQuestionnaireDate(lastEntry);
                    }

                    // Mark all the other ones as not completed
                    var toDisable = newSchedules.Where(s => s.CalculatedDate < (lastEntry != null ? lastEntry.CalculatedDate : today));
                    foreach (var sqd in toDisable)
                    {
                        sqd.ScheduleHasBeenExecuted = true;
                        ahm.EpisodeAccessHandler.UpdateScheduleQuestionnaireDate(sqd);
                        if (sqd.ResponseGroup != null)
                        {
                            ahm.QuestionnaireAccessHandler.SaveQuestionnaireResponse(sqd.ResponseGroup.Questionnaire.Id, sqd.ResponseGroup.Id, true, new List <QuestionnaireResponse>(), QuestionnaireUserResponseGroupStatus.Missed);
                        }
                    }
                }
            }
        }