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); }
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("таблиц")); }
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); }
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); }
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); }
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); }
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(); }
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); }
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); }
public StringScheduleInput(ScheduleParser parser, string input) { this._parser = parser; this._input = input; this._lazySchedule = new Lazy <Schedule>(() => _parser.Parse(input)); }
/// <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); } } } } }