public int InsertVehicleRoute(VehicleRoute vehicleRoute) { using (var connection = OpenConnection()) { return(connection.QuerySingleOrDefault <int>(INSERT_VEHICLE_ROUTE, vehicleRoute)); } }
public TransfersPerStationCont GetRouteTransfersPerStation(bool skipForOnlyOneVehicle = true) { if (!HasValidData || VehicleSchedule.Vehicle.Route != null) { TransfersPerStationCont totalTransfers = new TransfersPerStationCont(); VehicleRoute route = VehicleSchedule.Vehicle.Route; if (skipForOnlyOneVehicle && route.Vehicles.Count == 1) { return(null); } foreach (Vehicle vehicle in route.Vehicles.ToArray()) { if (vehicle.IsEnabled) { VehicleScheduleData vehicleData = VehicleScheduleDataManager.Current[vehicle]; float?mult; if (vehicleData == null || !vehicleData.Capacity.HasValidData || (mult = vehicleData.ScheduleMonthlyMultiplier) == null) { return(null); } totalTransfers.Add(vehicleData.Capacity.GetTransfersPerStation(), mult, vehicleData.ScheduleAvereageDuration.Estimated); } } return(totalTransfers.AsReadonly()); } return(null); }
public IReadOnlyDictionary <Item, TransferData> GetRouteTotalTransfers(bool skipForOnlyOneVehicle = true) { if (!HasValidData || VehicleSchedule.Vehicle.Route != null) { TaskTransfers totalTransfers = new TaskTransfers(); VehicleRoute route = VehicleSchedule.Vehicle.Route; if (skipForOnlyOneVehicle && route.Vehicles.Count == 1) { return(null); } foreach (Vehicle vehicle in route.Vehicles.ToArray()) { if (vehicle.IsEnabled) { VehicleScheduleData vehicleData = VehicleScheduleDataManager.Current[vehicle]; float?mult; if (vehicleData == null || !vehicleData.Capacity.HasValidData || (mult = vehicleData.ScheduleMonthlyMultiplier) == null) { return(null); } totalTransfers.Add(vehicleData.Capacity.TotalTransfers, mult, vehicleData.ScheduleAvereageDuration.Estimated); } } return(totalTransfers.Transfers); } return(null); }
private void OnRemoveRoute(VehicleRoute route) { if (_cache.TryGetValue(route, out CacheData routeData)) { routeData.OnRouteDataRemove(); _cache.Remove(route); } }
public ActionResult DeleteConfirmed(int id) { VehicleRoute vehicleRoute = db.VehicleRoutes.Find(id); db.VehicleRoutes.Remove(vehicleRoute); db.SaveChanges(); return(RedirectToAction("Index")); }
private void OnVehicleRouteChanged(Vehicle vehicle, VehicleRoute oldRoute, VehicleRoute newRoute) { if (newRoute != null && oldRoute != newRoute && newRoute.Vehicles.Count > 1) { VehicleScheduleData vehicleData = ReplaceVehicleScheduleDataFromRouteCopy(vehicle); vehicleData.CallDataChangedEventsForRoute(null); } }
private CacheData GetOrCreateCacheData(VehicleRoute route) { if (!_cache.TryGetValue(route, out CacheData result)) { result = new CacheData(route); _cache.Add(route, result); } return(result); }
private void PostProcessWithMinimumPathAlgorithm(Depot depot, VehicleRoute vehicleRoute, CeplexParameters ceplexParameters, List <Address> addresses) { vehicleRoute.SubRoutes = new List <SubRoute>(); int i = 0; int indexOrigin = 0; int indexDestiny = 0; List <int> indexesAlreadyVisited = new List <int>(); indexesAlreadyVisited.Add(0); while (i <= ceplexParameters.QuantityOfClients) { if (i == 0) { var subRoute = new SubRoute(); subRoute.AddressOriginId = depot.Address.AddressId; indexDestiny = GetIndexNearestAddress(i, ceplexParameters, addresses, indexesAlreadyVisited); var addressDestiny = addresses.FirstOrDefault(a => a.indexVRPDistanceMatrix == indexDestiny); subRoute.AddressDestinyId = addressDestiny.AddressId; subRoute.Distance = ceplexParameters.Distance[0][addressDestiny.indexVRPDistanceMatrix]; subRoute.Duration = ceplexParameters.Duration[0][addressDestiny.indexVRPDistanceMatrix].ConvertMinutesToDateTime(); subRoute.AddressOrigin = depot.Address; subRoute.AddressDestiny = addressDestiny; vehicleRoute.SubRoutes.Add(subRoute); } else if (i == ceplexParameters.QuantityOfClients) { var subRoute = new SubRoute(); var addressOrigin = addresses.FirstOrDefault(a => a.indexVRPDistanceMatrix == indexOrigin); subRoute.AddressOriginId = addressOrigin.AddressId; subRoute.AddressDestinyId = depot.Address.AddressId; subRoute.Distance = ceplexParameters.Distance[indexOrigin][0]; subRoute.Duration = ceplexParameters.Duration[indexOrigin][0].ConvertMinutesToDateTime(); subRoute.AddressOrigin = addressOrigin; subRoute.AddressDestiny = depot.Address; vehicleRoute.SubRoutes.Add(subRoute); } else { var subRoute = new SubRoute(); var addressOrigin = addresses.FirstOrDefault(a => a.indexVRPDistanceMatrix == indexOrigin); subRoute.AddressOriginId = addressOrigin.AddressId; indexDestiny = GetIndexNearestAddress(indexOrigin, ceplexParameters, addresses, indexesAlreadyVisited); var addressDestiny = addresses.FirstOrDefault(a => a.indexVRPDistanceMatrix == indexDestiny); subRoute.AddressDestinyId = addressDestiny.AddressId; subRoute.Distance = ceplexParameters.Distance[indexOrigin][addressDestiny.indexVRPDistanceMatrix]; subRoute.Duration = ceplexParameters.Duration[indexOrigin][addressDestiny.indexVRPDistanceMatrix].ConvertMinutesToDateTime(); subRoute.AddressOrigin = addressOrigin; subRoute.AddressDestiny = addressDestiny; vehicleRoute.SubRoutes.Add(subRoute); } indexesAlreadyVisited.Add(indexDestiny); indexOrigin = indexDestiny; i++; } }
public void GetOptimalSequenceOfClientsToVisit(Depot depot, VehicleRoute vehicleRoute, int[][] routeMatrix, CeplexParameters ceplexParameters, List <Address> addresses) { vehicleRoute.SubRoutes = new List <SubRoute>(); int sequenceNumber = 1; for (int j = 0; j <= ceplexParameters.QuantityOfClients; j++) { for (int i = 0; i <= ceplexParameters.QuantityOfClients; i++) { if (routeMatrix[j][i] == 1 && j != i && j == 0) { var subRoute = new SubRoute(); subRoute.AddressOriginId = depot.Address.AddressId; var addressDestiny = addresses.FirstOrDefault(a => a.indexVRPDistanceMatrix == i); subRoute.AddressDestinyId = addressDestiny.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = depot.Address; subRoute.AddressDestiny = addressDestiny; subRoute.SequenceNumber = sequenceNumber; sequenceNumber++; vehicleRoute.SubRoutes.Add(subRoute); } else if (routeMatrix[j][i] == 1 && j != i && j > 0 && i != 0) { var subRoute = new SubRoute(); var addressOrigin = addresses.FirstOrDefault(c => c.indexVRPDistanceMatrix == j); subRoute.AddressOriginId = addressOrigin.AddressId; var addressDestiny = addresses.FirstOrDefault(c => c.indexVRPDistanceMatrix == i); subRoute.AddressDestinyId = addressDestiny.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = addressOrigin; subRoute.AddressDestiny = addressDestiny; subRoute.SequenceNumber = sequenceNumber; sequenceNumber++; vehicleRoute.SubRoutes.Add(subRoute); } else if (routeMatrix[j][i] == 1 && j != i && j > 0 && i == 0) { var subRoute = new SubRoute(); var addressOrigin = addresses.FirstOrDefault(c => c.indexVRPDistanceMatrix == j); subRoute.AddressOriginId = addressOrigin.AddressId; subRoute.AddressDestinyId = depot.Address.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = addressOrigin; subRoute.AddressDestiny = depot.Address; subRoute.SequenceNumber = sequenceNumber; sequenceNumber++; vehicleRoute.SubRoutes.Add(subRoute); } } } }
private List <Address> GetAddressesOfVehicleRoute(VehicleRoute vehicleRoute) { List <Address> addresses = new List <Address>(); for (int i = 0; i < vehicleRoute.SubRoutes.Count; i++) { addresses.Add(vehicleRoute.SubRoutes[i].AddressOrigin); } return(addresses); }
public CacheData(VehicleRoute route) { VehicleScheduleDataManager manager = Manager <VehicleScheduleDataManager> .Current; this.route = route; foreach (Vehicle vehicle in route.Vehicles.ToArray()) { manager.GetOrCreateVehicleScheduleData(vehicle).SubscribeOwnDataChanged(OnVehicleDataChanged); } }
private CacheData this[VehicleRoute route] { get { if (_cache.TryGetValue(route, out CacheData result)) { return(result); } return(null); } }
public ActionResult Edit([Bind(Include = "id,StartLocation,DestinationLocation,userid")] VehicleRoute vehicleRoute) { if (ModelState.IsValid) { vehicleRoute.userid = User.Identity.GetUserId(); db.Entry(vehicleRoute).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } //ViewBag.userid = new SelectList(db.AspNetUsers, "Id", "Email", vehicleRoute.userid); return(View(vehicleRoute)); }
public static VehicleRouteDto CreateDto(this VehicleRoute entity) { return(new VehicleRouteDto() { vehicleRouteId = entity.VehicleRouteId, dateCreation = entity.DateCreation, dateScheduled = entity.DateScheduled, departureTime = entity.DepartureTime, estimatedTimeReturn = entity.EstimatedTimeReturn, vehicleId = entity.VehicleId, depot = entity.Depot.CreateDto(), subRoutes = entity.SubRoutes.CreateDto() }); }
// GET: VehicleRoutes/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } VehicleRoute vehicleRoute = db.VehicleRoutes.Find(id); if (vehicleRoute == null) { return(HttpNotFound()); } return(View(vehicleRoute)); }
public void OnRouteRemovedFromVehicle(Vehicle vehicle, VehicleRoute oldRoute) { MarkDirty(); VehicleScheduleData data = Manager <VehicleScheduleDataManager> .Current[vehicle]; if (data != null) { data.UnsubscribeOwnDataChanged(OnVehicleDataChanged); if (oldRoute.Vehicles.Count > 0) { data = Manager <VehicleScheduleDataManager> .Current[oldRoute.Vehicles[0]]; data.CallDataChangedEventsForRoute(null); } } }
private void OnVehicleRouteChange(Vehicle vehicle, VehicleRoute oldRoute, VehicleRoute newRoute) { if (oldRoute != null && _cache.TryGetValue(oldRoute, out CacheData oldData)) { oldData.OnRouteRemovedFromVehicle(vehicle, oldRoute); } if (newRoute != null && _cache.TryGetValue(newRoute, out CacheData newData)) { newData.OnRouteAddedToVehicle(vehicle); } if (oldRoute?.Vehicles.Count == 0) { OnRemoveRoute(oldRoute); } }
// GET: VehicleRoutes/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } VehicleRoute vehicleRoute = db.VehicleRoutes.Find(id); if (vehicleRoute == null) { return(HttpNotFound()); } //ViewBag.userid = new SelectList(db.AspNetUsers, "Id", "Email", vehicleRoute.userid); return(View(vehicleRoute)); }
private void FindSequenceNumberOfSubRoutes(VehicleRoute vehicleRoute, Depot depot) { int indexOfDepot = vehicleRoute.SubRoutes.FindIndex(s => s.AddressOriginId == depot.Address.AddressId); vehicleRoute.SubRoutes[indexOfDepot].SequenceNumber = 1; int addressIdPreviousDestiny = vehicleRoute.SubRoutes[indexOfDepot].AddressDestinyId; int nextSequenceNumber = 2; while (nextSequenceNumber <= vehicleRoute.SubRoutes.Count) { var nextIndex = vehicleRoute.SubRoutes.FindIndex(s => s.AddressOriginId == addressIdPreviousDestiny); vehicleRoute.SubRoutes[nextIndex].SequenceNumber = nextSequenceNumber; addressIdPreviousDestiny = vehicleRoute.SubRoutes[nextIndex].AddressDestinyId; nextSequenceNumber++; } }
//called only when route has more than one vehicle public void CallDataChangedEventsForRoute(RootTask task) { VehicleRoute route = Vehicle.Route; if (route?.Vehicles.Count > 1) { int?taskIndex = task?.GetIndex(); VehicleScheduleDataManager manager = Manager <VehicleScheduleDataManager> .Current; foreach (Vehicle vehicle in route.Vehicles.ToArray()) { RootTask localTask = taskIndex != null?vehicle.Schedule.GetTasks()[taskIndex.Value] : null; manager[vehicle]?.CallDataChangedEvents(localTask); } } }
public ResultModel Start(VehicleRoute vehicleRoute) { Vehicle vehicle = vehicleRoute.Vehicle; foreach (char command in vehicleRoute.Commands) { switch (command) { case (char)Commands.Move: vehicle.Coordination = MoveForward(vehicle); break; case (char)Commands.Right: vehicle.Direction = TurnRight(vehicle.Direction); break; case (char)Commands.Left: vehicle.Direction = TurnLeft(vehicle.Direction); break; default: //Do nothing. I believe it is just better than throw exception if it is wrong type of command. break; } } ResultModel result = new ResultModel(); if (vehicle.Coordination.Xaxis <= vehicle.Coordination.MapRange[0, 0] && vehicle.Coordination.Xaxis > 0 && vehicle.Coordination.Yaxis <= vehicle.Coordination.MapRange[0, 1] && vehicle.Coordination.Yaxis > 0) { result.Type = ResultTypes.Success; result.Message = string.Format("{0} : {1}", Helper.GetMessage(SuccessMessages.EverythingsOkay), string.Format("{0} {1} {2}", vehicle.Coordination.Xaxis, vehicle.Coordination.Yaxis, (char)vehicle.Direction)); } else { result.Type = ResultTypes.Fail; result.Message = Helper.GetMessage(FailMessages.VehicleWentOffRoute); } return(result); }
public IReadOnlyDictionary <Item, TransferData> GetRouteTaskTransfers(RootTask task, bool skipForOnlyOneVehicle = true) { if (task == null) { throw new ArgumentNullException("task"); } if (!HasValidData || VehicleSchedule.Vehicle.Route != null) { TaskTransfers routeTransfers = new TaskTransfers(); VehicleRoute route = VehicleSchedule.Vehicle.Route; if (skipForOnlyOneVehicle && route.Vehicles.Count == 1) { return(null); } int taskIndex = task.GetIndex(); foreach (Vehicle vehicle in route.Vehicles.ToArray()) { if (vehicle.IsEnabled) { VehicleScheduleData vehicleData = VehicleScheduleDataManager.Current[vehicle]; float?mult; if (vehicleData == null || !vehicleData.Capacity.HasValidData || (mult = vehicleData.ScheduleMonthlyMultiplier) == null) { return(null); } IReadOnlyDictionary <Item, TransferData> transfers = vehicleData.Capacity.GetTransfers(vehicle.Schedule.GetTasks()[taskIndex]); if (transfers != null) { routeTransfers.Add(transfers, mult, vehicleData.ScheduleAvereageDuration.Estimated); } else { return(null); } } } return(routeTransfers.Transfers); } return(null); }
private void OnDataChanged(RootTask task, bool notifyRoute = true) { MarkDirty(); if (NotificationsTurnedOff) { _notificationPending = true; return; } _notificationPending = false; ownDataChanged?.Invoke(this); VehicleRoute route = Vehicle.Route; if (notifyRoute && route?.Vehicles.Count > 1) { CallDataChangedEventsForRoute(task); } else { CallDataChangedEvents(task); } }
static private void Vehicle_SetRouteInternal_prf(Vehicle __instance, VehicleRoute route, out VehicleRoute __state) { __state = __instance.Route; }
public IReadOnlyDictionary <Item, TransferData> GetRouteTaskTransfers(VehicleRoute route, RootTask task) { return(GetOrCreateCacheData(route).GetTransfers(task)); }
private CeplexParameters GetCeplexParametersVehicleRoutingProblem(Depot depot, VehicleRoute vehicleRoute) { var ceplexParametersVRP = new CeplexParameters(); ceplexParametersVRP.QuantityOfClients = vehicleRoute.SubRoutes.Count - 1; ceplexParametersVRP.ClientsDemand = new double[ceplexParametersVRP.QuantityOfClients]; for (int i = 0; i < ceplexParametersVRP.QuantityOfClients; i++) { ceplexParametersVRP.ClientsDemand[i] = vehicleRoute.SubRoutes[(i + 1)].DemandOrigin; } ceplexParametersVRP.Distance = new double[vehicleRoute.SubRoutes.Count][]; ceplexParametersVRP.Duration = new long[vehicleRoute.SubRoutes.Count][]; vehicleRoute.SubRoutes = vehicleRoute.SubRoutes.OrderBy(s => s.SequenceNumber).ToList(); for (int i = 0; i < vehicleRoute.SubRoutes.Count; i++) { ceplexParametersVRP.Distance[i] = new double[vehicleRoute.SubRoutes.Count]; ceplexParametersVRP.Duration[i] = new long[vehicleRoute.SubRoutes.Count]; for (int j = 0; j < vehicleRoute.SubRoutes.Count; j++) { vehicleRoute.SubRoutes[i].AddressOrigin.indexVRPDistanceMatrix = i; if (i == 0 && i != j) { var tupleDistanceDuration = _googleMapsRepository.GetDistanceBetweenTwoAddressesWithCache(depot.Address, vehicleRoute.SubRoutes[j].AddressOrigin); ceplexParametersVRP.Distance[i][j] = tupleDistanceDuration.Item1.Value; ceplexParametersVRP.Duration[i][j] = tupleDistanceDuration.Item2; } else if (i != 0 && i < j && i != j) { var tupleDistanceDuration = _googleMapsRepository.GetDistanceBetweenTwoAddressesWithCache( vehicleRoute.SubRoutes[i].AddressOrigin, vehicleRoute.SubRoutes[j].AddressDestiny); ceplexParametersVRP.Distance[i][j] = tupleDistanceDuration.Item1.Value; ceplexParametersVRP.Duration[i][j] = tupleDistanceDuration.Item2; } else if (i != 0 && i > j && i != j) { ceplexParametersVRP.Distance[i][j] = ceplexParametersVRP.Distance[j][i]; ceplexParametersVRP.Duration[i][j] = ceplexParametersVRP.Duration[j][i]; } else { ceplexParametersVRP.Distance[i][j] = 0; ceplexParametersVRP.Duration[i][j] = 0; } } } return(ceplexParametersVRP); }
public TransfersPerStationCont GetRouteTransfersPerStation(VehicleRoute route) { return(GetOrCreateCacheData(route).TransfersPerStation); }
static private void Vehicle_SetRouteInternal_pof(Vehicle __instance, VehicleRoute route, VehicleRoute __state) { Current.OnVehicleRouteChanged(__instance, __state, route); }
private List <VehicleRoute> GetRoutesFindedMultipleVehicleRouteProblem(Depot depot, List <DeliveryTruckTrip> fractionedScheduledTrips, CeplexParameters ceplexParameters, int[][][] routeMatrix) { var routes = new List <VehicleRoute>(); for (int k = 0; k < ceplexParameters.QuantityOfVehiclesAvailable; k++) { var route = new VehicleRoute(); route.DepotId = depot.DepotId; route.DateCreation = DateTime.Now.Date; route.DateScheduled = DateTime.Now.Date; for (int j = 0; j <= ceplexParameters.QuantityOfClients; j++) { for (int i = 0; i <= ceplexParameters.QuantityOfClients; i++) { if (routeMatrix[k][j][i] == 1 && j != i && j == 0) { var subRoute = new SubRoute(); subRoute.AddressOriginId = depot.Address.AddressId; subRoute.DemandOrigin = 0; var clientDestiny = fractionedScheduledTrips.FirstOrDefault(c => c.ColumnIndex == i); subRoute.DemandDestiny = clientDestiny.QuantityProduct; subRoute.AddressDestinyId = clientDestiny.Address.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = depot.Address; subRoute.AddressDestiny = clientDestiny.Address; route.SubRoutes.Add(subRoute); } else if (routeMatrix[k][j][i] == 1 && j != i && j > 0 && i != 0) { var subRoute = new SubRoute(); var clientOrigin = fractionedScheduledTrips.FirstOrDefault(c => c.ColumnIndex == j); subRoute.DemandOrigin = clientOrigin.QuantityProduct; subRoute.AddressOriginId = clientOrigin.Address.AddressId; var clientDestiny = fractionedScheduledTrips.FirstOrDefault(c => c.ColumnIndex == i); subRoute.DemandDestiny = clientDestiny.QuantityProduct; subRoute.AddressDestinyId = clientDestiny.Address.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = clientOrigin.Address; subRoute.AddressDestiny = clientDestiny.Address; route.SubRoutes.Add(subRoute); } else if (routeMatrix[k][j][i] == 1 && j != i && j > 0 && i == 0) { var subRoute = new SubRoute(); var clientOrigin = fractionedScheduledTrips.FirstOrDefault(c => c.ColumnIndex == j); subRoute.DemandOrigin = clientOrigin.QuantityProduct; subRoute.AddressOriginId = clientOrigin.Address.AddressId; subRoute.DemandDestiny = 0; subRoute.AddressDestinyId = depot.Address.AddressId; subRoute.Distance = ceplexParameters.Distance[j][i]; subRoute.Duration = ceplexParameters.Duration[j][i].ConvertMinutesToDateTime(); subRoute.AddressOrigin = clientOrigin.Address; subRoute.AddressDestiny = depot.Address; route.SubRoutes.Add(subRoute); } } } if (route.SubRoutes.Count > 0) { routes.Add(route); } } return(routes); }
private void OnVehicleRouteChanged(Vehicle vehicle, VehicleRoute oldRoute, VehicleRoute newRoute) { VehicleRouteChanged?.Invoke(vehicle, oldRoute, newRoute); }
public bool SaveVehicleRoute(Ride.Business.Objects.Employee employee, Ride.Business.Objects.Vehicles.Vehicle vehicle, Ride.Business.Objects.Routes.Route route) { try { using (RideWCFServiceImplementation client = GetSyncClient()) { VehicleRoute request = new VehicleRoute(); SaveResponse response = null; string gpsGateUser = string.Empty; request.UniqueID = Guid.NewGuid().ToString(); request.VehicleID = vehicle.VehicleID; request.VehicleIDSpecified = true; if (employee == null) request.PersonID = 0; else request.PersonID = employee.PersonID; request.PersonIDSpecified = true; if (route == null) request.RouteID = 0; else request.RouteID = route.RouteID; request.RouteIDSpecified = true; //Only get the GPS Gate User if it is required. Otherwise, just move the vehicle/route... if (Config.AppSettings.Ref.ProgramSettings.RequireGPSGateForVehicleRoute) { gpsGateUser = Config.AppSettings.Ref.GetGPSGateUser(); //If we don't have a GPS Gate User, then exit out because we dont have a user to update with if (string.IsNullOrEmpty(gpsGateUser)) return false; request.GpsGateUserName = gpsGateUser; response = client.SaveVehicleRoute(_rideCredential, request); } else { response = client.MoveVehicleToRouteWithoutGPSGateUser(_rideCredential, request); } if (response == null) return false; return response.Success; } } catch (System.Net.WebException ex) { Console.Write(ex.Message); return false; } catch (Exception ex) { throw ex; } }