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)); }
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)); }
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); }