// Action Name: RouteStopSchedule
        // This action takes the routeStopId as the parameter
        // Based on the routeStopId, the schedule records are retrieved for the selected route
        // Offset minutes are added to the schedule's start times and thus the schedule for each stop is retrieved and displayed in the view
        public IActionResult RouteStopSchedule(int routeStopId = 0)
        {
            if (routeStopId == 0)
            {
                TempData["message"] = "Please select a stop to see the schedule";
                return(RedirectToAction("Index", "BPRouteStop"));
            }

            //var routeStops = _context.RouteStop.Where(x => x.RouteStopId == routeStopId).Include(x => x.BusRouteCode).Include(x => x.BusStopNumber);

            RouteStop routeStop = _context.RouteStop.ToList().Find(x => x.RouteStopId == routeStopId);

            if (routeStop == null)
            {
                TempData["message"] = "Sorry, no Route Stop with that id";
                return(RedirectToAction("Index", "BPRouteStop"));
            }

            Response.Cookies.Append("busStopNumber", routeStop.BusStopNumber.ToString());
            Response.Cookies.Append("busRouteCode", routeStop.BusRouteCode);
            // Response.Cookies.Append("routeName", routeStop.BusRouteCodeNavigation.RouteName);
            var routeSchedules = _context.RouteSchedule.Where(x => x.BusRouteCode == (routeStop.BusRouteCode)).OrderBy(x => x.StartTime).ToList();

            if (routeSchedules.Count() == 0)
            {
                TempData["message"] = "There is no schedule for the selected route.";
                return(RedirectToAction("Index", "GRBusStop"));
            }
            foreach (var item in routeSchedules)
            {
                item.StartTime += new TimeSpan(0, (int)routeStop.OffsetMinutes, 0);
            }

            return(View(routeSchedules));
        }
Exemple #2
0
        private (List <Service> services, List <Stop> stops, List <RouteStop> routeStops) CombineStopsAndServices(List <Service> services, List <Stop> stops)
        {
            List <RouteStop> routeStops = new List <RouteStop>();

            foreach (var service in services)
            {
                foreach (var route in service.Routes)
                {
                    route.RouteStops = new List <RouteStop>();
                    foreach (var stop in route.Points)
                    {
                        var detailedStop = stops.FirstOrDefault(x => x.StopId == stop.StopId);

                        if (detailedStop != default(Stop))
                        {
                            var routeStop = new RouteStop
                            {
                                Order = route.RouteStops.Count(),
                                Route = route,
                                Stop  = detailedStop,
                            };
                            route.RouteStops.Add(routeStop);
                        }
                    }
                }
            }

            return(services, stops, routeStops);
        }
Exemple #3
0
        private RouteStop CreateJobRouteStop(Job job, int sortOrder, int?locationId, int?minutes, int?stopActionId, long windowStart, long windowEnd, bool bSave = false)
        {
            if (job == null || job.Id == 0)
            {
                throw new Exception("Job is invalid");
            }
            var result = new RouteStop()
            {
                SubscriberId = job.SubscriberId,
                JobId        = job.Id,
                LocationId   = locationId,
                StopDelay    = minutes,
                StopActionId = stopActionId,
                SortOrder    = sortOrder,
                WindowStart  = windowStart,
                WindowEnd    = windowEnd,
            };

            if (bSave)
            {
                _routeStopService.Insert(result);

                job.RouteStops.Add(result);
                Update(job);
                job = GetByIdWithAll(job.Id);
            }
            return(result);
        }
Exemple #4
0
    private static void ExtractTimetableTimes(XmlNodeList mainNodes, List <KeyValuePair <int, int> > timetableLineOrder, List <RouteStop> timetableStops)
    {
        foreach (XmlElement vehicleTypeNode in mainNodes)
        {
            int vehicleTypeID = int.Parse(vehicleTypeNode.Attributes["id"].Value);

            foreach (XmlElement stopRef in vehicleTypeNode)
            {
                RouteStop currentRouteStop = new RouteStop();
                int       currentStopID    = int.Parse(stopRef.Attributes["id"].Value);

                currentRouteStop.PublicID = currentStopID;

                foreach (XmlElement lineRef in stopRef)
                {
                    int    lineID       = int.Parse(lineRef.Attributes["id"].Value);
                    string lineSchedule = lineRef.InnerText;

                    var currentLineSchedule = SplitTimeNode(lineSchedule, lineID);

                    currentRouteStop.LineToStopSchedule.Add(currentLineSchedule);

                    var lineIDAndVehicleType = new KeyValuePair <int, int>(lineID, vehicleTypeID);
                    if (!timetableLineOrder.Contains(lineIDAndVehicleType))
                    {
                        timetableLineOrder.Add(lineIDAndVehicleType);
                    }
                }

                timetableStops.Add(currentRouteStop);
            }
        }
    }
Exemple #5
0
        public StopConnection Create(
            RouteStop routeStop,
            Departure departure,
            StopVertex currentVertex,
            RouteStop nextRouteStop,
            StopVertex nextVertex,
            DateTime connectionStartDay,
            bool betweenTwoDays)
        {
            var endDay = connectionStartDay;

            if (betweenTwoDays)
            {
                endDay = endDay.AddDays(1);
            }
            return(new StopConnection()
            {
                Line = routeStop.Line,
                StartDateTime = connectionStartDay + departure.DepartureTime,
                SourceStop = currentVertex,
                EndDateTime = endDay + nextRouteStop
                              .Departures
                              .Where(p => p.RunIndex == departure.RunIndex)
                              .First()
                              .DepartureTime,
                DestinationStop = nextVertex,
            });
        }
        /// <summary>
        /// Gets the queue time for  the given <see cref="RouteStop"/>
        /// </summary>
        /// <param name="routeStop"></param>
        /// <param name="timeOfDay"></param>
        /// <returns></returns>
        public TimeSpan GetQueueTime(RouteStop startStop, RouteStop endStop, TimeSpan timeOfDay)
        {
            if (endStop == null)
            {
                throw new ArgumentNullException("endStop");
            }

            if (LocationQueueDelays != null)
            {
                bool shouldGetQueueTime = !(startStop != null && startStop.Location.Id == endStop.Location.Id);

                if (shouldGetQueueTime)
                {
                    var queueDelays = LocationQueueDelays.Where(p => p.LocationId == endStop.Location.Id);
                    var match       = queueDelays.FirstOrDefault(
                        p => p.DelayStartTime <= timeOfDay.Ticks && p.DelayEndTime >= timeOfDay.Ticks);
                    if (match != null)
                    {
                        endStop.QueueTime = new TimeSpan(0, match.QueueDelay, 0);
                        return(endStop.QueueTime.Value);
                    }
                }
            }

            return(TimeSpan.Zero);
        }
Exemple #7
0
        public async Task <IActionResult> Edit(int id, [Bind("RouteStopId,BusRouteCode,BusStopNumber,OffsetMinutes")] RouteStop routeStop)
        {
            if (id != routeStop.RouteStopId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(routeStop);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RouteStopExists(routeStop.RouteStopId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            ViewData["BusRouteCode"]  = new SelectList(_context.BusRoute, "BusRouteCode", "BusRouteCode", routeStop.BusRouteCode);
            ViewData["BusStopNumber"] = new SelectList(_context.BusStop, "BusStopNumber", "BusStopNumber", routeStop.BusStopNumber);
            return(View(routeStop));
        }
        public async Task <IActionResult> Edit(int id, [Bind("RouteStopID")] RouteStop routeStop, string RouteID, string StopID)
        {
            if (id != routeStop.RouteStopID)
            {
                return(NotFound());
            }

            routeStop.RouteID = _context.Routes.Where(n => n.Name == RouteID).SingleOrDefault().RouteID;
            routeStop.StopID  = _context.Stops.Where(n => n.Name == StopID).SingleOrDefault().StopID;

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(routeStop);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RouteStopExists(routeStop.RouteStopID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["RouteID"] = new SelectList(_context.Routes, "Name", "Name", RouteID);
            ViewData["StopID"]  = new SelectList(_context.Stops, "Name", "Name", StopID);
            return(View(routeStop));
        }
        private RouteStop[] GenerateRouteStop()
        {
            if (Addresses.Count > 0 || Addresses != null)
            {
                var routes = new RouteStop[Addresses.Count];

                int i = 0;
                foreach (var address in Addresses)
                {
                    var RoutePoint = new RouteService.Point
                    {
                        x = address.Point.x,
                        y = address.Point.y
                    };

                    routes[i++] = new RouteStop
                    {
                        description = address.ToString(),
                        point = RoutePoint
                    };
                }

                return routes;
            }
            else
                throw new ArgumentNullException("Adresses");
        }
Exemple #10
0
        public async Task <RouteStopForecast> GetRouteStopForecastAsync(RouteStop routeStop)
        {
            var bus13RouteStop = routeStop.VendorInfo as Bus13RouteStop;

            if (bus13RouteStop == null)
            {
                int id = 0;
                int.TryParse(routeStop.Id, out id);
                bus13RouteStop = new Bus13RouteStop {
                    Id = id, Type = "0"
                };
            }

            var request = this.GetRequestBase(RouteStopForecastResource);

            request.AddParameter("sid", bus13RouteStop.Id, ParameterType.QueryString);
            request.AddParameter("type", bus13RouteStop.Type, ParameterType.QueryString);
            request.AddParameter(InfoParam, _infoParamValue, ParameterType.QueryString);

            var client   = this.GetRestClient();
            var forecast = await this.ExecuteAsync <List <Bus13RouteStopForecastItem> >(client, request)
                           .ConfigureAwait(false);

            if (forecast != null && forecast.Any())
            {
                return(new RouteStopForecast(routeStop.Id, forecast.Select(this.ParseRouteStopForecast).ToList()));
            }

            return(new RouteStopForecast(routeStop.Id, new List <RouteStopForecastItem>()));
        }
        private RouteStop[] GenerateRouteStop()
        {
            if (Addresses.Count > 0 || Addresses != null)
            {
                var routes = new RouteStop[Addresses.Count];

                int i = 0;
                foreach (var address in Addresses)
                {
                    var RoutePoint = new RouteService.Point
                    {
                        x = address.Point.x,
                        y = address.Point.y
                    };

                    routes[i++] = new RouteStop
                    {
                        description = address.ToString(),
                        point       = RoutePoint
                    };
                }

                return(routes);
            }
            else
            {
                throw new ArgumentNullException("Adresses");
            }
        }
Exemple #12
0
        private void AddButton_Click(object sender, EventArgs e)
        {
            try
            {
                RouteStop res;
                if (Edit)
                {
                    res = Selected;
                }
                else
                {
                    res = new RouteStop();
                }

                Set(res);

                if (!Edit)
                {
                    Context.RouteStops.Add(res);
                }

                Context.SaveChanges();
                Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #13
0
 internal bool RepresentsSame(RouteStop routePoint)
 {
     if (routePoint == null || (double)this.Longitude != (double)routePoint.Longitude || (double)this.Latitude != (double)routePoint.Latitude)
     {
         return(false);
     }
     if ((routePoint.Tags != null || routePoint.Tags.Length == 0) && (this.Tags != null || this.Tags.Length == 0))
     {
         if (this.Tags.Length != routePoint.Tags.Length)
         {
             return(false);
         }
         for (int index = 0; index < this.Tags.Length; ++index)
         {
             if (this.Tags[index].Key != routePoint.Tags[index].Key || this.Tags[index].Value != routePoint.Tags[index].Value)
             {
                 return(false);
             }
         }
         return(true);
     }
     if (this.Tags == null)
     {
         return(this.Tags.Length == 0);
     }
     return(true);
 }
Exemple #14
0
        public RouteInfo GetRoute(Point origem, Point destino, TipoRota tp)
        {
            RouteStop[] a = new RouteStop[2] {
                new RouteStop {
                    description = "origem", point = origem
                },
                new RouteStop {
                    description = "destino", point = destino
                }
            };

            RouteOptions ro = new RouteOptions();

            ro.language = Language;

            //TODO: Criar enum com as possíveis opções: http://dev.maplink.com.br/webservices/rotas/#StructureVehicle
            ro.vehicle                    = new Vehicle();
            ro.vehicle.tollFeeCat         = 2;
            ro.vehicle.averageConsumption = 10;
            ro.vehicle.averageSpeed       = 60;
            ro.vehicle.tankCapacity       = 50;
            ro.vehicle.fuelPrice          = 2.60;

            //TODO: Criar as opções: http://dev.maplink.com.br/webservices/rotas/#StructureVehicle
            ro.routeDetails                 = new RouteDetails();
            ro.routeDetails.routeType       = (int)tp;
            ro.routeDetails.descriptionType = 0;

            return(_route.getRoute(a, ro, _token));
        }
Exemple #15
0
 private static void EnsureEntityIsRoutable(RouteStop entity)
 {
     if (!entity.GeoLat.HasValue || !entity.GeoLon.HasValue)
     {
         throw new RoutingEntityException("Stop missing geocoding coordinates.", entity.ID);
     }
 }
        public async Task <IActionResult> Create([Bind("RouteStopId,BusRouteCode,BusStopNumber,OffsetMinutes")] RouteStop routeStop)
        {
            RouteStop newroute = routeStop;

            //************************************************************IMPORTANT*************************************************************
            //************************************************************IMPORTANT*************************************************************
            //************************************************************IMPORTANT*************************************************************
            //You have to control the route number and  and stop number in the database to ensure you select specific one for that typical route
            //************************************************************IMPORTANT*************************************************************
            //************************************************************IMPORTANT*************************************************************
            //************************************************************IMPORTANT*************************************************************

            if (_context.RouteStop.Where(r => r.BusRouteCode == newroute.BusRouteCode).Any(r => r.BusStopNumber == newroute.BusStopNumber) || (_context.RouteStop.Where(r => r.BusStopNumber == newroute.BusStopNumber).Any(r => r.OffsetMinutes == newroute.OffsetMinutes)))
            {
                if (_context.RouteStop.Where(r => r.BusRouteCode == newroute.BusRouteCode).Any(r => r.BusStopNumber == newroute.BusStopNumber))
                {
                    TempData["Routemessage"] = "This route already exists, please select new one ";
                }
                if (_context.RouteStop.Where(r => r.BusStopNumber == newroute.BusStopNumber && r.BusRouteCode == newroute.BusRouteCode).Any(r => r.OffsetMinutes == newroute.OffsetMinutes))
                {
                    if (newroute.OffsetMinutes == 0)
                    {
                        TempData["Stopmessage"] = "there is already a Zero offset";
                    }
                    else
                    {
                        TempData["Stopmessage"] = "This offset already exists, please select new one";
                    }
                }


                return(RedirectToAction("Create", "RouteStop"));
            }
            //This allows user to specify the offsetminutes for the typical busstopnumber

            //if(_context.RouteStop.Where(r=>r.BusStopNumber==newroute.BusStopNumber).Any(r => r.OffsetMinutes==newroute.OffsetMinutes))
            //{
            //    TempData["message"] = "This offset already exists, please select new one";
            //    return RedirectToAction("Create", "RouteStop");
            //}

            if (ModelState.IsValid)
            {
                _context.Add(routeStop);
                TempData["message"] = "Stop sucessfully created";
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            //**********************************************Special Atention******************************************************************
            //****************if you want the record to be insert into correct bus route, you need to speciify the code you have selected*****
            //********************************************************************************************************************************
            ViewData["BusRouteCode"] = new SelectList(_context.BusRoute.Where(r => r.BusRouteCode == HttpContext.Session.GetString("busRouteCode")), "BusRouteCode", "BusRouteCode", routeStop.BusRouteCode);
            //ViewData["BusStopNumber"] = new SelectList(_context.BusStop, "BusStopNumber", "BusStopNumber", routeStop.BusStopNumber);
            ViewData["BusStopNumber"] = new SelectList(_context.BusStop.OrderBy(b => b.Location), "BusStopNumber", "Location", routeStop.BusStopNumber);

            ViewData["OffsetMinutes"] = new SelectList(_context.RouteStop, "OffsetMinutes", "OffsetMinutes", routeStop.OffsetMinutes);
            return(View(routeStop));
        }
Exemple #17
0
        public async Task <IActionResult> AddStop(int id)
        {
            ViewData["City"] = new SelectList(_context.Cities, "CityId", "City1");
            var obj = new RouteStop();

            obj.RouteId = id;
            return(View(obj));
        }
        public RouteStop GetNextRouteStop(RouteStop routeStop)
        {
            var lineRouteStops = routeStop.Line.RouteStops;

            return(lineRouteStops
                   .Where(p => p.StopIndex == routeStop.StopIndex + 1)
                   .FirstOrNull());
        }
Exemple #19
0
        public ActionResult DeleteConfirmed(int id)
        {
            RouteStop routeStop = db.RouteStops.Find(id);

            db.RouteStops.Remove(routeStop);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        /// <summary>
        /// Gets the approximate delay (minutes) for the given <see cref="RouteStop"/>
        /// </summary>
        /// <param name="routeStop"></param>
        /// <param name="timeOfDay"></param>
        /// <returns></returns>
        public TimeSpan GetExecutionTime(RouteStop routeStop, TimeSpan timeOfDay)
        {
            if (routeStop.ExecutionTime.HasValue)
            {
                return(routeStop.ExecutionTime.Value);
            }

            return(GetExecutionTime(routeStop.StopAction, routeStop.Location, timeOfDay));
        }
Exemple #21
0
        public async Task ChangeRouteStopOrdinal(RouteStop stop)
        {
            var rec = new RouteRecord {
                Id  = stop.RecordId,
                Ord = stop.Ordinal
            };

            await RouteTable.UpdateRecord(rec, RouteRecord.ORD);
        }
Exemple #22
0
        public async Task <IActionResult> Create([Bind("RouteStopId,BusRouteCode,BusStopNumber,OffsetMinutes")] RouteStop routeStop)
        {
            if (routeStop.OffsetMinutes < 0)
            {
                ModelState.AddModelError("", "OffsetMinutes must be 0 or greater than 0");
            }

            string busRCode = String.Empty;

            if (Request.Cookies["BusRouteCode"] != null)
            {
                busRCode = Request.Cookies["BusRouteCode"];
            }
            else if (HttpContext.Session.GetString("BusRouteCode") != null)
            {
            }
            var busRoute = _context.BusRoute.Where(a => a.BusRouteCode == busRCode).FirstOrDefault();

            ViewData["BusRCode"]   = busRoute.BusRouteCode;
            ViewData["BusRName"]   = busRoute.RouteName;
            routeStop.BusRouteCode = busRCode;

            //Check for offset 0
            if (routeStop.OffsetMinutes == 0)
            {
                var isZeroExists = _context.RouteStop.Where(a => a.OffsetMinutes == 0 && a.BusRouteCode == routeStop.BusRouteCode);
                if (isZeroExists.Any())
                {
                    ModelState.AddModelError("", "There is already record for offset minute 0");
                }
            }
            var isDuplicate = _context.RouteStop.Where(a => a.BusRouteCode == routeStop.BusRouteCode && a.BusStopNumber == routeStop.BusStopNumber);

            if (isDuplicate.Any())
            {
                ModelState.AddModelError("", "Duplicate Record");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Add(routeStop);
                    await _context.SaveChangesAsync();

                    TempData["message"] = "New Route Stop Added";
                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.GetBaseException().Message);
                }
            }
            ViewData["BusRouteCode"]  = new SelectList(_context.BusRoute, "BusRouteCode", "BusRouteCode", routeStop.BusRouteCode);
            ViewData["BusStopNumber"] = new SelectList(_context.BusStop.OrderBy(a => a.Location), "BusStopNumber", "Location", routeStop.BusStopNumber);
            return(View(routeStop));
        }
Exemple #23
0
        /// <summary>
        /// Gets the approximate delay (minutes) for the given <see cref="RouteStop"/>
        /// </summary>
        /// <param name="routeStop"></param>
        /// <returns></returns>
        public TimeSpan GetDelay(RouteStop routeStop)
        {
            if (routeStop.StopDelay.HasValue)
            {
                return(routeStop.StopDelay.Value);
            }

            return(GetDelay(routeStop.StopAction, routeStop.Location));
        }
Exemple #24
0
        public void PrepareJob(Job job)
        {
            RouteStop previousStop = null;

            foreach (var routeStop in job.RouteStops)
            {
                PrepareRouteStop(routeStop, previousStop, job.EquipmentConfiguration, job);
                previousStop = routeStop;
            }
        }
Exemple #25
0
 public ActionResult DeleteConfirmed(int id)
 {
     using (var db = new TrolleyTrackerContext())
     {
         RouteStop routeStop = db.RouteStops.Find(id);
         db.RouteStops.Remove(routeStop);
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
 }
Exemple #26
0
        public JsonResult GetInfoMapLink(MapLinkConsulta dados)
        {
            try
            {
                const string token = "c13iyCvmcC9mzwkLd0LCbmYC5mUF5m2jNGNtNGt6NmK6NJK=";

                var originRoute = new RouteStop
                {
                    description = "",
                    point = new Point { x = Convert.ToDouble(dados.origem.longitude,cult) , y = Convert.ToDouble(dados.origem.latitude, cult) }
                };

                var destinationRoute = new RouteStop
                {
                    description = "",
                    point = new Point { x = Convert.ToDouble(dados.destino.longitude,cult), y = Convert.ToDouble(dados.destino.latitude,cult) }
                };

                var routes = new[] { originRoute, destinationRoute };

                var routeOptions = new RouteOptions
                {
                    language = "portugues",
                    routeDetails = new RouteDetails { descriptionType = 0, routeType = 1, optimizeRoute = true },
                    vehicle = new Vehicle
                    {
                        tankCapacity = 20,
                        averageConsumption = 9,
                        fuelPrice = 3,
                        averageSpeed = 60,
                        tollFeeCat = 2
                    }
                };

                using (var routeSoapClient = new RouteSoapClient())
                {
                    var getRouteTotalsResponse = routeSoapClient.getRouteTotals(routes, routeOptions, token);

                    var resultado = new
                    {
                        consumo = getRouteTotalsResponse.totalFuelUsed.ToString(cult),
                        distancia = getRouteTotalsResponse.totalDistance.ToString(cult),
                        tempototal = getRouteTotalsResponse.totalTime.ToString(cult)
                    };
                    return Json(resultado, JsonRequestBehavior.AllowGet);
                }

                return null;

            }
            catch (Exception ex)
            {
                return null;
            }
        }
        public async Task <IActionResult> Create([Bind("RouteStopId,BusRouteCode,BusStopNumber,OffsetMinutes")] RouteStop routeStop)
        {
            if (ModelState.IsValid)
            {
                _context.Add(routeStop);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(await Create(Request.Cookies[cookieBusRouteCode]));
        }
Exemple #28
0
        private static RouteStop ReadStopStartLine(string line)
        {
            CheckNullLine(line, "route start line");
            LoggedException.RaiseIf(line[0] != '>' || line[8] != ',' || line.Length != 13, nameof(PASReader), "Invalid route start format");

            RouteStop result = new RouteStop {
                Id = line.Substring(1, 6)
            };

            result.SetLeaveFromString(line.Substring(9, 4));
            return(result);
        }
Exemple #29
0
        public static string GetFullName(RouteStop routeStop)
        {
            var res = routeStop.Stop.Name;
            var cur = routeStop.Prev;

            while (cur != null)
            {
                res = cur.Stop.Name + Separator + res;
                cur = cur.Prev;
            }
            return(res);
        }
Exemple #30
0
 public ActionResult Edit([Bind(Include = "ID,RouteID,StopID,StopSequence")] RouteStop routeStop)
 {
     if (ModelState.IsValid)
     {
         db.Entry(routeStop).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.RouteID = new SelectList(db.Routes, "ID", "ShortName", routeStop.RouteID);
     ViewBag.StopID  = new SelectList(db.Stops, "ID", "Name", routeStop.StopID);
     return(View(routeStop));
 }
        public IList <RouteStop> GetByBusStop(int busStopId, int numberOfTimes)
        {
            if (busStopId > 0 && busStopId <= 10)
            {
                var stop = new BusStopData
                {
                    Id         = busStopId,
                    Name       = $"Bus Stop {busStopId}",
                    RouteStops = new List <RouteStop>()
                };

                for (var routeId = 1; routeId <= 3; routeId++)
                {
                    var routeStop = new RouteStop
                    {
                        BusStopId = busStopId,
                        BusStop   = stop,
                        RouteId   = routeId,
                        Route     = new Route
                        {
                            Id         = routeId,
                            Name       = $"Route {routeId}",
                            RouteStops = stop.RouteStops
                        },
                        ArrivalTimes = new List <DateTime>()
                    };

                    // Each route starts running 2 minutes after the previous one
                    var timeOffset = (routeStop.RouteId - 1) * 2;
                    // Each stop is 2 minutes away from the previous one
                    timeOffset += (routeStop.BusStopId - 1) * 2;
                    // Each stop is serviced every 15 minutes per route
                    timeOffset = timeOffset % 15;
                    var nearestMultiple = this.FindNearestMultipleOfFifteen();
                    var nextStop        = this.FindNearestTimeWithOffset(nearestMultiple, timeOffset);

                    for (var num = 0; num < numberOfTimes; num++)
                    {
                        routeStop.ArrivalTimes.Add(nextStop);
                        nextStop = nextStop.AddMinutes(15);
                    }

                    stop.RouteStops.Add(routeStop);
                }

                return(stop.RouteStops);
            }
            else
            {
                return(new List <RouteStop>());
            }
        }
        public async Task <IActionResult> Create([Bind("RouteStopId,BusRouteCode,BusStopNumber,OffsetMinutes")] RouteStop routeStop)
        {
            if (ModelState.IsValid)
            {
                _context.Add(routeStop);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["BusRouteCode"]  = new SelectList(_context.BusRoute, "BusRouteCode", "BusRouteCode", routeStop.BusRouteCode);
            ViewData["BusStopNumber"] = new SelectList(_context.BusStop, "BusStopNumber", "BusStopNumber", routeStop.BusStopNumber);
            return(View(routeStop));
        }
 public RouteTotals Calculate(RouteStop[] routes, int routeType)
 {
     this.ErrorMessage = String.Empty;
     try
     {
         using (var routeSoapClient = new RouteSoapClient())
         {
             var getRouteTotalsResponse = routeSoapClient
                 .getRouteTotals(routes, this.DefaultRouteOptions(routeType), this.Token);
             return getRouteTotalsResponse;
         }
     }
     catch (System.ServiceModel.FaultException e)
     {
         this.ErrorMessage = e.Message;
         return null;
     }
 }
Exemple #34
0
        public ActionResult Index(HttpPostedFileBase file)
        {
            MapLinkArquivoOutput resultado = new MapLinkArquivoOutput();

            // Verify that the user selected a file
            if (file != null && file.ContentLength > 0)
            {
                resultado.itens = new List<MapLinkOutputItem>();

                StreamReader stream = new StreamReader(file.InputStream);
                string conteudo = stream.ReadToEnd();
                List<MapLinkFileInput> input = DecodeMapLinkInputFile(conteudo);

                const string token = "c13iyCvmcC9mzwkLd0LCbmYC5mUF5m2jNGNtNGt6NmK6NJK=";

                foreach(var item in input){
                    var originRoute = new RouteStop
                    {
                        description = "",
                        point = new Point { x = Convert.ToDouble(item.originCoordinate.longitude,cult) , y = Convert.ToDouble(item.originCoordinate.latitude, cult) }
                    };

                    var destinationRoute = new RouteStop
                    {
                        description = "",
                        point = new Point { x = Convert.ToDouble(item.destinationCoordinate.longitude,cult), y = Convert.ToDouble(item.destinationCoordinate.latitude,cult) }
                    };

                    var routes = new[] { originRoute, destinationRoute };

                    var routeOptions = new RouteOptions
                    {
                        language = "portugues",
                        routeDetails = new RouteDetails { descriptionType = 0, routeType = 1, optimizeRoute = true },
                        vehicle = new Vehicle
                        {
                            tankCapacity = 20,
                            averageConsumption = 9,
                            fuelPrice = 3,
                            averageSpeed = 60,
                            tollFeeCat = 2
                        }
                    };

                    using (var routeSoapClient = new RouteSoapClient())
                    {
                        var getRouteTotalsResponse = routeSoapClient.getRouteTotals(routes, routeOptions, token);

                        resultado.itens.Add(new MapLinkOutputItem(){
                             id=item.id,
                             consumo=getRouteTotalsResponse.totalFuelUsed.ToString(cult),
                             distancia=getRouteTotalsResponse.totalDistance.ToString(cult),
                             tempototal=getRouteTotalsResponse.totalTime.ToString(cult)
                        });
                    }
                }
            }
            // redirect back to the index action to show the form once again
            return View("Index",resultado);
        }