Ejemplo n.º 1
0
 public override void Union(_1_1.Data.WeekSchedule other)
 {
     //Doesn't do a union, but will serve as placeholder for actual functionality in future versions.
     Days          = (other as WeekSchedule)?.Days;
     DaySchedules  = (other as WeekSchedule)?.DaySchedules;
     TechnicalDays = (other as WeekSchedule)?.TechnicalDays;
 }
Ejemplo n.º 2
0
        public static async Task <RetrievedData <WeekSchedule> > GetScheduleForStopAsync(string stopId, DataSourcePreference preference, CancellationToken cancellationToken)
        {
            WeekSchedule     result           = null;
            List <string>    resultErrors     = new List <string>();
            List <Exception> resultExceptions = new List <Exception>();

            foreach (var source in Sources)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    throw new OperationCanceledException();
                }
                if (!source.IsQualified(preference))
                {
                    continue;
                }
                if (source.CanGetScheduleForStop)
                {
                    var sResult = await source.GetScheduleForStop(stopId, cancellationToken);

                    if (sResult.HasData)
                    {
                        if (result == null)
                        {
                            result = sResult.Data;
                        }
                        else
                        {
                            result.Union(sResult.Data);
                        }
                    }
                    if (sResult.ErrorMessage != null)
                    {
                        resultErrors.Add(sResult.ErrorMessage);
                    }
                    if (sResult.CaughtException != null)
                    {
                        resultExceptions.Add(sResult.CaughtException);
                    }
                }
            }
            //if (result == null)
            //    resultStops = new TransitStop[] { };
            if (result == null)
            {
                return(new RetrievedData <WeekSchedule>(resultErrors.Count == 0 ? null : resultErrors.Aggregate("", (acc, err) => (acc == "" ? "" : ", ") + err), resultExceptions.Count == 0 ? null : new AggregateException(resultExceptions)));
            }
            return(new RetrievedData <WeekSchedule>(result, resultErrors.Count == 0 ? null : resultErrors.Aggregate("", (acc, err) => (acc == "" ? "" : ", ") + err), resultExceptions.Count == 0 ? null : new AggregateException(resultExceptions)));
        }
 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;
     }
 }
Ejemplo n.º 4
0
 public abstract void Union(WeekSchedule other);
Ejemplo n.º 5
0
 public abstract void Union(WeekSchedule other);