public override GetTripStatusResponse GetTripStatus(GetTripStatusRequest r) { requests++; Gateway partner = GetDestinationPartner(r.clientID, r.tripID); if (partner != null) { Logger.AddTag("Destination_partner", partner.name); r.clientID = ID; GetTripStatusResponse response = partner.GetTripStatus(r); if (response.result == Result.OK) { if (TripHasNonActiveStatus(response)) { DeactivateTripAndUpdateStats(r.tripID, (Status)response.status, response.price, response.distance); } else { UpdateActiveTripWithNewTripStatus(r, response); } MakeGetTripStatusResponse(r, partner, response); } 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 GetTripStatusResponse(result: Result.NotFound)); }
private void MakeGetTripStatusResponse(GetTripStatusRequest r, Gateway partner, GetTripStatusResponse response) { Logger.AddTag("Passenger", response.passengerName); Logger.AddTag("Pickup time", response.pickupTime.ToString()); Logger.AddTag("Pickup location", response.pickupLocation.ToString()); Logger.AddTag("Dropoff location", response.dropoffLocation.ToString()); Logger.AddTag("Status", response.status.ToString()); Logger.AddTag("ETA", response.ETA.ToString()); response.partnerID = partner.ID; response.partnerName = partner.name; response.originatingPartnerName = partners[originatingPartnerByTrip[r.tripID]].name; response.servicingPartnerName = partners[servicingPartnerByTrip[r.tripID]].name; Logger.AddTag("Originating partner", response.originatingPartnerName); Logger.AddTag("Servicing partner", response.servicingPartnerName); }
private void UpdateActiveTripWithNewTripStatus(GetTripStatusRequest r, GetTripStatusResponse response) { UpdateActiveTrip(new Trip { Id = r.tripID, FleetId = response.fleetID, FleetName = response.fleetName, DriverId = response.driverID, DriverName = response.driverName, Status = response.status, ETA = response.ETA, Price = response.price, Distance = response.distance, DriverRouteDuration = response.driverRouteDuration }); }
private void UpdateActiveTripWithNewTripStatus(GetTripStatusRequest r, GetTripStatusResponse response) { Trip trip = new Trip { Id = r.tripID, FleetId = response.fleetID, FleetName = response.fleetName, DriverId = response.driverID, DriverName = response.driverName, Status = response.status, ETA = response.ETA, Price = response.price, DriverRouteDuration = response.driverRouteDuration, SamplingPercentage = 1 }; if (response.status == Status.PickedUp) { trip.EnrouteDistance = response.distance; } activeTrips.UpdateTrip(trip); }
public override GetTripStatusResponse GetTripStatus(GetTripStatusRequest r) { requests++; if (!tripsByID.ContainsKey(r.tripID)) { Logger.Log("Trip " + r.tripID + " not found"); return new GetTripStatusResponse(result: Result.NotFound); } PartnerTrip t = tripsByID[r.tripID]; DateTime? pickupTime = null; if (t.status == Status.PickedUp || t.status == Status.DroppedOff || t.status == Status.Complete) pickupTime = t.pickupTime; // Only if trip has been pickedup. GetTripStatusResponse response; if (t.price == null && t.PartnerFleet != null) t.price = t.PartnerFleet.GetPrice(t); double? distance = null; if (t.PartnerFleet != null) distance = t.PartnerFleet.GetDistance(t); double? driverRouteDuration = null; if (t.driver != null && t.driver.route != null) driverRouteDuration = t.driver.route.duration.TotalSeconds; t.lastStatusNotifiedToPartner = t.status; response = new GetTripStatusResponse( partnerID: ID, partnerName: name, fleetID: t.PartnerFleet != null ? t.PartnerFleet.ID : null, fleetName: t.PartnerFleet != null ? t.PartnerFleet.name : null, pickupTime: pickupTime, pickupLocation: t.pickupLocation, driverID: t.driver != null ? t.driver.ID : null, driverName: t.driver != null ? t.driver.name : null, driverLocation: t.driver != null ? t.driver.location : null, dropoffTime: t.dropoffTime, dropoffLocation: t.dropoffLocation, vehicleType: t.vehicleType, ETA: t.ETA, distance: distance, driverRouteDuration: driverRouteDuration, price: t.price, status: t.status, passengerName: t.passengerName ); return response; }
public virtual GetTripStatusResponse GetTripStatus(GetTripStatusRequest request) { throw new Exception("Not supported"); }
virtual public GetTripStatusResponse GetTripStatus(GetTripStatusRequest request) { throw new Exception("Not supported"); }
public override GetTripStatusResponse GetTripStatus(GetTripStatusRequest r) { requests++; Gateway partner = GetDestinationPartner(r.clientID, r.tripID); if (partner != null) { Logger.AddTag("Destination_partner", partner.name); r.clientID = ID; GetTripStatusResponse response = partner.GetTripStatus(r); if (response.result == Result.OK) { if (TripHasNonActiveStatus(response)) DeactivateTripAndUpdateStats(r.tripID, (Status)response.status, response.price, response.distance); else UpdateActiveTripWithNewTripStatus(r, response); MakeGetTripStatusResponse(r, partner, response); } 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 GetTripStatusResponse(result: Result.NotFound); }
private void UpdateActiveTripWithNewTripStatus(GetTripStatusRequest r, GetTripStatusResponse response) { Trip trip = new Trip { Id = r.tripID, FleetId = response.fleetID, FleetName = response.fleetName, DriverId = response.driverID, DriverName = response.driverName, Status = response.status, ETA = response.ETA, Price = response.price, DriverRouteDuration = response.driverRouteDuration, SamplingPercentage = 1 }; if (response.status == Status.PickedUp) trip.EnrouteDistance = response.distance; activeTrips.UpdateTrip(trip); }