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); } }
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 }
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()); }
public abstract double GetValue(RouteInstance route, Delivery delivery);
private static RouteInstanceWithActionsAndGeometry Optimise(RouteInstance instance) { var request = new OptimiseRoute(_api.Context, instance); var response = _api.ExecuteRequest(request); return response.Data; }