public List<TimetableItem> GetTimetableForYear(StudyYear year, HalfYear halfYear = HalfYear.None) { List<TimetableItem> timetable; string tempYear = Enum.GetName(typeof(StudyYear), year); string tempHalfYear = Enum.GetName(typeof(HalfYear), halfYear); if (tempHalfYear == "None") tempHalfYear = String.Empty; try { HtmlWeb hw = new HtmlWeb(); HtmlDocument doc = hw.Load(String.Format("http://thor.info.uaic.ro/~orar/participanti/orar_{0}{1}.html", tempYear, halfYear)); doc.DocumentNode.InnerHtml = doc.DocumentNode.InnerHtml.Replace("\r\n", ""); timetable = ParseTable(doc, TimetableType.Year); } catch (WebException ex) { Logger.ExceptionLogger.Log(ex); timetable = null; } catch (NotSupportedException ex) { Logger.ExceptionLogger.Log(ex); timetable = null; } return timetable; }
public SinglePartitionQueryingTest(int year, HalfYear halfYear, string query = null,string connection=null) : base(query,connection) { HalfYear = halfYear; Year = year; if (String.IsNullOrWhiteSpace(Query)) { Query = DEFAULT_QUERY; } Query = String.Format(Query, Year, (int) HalfYear); }
public string GetXMLTimetableForBachelorYear(StudyYear year, HalfYear halfYear) { var subjectsBL = new SubjectsBL(); return _exporter.ConvertToXML(_parser.GetTimetableForYear(year, halfYear), subjectsBL.GetAllSubjects()); }
public List<FiiTimetableItem> GetTimetableForBachelorYear(StudyYear year, HalfYear halfYear) { return _parser.GetTimetableForYear(year, halfYear); }
private List<TimetableItem> ParseTable(HtmlDocument document, TimetableType type, StudyYear studyYear = StudyYear.None, HalfYear halfYear = HalfYear.None, string groupNumber = "") { List<TimetableItem> timetable = new List<TimetableItem>(); if (document.DocumentNode.Descendants("table").Count() > 0) { foreach (HtmlNode table in document.DocumentNode.Descendants("table")) { DayOfWeek day = DayOfWeek.Monday; foreach (HtmlNode tableRow in table.Descendants("tr")) { bool isDirty = false; if (tableRow.Attributes.Count == 0) { TimetableItem item = null; int index = 0; foreach (HtmlNode tableCell in tableRow.Descendants("td")) { string innerText = tableCell.InnerText.Trim(); if (tableCell.Attributes.Count > 0 && tableCell.Attributes[0].Value == "10") { day = new DayOfWeek(); day = GetDayFromCell(innerText); } else { switch (index) { case 0: item = new TimetableItem(); item.Day = day; int startHours; int startMinutes; if (Int32.TryParse(innerText.Substring(0, 2), out startHours) && Int32.TryParse(innerText.Substring(3, 2), out startMinutes)) { item.StartTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, startHours, startMinutes, 0); } break; case 1: int endHours; int endMinutes; if (Int32.TryParse(innerText.Substring(0, 2), out endHours) && Int32.TryParse(innerText.Substring(3, 2), out endMinutes)) { item.EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, endHours, endMinutes, 0); } break; case 2: if (type == TimetableType.Year) { item.StudyGroup = GetGroupFromCell(innerText); index--; type = TimetableType.Group; isDirty = true; } else { item.ClassName = innerText; if (item.StudyGroup == null) { item.StudyGroup = new Group { YearOfStudy = studyYear, HalfYearOfStudy = halfYear, Number = groupNumber }; } if (isDirty) type = TimetableType.Year; } break; case 3: item.TypeOfClass = GetClassTypeFromCell(innerText); break; case 4: item.TeacherName = innerText; break; case 5: item.RoomNumber = innerText; break; case 6: item.Frequency = GetFrequencyFromCell(innerText); break; case 7: item.OptionalPackage = GetOptionalPackageFromCell(innerText); break; } index++; } } if (item != null) timetable.Add(item); } } } } return timetable; }