예제 #1
0
        /// <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));
        }
예제 #3
0
        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));
            }
        }
예제 #5
0
        /// <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);
        }