Exemplo n.º 1
0
        public static void WriteToTextFile(RouteInstance route)
        {
            var routeDecos = route.Route.RouteDecos;
            //var routeName = route.Reference.Split('_')[0];

            var header = $"Route, Location Name, Location Reference, Order{Environment.NewLine}";
            var path   = $@"C:\Users\YaseenH\Desktop\Adhoc\Bidfood\{route.Reference}.csv";

            File.AppendAllText(path, header);

            foreach (var deco in routeDecos)
            {
                var routeLatitude  = deco.Deco.Location.Latitude;
                var routeLongitude = deco.Deco.Location.Longitude;

                var contents = $"{route.Reference}, {deco.Deco.DisplayName}, {deco.Deco.Id.Split('/')[1]}, {deco.Order.ToString()}{Environment.NewLine}";
                File.AppendAllText(path, contents);
            }
        }
Exemplo n.º 2
0
 public override double GetValue(RouteInstance route, Delivery delivery)
 {
     double routeCost = route.Route.CostPerCm3 * delivery.VolumeInCm3;
     routeCost += route.Route.CostPerGram * delivery.WeightInGrams;
     routeCost += outer.nodeCost[route.Route.Origin];
     return route.ArrivalTime.Ticks + (1.0 - (1.0 / routeCost));//TODO
 }
Exemplo n.º 3
0
        public async Task <ActionResult> UpdateInstance([FromBody] RouteInstanceUpdate update)
        {
            var userIdClaim = int.Parse(User.Claims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value ?? "-1");

            if (userIdClaim < 0)
            {
                return(Forbid());
            }
            var route = await _context.Routes
                        .Where(r => r.RouteId == update.RouteId && r.RouteMaps.Any(rm => rm.Map.UserId == userIdClaim))
                        .Include(r => r.RouteInstances)
                        .ThenInclude(ri => ri.RouteInstanceProperties)
                        .Include(r => r.RouteInstances)
                        .ThenInclude(ri => ri.RouteInstanceMaps)
                        .SingleOrDefaultAsync();

            if (route == null)
            {
                return(NotFound());
            }

            if (update.RouteInstanceId.HasValue)
            {
                var current = route.RouteInstances.SingleOrDefault(ri => ri.RouteInstanceId == update.RouteInstanceId);
                if (current != null)
                {
                    current.Date = update.Date;
                    var toDelete = current.RouteInstanceProperties.Where(ri => !update.RouteInstanceProperties.Any(uri => uri.RouteInstancePropertyId == ri.RouteInstancePropertyId)).ToList();
                    current.RouteInstanceProperties = current.RouteInstanceProperties.Where(ri => !toDelete.Any(dri => dri.RouteInstancePropertyId == ri.RouteInstancePropertyId)).ToList();

                    update.RouteInstanceProperties.ForEach(rip =>
                    {
                        if (rip.RouteInstancePropertyId.HasValue)
                        {
                            var currentProp   = current.RouteInstanceProperties.Single(rp => rp.RouteInstancePropertyId == rip.RouteInstancePropertyId);
                            currentProp.Key   = rip.Key;
                            currentProp.Bool  = rip.Bool;
                            currentProp.Value = rip.Value;
                        }
                        else
                        {
                            current.RouteInstanceProperties.Add(new RouteInstanceProperty
                            {
                                Key   = rip.Key,
                                Bool  = rip.Bool,
                                Value = rip.Value
                            });
                        }
                    });

                    var mapsToDelete = current.RouteInstanceMaps.Where(ri => !update.RouteInstanceMaps.Any(uri => uri.MapId == ri.MapId)).ToList();
                    current.RouteInstanceMaps = current.RouteInstanceMaps.Where(ri => !mapsToDelete.Any(dri => dri.MapId == ri.MapId)).ToList();

                    var toAdd = update.RouteInstanceMaps.Where(ri => !current.RouteInstanceMaps.Any(uri => uri.MapId == ri.MapId)).ToList();
                    toAdd.ForEach(mapToAdd => current.RouteInstanceMaps.Add(new RouteInstanceMap {
                        MapId = mapToAdd.MapId
                    }));
                }
            }
            else
            {
                var newInstance = new RouteInstance
                {
                    Date = update.Date
                };
                newInstance.RouteInstanceProperties = new List <RouteInstanceProperty>();
                update.RouteInstanceProperties.ForEach(rip =>
                {
                    newInstance.RouteInstanceProperties.Add(
                        new RouteInstanceProperty
                    {
                        Key   = rip.Key,
                        Bool  = rip.Bool,
                        Value = rip.Value
                    });
                });
                route.RouteInstances.Add(newInstance);
            }
            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemplo n.º 4
0
 public abstract double GetValue(RouteInstance route, Delivery delivery);
Exemplo n.º 5
0
 private static RouteInstanceWithActionsAndGeometry Optimise(RouteInstance instance)
 {
     var request = new OptimiseRoute(_api.Context, instance);
     var response = _api.ExecuteRequest(request);
     return response.Data;
 }