/// <summary> /// Obtain effective schedules, and format for display into RouteScheduleSummary /// NOTES: Schedules that result from an override do not have a real database ID, and are not stored in the database /// There may be multiple ID 0 values from created schedules /// </summary> /// <param name="dateLabels"></param> /// <param name="routeSchedules"></param> /// <param name="routeScheduleOverrides"></param> /// <returns></returns> public static List <RouteScheduleSummary> BuildEffectiveRouteSchedule(IEnumerable <RouteSchedule> routeSchedules, IEnumerable <RouteScheduleOverride> routeScheduleOverrides ) { var effectiveScheduleSummaries = new List <RouteScheduleSummary>(); try { var localNow = UTCToLocalTime.LocalTimeFromUTC(DateTime.UtcNow); var scheduleToDate = new Dictionary <RouteSchedule, DateTime>(); var effectiveRouteSchedules = BuildEffectiveRouteSchedule(localNow, 14, routeSchedules, scheduleToDate, routeScheduleOverrides); foreach (var routeSchedule in effectiveRouteSchedules) { var scheduleSummary = new RouteScheduleSummary(routeSchedule); var scheduleDate = scheduleToDate[routeSchedule]; scheduleSummary.DayOfWeek = scheduleDate.ToShortDateString() + " " + scheduleSummary.DayOfWeek; effectiveScheduleSummaries.Add(scheduleSummary); } // Sorting is needed to avoid some unusual MVCSchedule bugs - order may have been changed // after some route start times were delayed. effectiveScheduleSummaries.Sort(CompareRouteStartTimes); } catch (Exception ex) { var message = String.Format($"Exception building schedule: {ex.GetType()}; with message: {ex.Message}"); logger.Error(ex, message); } return(effectiveScheduleSummaries); }
public IHttpActionResult GetRouteSchedule(int id) { RouteSchedule routeSchedule = db.RouteSchedules.Find(id); if (routeSchedule == null) { return(NotFound()); } var routeScheduleSummary = new RouteScheduleSummary(routeSchedule); return(Ok(routeScheduleSummary)); }
private static int CompareRouteStartTimes(RouteScheduleSummary routeSchedule1, RouteScheduleSummary routeSchedule2) { DateTime startDate1 = DateTime.Parse(routeSchedule1.DayOfWeek); DateTime startDate2 = DateTime.Parse(routeSchedule2.DayOfWeek); int dateCompare = startDate1.CompareTo(startDate2); if (dateCompare != 0) { return(dateCompare); } DateTime startTime1 = DateTime.Parse(routeSchedule1.StartTime); DateTime startTime2 = DateTime.Parse(routeSchedule2.StartTime); return(startTime1.CompareTo(startTime2)); }
public IHttpActionResult GetRouteSchedule(int id) { using (var db = new TrolleyTracker.Models.TrolleyTrackerContext()) { RouteSchedule routeSchedule = db.RouteSchedules.Find(id); if (routeSchedule == null) { return(NotFound()); } var routeScheduleSummary = new RouteScheduleSummary(routeSchedule); return(Ok(routeScheduleSummary)); } }
/// <summary> /// Obtain effective schedules, and format for display into RouteScheduleSummary /// NOTES: Schedules that result from an override do not have a real database ID, and are not stored in the database /// There may be multiple ID 0 values from created schedules /// </summary> /// <param name="dateLabels"></param> /// <param name="routeSchedules"></param> /// <param name="routeScheduleOverrides"></param> /// <returns></returns> public static List <RouteScheduleSummary> BuildEffectiveRouteSchedule(IEnumerable <RouteSchedule> routeSchedules, IEnumerable <RouteScheduleOverride> routeScheduleOverrides ) { var localNow = UTCToLocalTime.LocalTimeFromUTC(DateTime.UtcNow); var scheduleToDate = new Dictionary <RouteSchedule, DateTime>(); var effectiveRouteSchedules = BuildEffectiveRouteSchedule(localNow, 14, routeSchedules, scheduleToDate, routeScheduleOverrides); var effectiveScheduleSummaries = new List <RouteScheduleSummary>(); foreach (var routeSchedule in effectiveRouteSchedules) { var scheduleSummary = new RouteScheduleSummary(routeSchedule); var scheduleDate = scheduleToDate[routeSchedule]; scheduleSummary.DayOfWeek = scheduleDate.ToShortDateString() + " " + scheduleSummary.DayOfWeek; effectiveScheduleSummaries.Add(scheduleSummary); } return(effectiveScheduleSummaries); }