public override UpdateTripStatusResponse UpdateTripStatus(UpdateTripStatusRequest r) { requests++; Gateway destPartner = GetDestinationPartner(r.clientID, r.tripID); if (destPartner != null) { Logger.AddTag("Destination partner", destPartner.name); string originClientID = r.clientID; ChangeClientIDToTripThru(r); UpdateTripStatusResponse response = destPartner.UpdateTripStatus(r); r.clientID = originClientID; if (SuccesAndTripStillActive(r, response)) { activeTrips[r.tripID].Status = r.status; if (r.status == Status.Complete) { GetTripStatusResponse resp = GetPriceAndDistanceDetailsFromClient(r); DeactivateTripAndUpdateStats(r.tripID, Status.Complete, resp.price, resp.distance); } else if (r.status == Status.Cancelled || r.status == Status.Rejected) { DeactivateTripAndUpdateStats(r.tripID, r.status); } } else { Logger.Log("Request to destination partner failed, Result=" + response.result); } return(response); } Logger.Log("Destination partner trip not found"); Logger.AddTag("ClientId", r.clientID); return(new UpdateTripStatusResponse(result: Result.NotFound)); }
public override Gateway.UpdateTripStatusResponse UpdateTripStatus(Gateway.UpdateTripStatusRequest request) { Logger.BeginRequest("UpdateTripStatus sent to " + server.name, request); UpdateTripStatusResponse response = server.UpdateTripStatus(request); Logger.EndRequest(response); return(response); }
public override Gateway.UpdateTripStatusResponse UpdateTripStatus(Gateway.UpdateTripStatusRequest request) { Logger.BeginRequest("UpdateTripStatus received from " + gateway.GetName(request.clientID), request); UpdateTripStatusResponse response = gateway.UpdateTripStatus(request); Logger.EndRequest(response); return(response); }
public override UpdateTripStatusResponse UpdateTripStatus(UpdateTripStatusRequest r) { requests++; Gateway destPartner = GetDestinationPartner(r.clientID, r.tripID); if (destPartner != null) { UpdateTripStatusResponse response = null; Logger.AddTag("Destination partner", destPartner.name); Logger.SetServicingId(destPartner.ID); if (ShouldForwardTripUpdate(r, destPartner)) { string originClientID = r.clientID; ChangeClientIDToTripThru(r); response = destPartner.UpdateTripStatus(r); r.clientID = originClientID; } else { response = new UpdateTripStatusResponse(result: Result.OK); } if (activeTrips.ContainsKey(r.tripID) && r.driverLocation != null) { if (activeTrips[r.tripID].DriverInitiaLocation == null) { activeTrips[r.tripID].DriverInitiaLocation = r.driverLocation; } switch (r.status) { case Status.Enroute: activeTrips[r.tripID].AddEnrouteLocationList(r.driverLocation); break; case Status.PickedUp: activeTrips[r.tripID].AddPickUpLocationList(r.driverLocation); break; } } if (SuccesAndTripStillActive(r, response)) { activeTrips[r.tripID].Status = r.status; switch (r.status) { case Status.PickedUp: { DateTime pickupTime = DateTime.UtcNow; TimeSpan lateness = pickupTime - (DateTime)activeTrips[r.tripID].Creation; activeTrips[r.tripID].PickupTime = pickupTime; activeTrips[r.tripID].Lateness = lateness; activeTrips[r.tripID].LatenessMilliseconds = lateness.TotalMilliseconds; break; } case Status.Complete: { GetTripStatusResponse resp = GetPriceAndDistanceDetailsFromClient(r); DeactivateTripAndUpdateStats(r.tripID, Status.Complete, resp.price, resp.distance); } break; case Status.Rejected: case Status.Cancelled: DeactivateTripAndUpdateStats(r.tripID, r.status); break; } } else { Logger.Log("Request to destination partner failed, Result=" + response.result); } return(response); } Logger.Log("Destination partner trip not found"); Logger.AddTag("ClientId", r.clientID); return(new UpdateTripStatusResponse(result: Result.NotFound)); }