public IActionResult _MergeRouteLocation(MergeRouteLocationVM mergeRouteLocationVM) { var locations = ServiceFactory.GeolocationManagement.GetLocations().Data; var routeLocations = ServiceFactory.RouteManagement.GetRouteLocations(mergeRouteLocationVM.RouteId).Data.ToList(); mergeRouteLocationVM.Locations = locations; mergeRouteLocationVM.RouteLocations = routeLocations; return(PartialView(mergeRouteLocationVM)); }
public IActionResult MergeRouteLocation(MergeRouteLocationVM mergeRouteLocationVM) { var result = new Result(); try { var routeLocations = ServiceFactory.RouteManagement.GetRouteLocations(mergeRouteLocationVM.RouteId).Data; var currentRouteLocation = routeLocations.FirstOrDefault(x => x.CurrentLocationId == mergeRouteLocationVM.RouteLocationId); var locationToAdd = new RouteLocationVM { RouteId = mergeRouteLocationVM.RouteId, CurrentLocationId = mergeRouteLocationVM.LocationToAddId }; var nextId = (int?)null; if (mergeRouteLocationVM.Mode == MergeRouteLocationMode.Append) { var previous = routeLocations.FirstOrDefault(x => x.CurrentLocationId == currentRouteLocation.PreviousLocationId); locationToAdd.PreviousLocationId = previous?.CurrentLocationId; nextId = currentRouteLocation.CurrentLocationId; } else if (mergeRouteLocationVM.Mode == MergeRouteLocationMode.Prepend) { var next = routeLocations.FirstOrDefault(x => x.PreviousLocationId == currentRouteLocation.CurrentLocationId); locationToAdd.PreviousLocationId = currentRouteLocation.CurrentLocationId; nextId = next?.CurrentLocationId; } var serviceResult = ServiceFactory.RouteManagement.MergeRouteLocation(locationToAdd, nextId); ServiceFactory.ScheduleManagement.UpdateNeedsSyncStatusByRouteId(locationToAdd.RouteId); result.Success = serviceResult.Success; result.Message = serviceResult.Message; } catch (Exception ex) { result.Success = false; } return(Json(result)); }