Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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
     });
 }
Beispiel #4
0
        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;
        }
Beispiel #6
0
 public virtual GetTripStatusResponse GetTripStatus(GetTripStatusRequest request)
 {
     throw new Exception("Not supported");
 }
Beispiel #7
0
 virtual public GetTripStatusResponse GetTripStatus(GetTripStatusRequest request)
 {
     throw new Exception("Not supported");
 }
        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);
        }
 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)
 {
     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
     });
 }
Beispiel #11
0
        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);
        }