private async void LoadSchedule() { try { IsBusy = true; if (Stop.ID == null) { Subtitle = "No stop is selected."; HasSchedule = false; } else { Subtitle = null; var retrievedSchedule = await DataSource.GetScheduleForStopAsync(Stop.ID, DataSourcePreference.All, TokenSource.Token); if (retrievedSchedule.HasData) { Schedule = retrievedSchedule.Data; DayGroups.Clear(); var groups = Schedule.GetScheduleGroups().ToArray(); foreach (var group in groups) { DayGroups.Add(new DayScheduleGroup(group)); } //if (groups.Length > 0) // DayGroups.AddRange(groups); HasSchedule = true; var today = DateTime.Today.DayOfWeek.ToServiceDay(); var todaysGroup = DayGroups.FirstOrDefault(dg => (dg.DayGroup & today) == today); if (todaysGroup == null) { SelectedDayGroup = DayGroups[0]; } else { SelectedDayGroup = todaysGroup; } } //LoadSelectedSchedule(); } } catch (OperationCanceledException) { Subtitle = "Schedule retrieval was cancelled."; HasSchedule = false; } catch (Exception ex) { Subtitle = "Error has occured: " + ex.Message; HasSchedule = false; } finally { IsBusy = false; } }
public override IEnumerable <_1_1.Data.ServiceDay> GetScheduleGroups() { return(DayGroups.Select(d => (_1_1.Data.ServiceDay)((int)d))); }