public static bool CheckUpdateTimetableFromCistRights() { TimeSpan?timePass = DateTime.Now - SettingsDataStore.GetLastTimetableUpdate(); if (timePass != null && timePass <= Config.TimetableManualUpdateMinInterval) { return(false); } return(true); }
public static Dictionary <int, EventList> GetEventsFromCist(DateTime dateStart, DateTime dateEnd, params Group[] groups) { if (groups == null || groups.Length == 0 || CheckUpdateTimetableFromCistRights() == false) { return(null); } using (var client = new WebClient()) { client.Encoding = Encoding.GetEncoding("Windows-1251"); try { var timetables = new Dictionary <int, EventList>(); Uri uri = new Uri(Urls.CistTimetableUrl(dateStart, dateEnd, groups.Select(g => g.ID).ToArray())); string data = client.DownloadString(uri); SettingsDataStore.UpdateLastTimetableUpdate(); if (groups.Length == 1) { List <Event> events = EventList.Parse(data); if (events == null) { return(null); } timetables.Add(groups[0].ID, new EventList(events)); } else { Dictionary <string, List <Event> > timetablesStr = EventList.Parse(data, true); foreach (Group group in groups) { List <Event> groupEvents = new List <Event>(); if (timetablesStr.Keys.Contains(group.Name)) { groupEvents = timetablesStr[group.Name]; } timetables.Add(group.ID, new EventList(groupEvents)); } } foreach (int groupID in timetables.Keys) { Serialisation.ToJsonFile(timetables[groupID].Events, FilePath.SavedTimetable(groupID)); Device.BeginInvokeOnMainThread(() => { MessagingCenter.Send(Application.Current, MessageTypes.TimetableUpdated, groupID); }); } return(timetables); } catch (Exception ex) { Device.BeginInvokeOnMainThread(() => { MessagingCenter.Send(Application.Current, MessageTypes.ExceptionOccurred, ex); }); } } return(null); }