Exemple #1
0
        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)
        {
            requests++;
            UpdateTripStatusResponse resp = server.UpdateTripStatus(request);

            if (resp.result == Gateway.Result.Rejected)
            {
                rejects++;
            }
            switch (request.status)
            {
            case Status.Cancelled:
                cancels++;
                break;

            case Status.Complete:
                completes++;
                break;
            }
            Gateway.UpdateTripStatusResponse response;
            response = new Gateway.UpdateTripStatusResponse
            {
                result = resp.result
            };
            return(response);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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)
        {
            // Note: GetTrip populates the foreignTripID
            requests++;
            if (!tripsByID.ContainsKey(r.tripID))
                return new UpdateTripStatusResponse(result: Result.NotFound);
            PartnerTrip t = tripsByID[r.tripID];
            UpdateTripStatusResponse response = new UpdateTripStatusResponse();
            t.UpdateTripStatus(notifyPartner: false, status: r.status, driverLocation: r.driverLocation, eta: r.eta);

            return response;
        }
 private bool SuccesAndTripStillActive(UpdateTripStatusRequest r, UpdateTripStatusResponse response)
 {
     return response.result == Result.OK && activeTrips.ContainsKey(r.tripID);
 }
Exemple #7
0
 public override UpdateTripStatusResponse UpdateTripStatus(UpdateTripStatusRequest r)
 {
     // Note: GetTrip populates the foreignTripID
     UpdateTripStatusResponse response;
     {
         requests++;
         if (!tripsByID.ContainsKey(r.tripID))
         {
             response = new UpdateTripStatusResponse(result: Result.NotFound);
         }
         else
         {
             PartnerTrip t = tripsByID[r.tripID];
             //lock (t)
             //{
                 response = new UpdateTripStatusResponse();
                 t.UpdateTripStatus(notifyPartner: false, status: r.status, driverLocation: r.driverLocation, eta: r.eta);
             //}
             Logger.SetServicingId(this.ID);
         }
     }
     return response;
 }
Exemple #8
0
 private bool SuccesAndTripStillActive(UpdateTripStatusRequest r, UpdateTripStatusResponse response)
 {
     return(response.result == Result.OK && activeTrips.ContainsKey(r.tripID));
 }
Exemple #9
0
        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));
        }
Exemple #10
0
        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);
        }