Beispiel #1
0
        public void TestMultipleOverride()
        {
            List <RouteScheduleOverride> routeScheduleOverrides;
            var schedule = InitialSchedule(6, 23, 9, 12, out routeScheduleOverrides);  // Override starts later, Both end at same time, leaving first part of original schedule


            // Create second override
            var scheduleOverride = new RouteScheduleOverride();

            scheduleOverride.OverrideType = RouteScheduleOverride.OverrideRule.NoService;  // Result will be same for either NoService or Replace
            scheduleOverride.StartTime    = ScheduleTime(15, 0, 0);
            scheduleOverride.EndTime      = ScheduleTime(16, 0, 0);
            routeScheduleOverrides.Add(scheduleOverride);

            var realSchedules = BuildScheduleView.ModifyRouteScheduleForOverlap(schedule, routeScheduleOverrides);

            Assert.AreEqual(3, realSchedules.Count);

            // Leaves segments 6:00-9:00, 12:00-15:00, 16:00-23:00

            Assert.AreEqual(schedule.StartTime, realSchedules[0].StartTime);
            Assert.AreEqual(ScheduleTime(9, 0, 0), realSchedules[0].EndTime);

            Assert.AreEqual(ScheduleTime(12, 0, 0), realSchedules[1].StartTime);
            Assert.AreEqual(ScheduleTime(15, 0, 0), realSchedules[1].EndTime);

            Assert.AreEqual(ScheduleTime(16, 0, 0), realSchedules[2].StartTime);
            Assert.AreEqual(ScheduleTime(23, 0, 0), realSchedules[2].EndTime);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            RouteScheduleOverride routeScheduleOverride = db.RouteScheduleOverrides.Find(id);

            db.RouteScheduleOverrides.Remove(routeScheduleOverride);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult DeleteConfirmed(int id)
 {
     using (var db = new TrolleyTrackerContext())
     {
         RouteScheduleOverride routeScheduleOverride = db.RouteScheduleOverrides.Find(id);
         logger.Info($"Deleted special schedule type '{routeScheduleOverride.OverrideType.ToString()}' at  {routeScheduleOverride.OverrideDate} '{routeScheduleOverride.StartTime.TimeOfDay} - {routeScheduleOverride.EndTime.TimeOfDay}");
         db.RouteScheduleOverrides.Remove(routeScheduleOverride);
         db.SaveChanges();
     }
     return(RedirectToAction("Index"));
 }
        public ActionResult Create()
        {
            var routeList = db.Routes.OrderBy(r => r.ShortName).ToList();

            ViewBag.NewRouteID        = new SelectList(RouteSelectList(""), "ID", "ShortName");
            ViewBag.OverriddenRouteID = new SelectList(RouteSelectList("** All **"), "ID", "ShortName");
            var routeScheduleOverride = new RouteScheduleOverride();

            routeScheduleOverride.OverrideType = RouteScheduleOverride.OverrideRule.NoService;
            routeScheduleOverride.OverrideDate = DateTime.Now.AddDays(1);
            routeScheduleOverride.StartTime    = new DateTime(1970, 1, 1, 18, 00, 00);
            routeScheduleOverride.EndTime      = new DateTime(1970, 1, 1, 22, 00, 00);
            return(View(routeScheduleOverride));
        }
        // GET: RouteScheduleOverrides/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RouteScheduleOverride routeScheduleOverride = db.RouteScheduleOverrides.Find(id);

            if (routeScheduleOverride == null)
            {
                return(HttpNotFound());
            }
            return(View(routeScheduleOverride));
        }
        public ActionResult Create([Bind(Include = "ID,NewRouteID,OverrideDate,OverrideType,OverriddenRouteID,StartTime,EndTime")] RouteScheduleOverride routeScheduleOverride)
        {
            bool ok = true;

            if (routeScheduleOverride.OverrideType != RouteScheduleOverride.OverrideRule.NoService &&
                routeScheduleOverride.NewRouteID == -1)
            {
                ModelState.AddModelError("NewRouteID", "Added or Replacement route is required");
                ok = false;
            }

            if (routeScheduleOverride.StartTime > routeScheduleOverride.EndTime)
            {
                ModelState.AddModelError("StartTime", "Start time must be before end time");
                ok = false;
            }


            if (ok && ModelState.IsValid)
            {
                routeScheduleOverride.StartTime = ExtractTimeValue(routeScheduleOverride.StartTime);
                routeScheduleOverride.EndTime   = ExtractTimeValue(routeScheduleOverride.EndTime);

                if (routeScheduleOverride.NewRouteID == -1)
                {
                    // Was cancellation case
                    routeScheduleOverride.NewRouteID = null;
                }
                if (routeScheduleOverride.OverriddenRouteID == -1)
                {
                    // No specific target route
                    routeScheduleOverride.OverriddenRouteID = null;
                }

                using (var db = new TrolleyTrackerContext())
                {
                    db.RouteScheduleOverrides.Add(routeScheduleOverride);
                    db.SaveChanges();
                    PurgeOldOverrides(db);
                }

                logger.Info($"Created special schedule ID #{routeScheduleOverride.ID} type '{routeScheduleOverride.OverrideType.ToString()}' at {routeScheduleOverride.OverrideDate} '{routeScheduleOverride.StartTime.TimeOfDay} - {routeScheduleOverride.EndTime.TimeOfDay}");

                return(RedirectToAction("Index"));
            }

            ViewBag.NewRouteID        = new SelectList(RouteSelectList(""), "ID", "ShortName", routeScheduleOverride.NewRouteID);
            ViewBag.OverriddenRouteID = new SelectList(RouteSelectList("** All **"), "ID", "ShortName", routeScheduleOverride.OverriddenRouteID);
            return(View(routeScheduleOverride));
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RouteScheduleOverride routeScheduleOverride = db.RouteScheduleOverrides.Find(id);

            if (routeScheduleOverride == null)
            {
                return(HttpNotFound());
            }

            ViewBag.NewRouteID        = new SelectList(RouteSelectList(""), "ID", "ShortName", routeScheduleOverride.NewRouteID ?? -1);
            ViewBag.OverriddenRouteID = new SelectList(RouteSelectList("** All **"), "ID", "ShortName", routeScheduleOverride.OverriddenRouteID ?? -1);

            return(View(routeScheduleOverride));
        }
Beispiel #8
0
 public RouteScheduleSummary(RouteScheduleOverride routeScheduleOverride)
 {
     this.ID = routeScheduleOverride.ID;
     if (routeScheduleOverride.NewRouteID.HasValue)
     {
         this.RouteID        = (int)routeScheduleOverride.NewRouteID;
         this.RouteLongName  = routeScheduleOverride.NewRoute.LongName;
         this.RouteShortName = routeScheduleOverride.NewRoute.ShortName;
     }
     else
     {
         this.RouteID        = (int)routeScheduleOverride.OverriddenRouteID;
         this.RouteLongName  = routeScheduleOverride.OverriddenRoute.LongName;
         this.RouteShortName = routeScheduleOverride.OverriddenRoute.ShortName;
     }
     this.DayOfWeek = daysOfWeek[(int)routeScheduleOverride.OverrideDate.DayOfWeek];
     this.StartTime = routeScheduleOverride.StartTime.ToShortTimeString();
     this.EndTime   = routeScheduleOverride.EndTime.ToShortTimeString();
 }
        public ActionResult Edit([Bind(Include = "ID,NewRouteID,OverrideDate,OverrideType,OverriddenRouteID,StartTime,EndTime")] RouteScheduleOverride routeScheduleOverride)
        {
            bool ok = true;

            if (routeScheduleOverride.OverrideType != RouteScheduleOverride.OverrideRule.NoService &&
                routeScheduleOverride.NewRouteID == -1)
            {
                ModelState.AddModelError("NewRouteID", "Added or Replacement route is required");
                ok = false;
            }

            if (routeScheduleOverride.StartTime > routeScheduleOverride.EndTime)
            {
                ModelState.AddModelError("StartTime", "Start time must be before end time");
                ok = false;
            }

            if (ok && ModelState.IsValid)
            {
                if (routeScheduleOverride.NewRouteID == -1)
                {
                    // Was cancellation case
                    routeScheduleOverride.NewRouteID = null;
                }
                if (routeScheduleOverride.OverriddenRouteID == -1)
                {
                    // No specific target route
                    routeScheduleOverride.OverriddenRouteID = null;
                }
                routeScheduleOverride.StartTime       = ExtractTimeValue(routeScheduleOverride.StartTime);
                routeScheduleOverride.EndTime         = ExtractTimeValue(routeScheduleOverride.EndTime);
                db.Entry(routeScheduleOverride).State = EntityState.Modified;
                db.SaveChanges();

                logger.Info($"Edited special schedule type '{routeScheduleOverride.OverrideType.ToString()}' at '{routeScheduleOverride.StartTime.TimeOfDay} - {routeScheduleOverride.EndTime.TimeOfDay}");

                return(RedirectToAction("Index"));
            }
            ViewBag.NewRouteID        = new SelectList(RouteSelectList(""), "ID", "ShortName", routeScheduleOverride.NewRouteID);
            ViewBag.OverriddenRouteID = new SelectList(RouteSelectList("** All **"), "ID", "ShortName", routeScheduleOverride.OverriddenRouteID);
            return(View(routeScheduleOverride));
        }
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RouteScheduleOverride routeScheduleOverride = null;

            using (var db = new TrolleyTrackerContext())
            {
                routeScheduleOverride = (from rso in db.RouteScheduleOverrides.Include(rso => rso.NewRoute).Include(rso => rso.OverriddenRoute)
                                         where rso.ID == id
                                         select rso).FirstOrDefault();
            }
            if (routeScheduleOverride == null)
            {
                return(HttpNotFound());
            }
            return(View(routeScheduleOverride));
        }
Beispiel #11
0
        private static RouteSchedule InitialSchedule(int fixedRouteStartHour, int fixedRouteEndHour,
                                                     int overrideStartHour, int overrideEndHour,
                                                     out List <RouteScheduleOverride> routeScheduleOverrides)
        {
            routeScheduleOverrides = new List <RouteScheduleOverride>();

            var schedule = new RouteSchedule();
            var route    = new Route();

            schedule.Route = route;


            schedule.StartTime = ScheduleTime(fixedRouteStartHour, 0, 0);
            schedule.EndTime   = ScheduleTime(fixedRouteEndHour, 0, 0);

            var scheduleOverride = new RouteScheduleOverride();

            scheduleOverride.OverrideType = RouteScheduleOverride.OverrideRule.NoService;  // Result will be same for either NoService or Replace
            scheduleOverride.StartTime    = ScheduleTime(overrideStartHour, 0, 0);
            scheduleOverride.EndTime      = ScheduleTime(overrideEndHour, 0, 0);
            routeScheduleOverrides.Add(scheduleOverride);

            return(schedule);
        }