public override Gateway.GetTripStatusResponse GetTripStatus(Gateway.GetTripStatusRequest request)
 {
     Logger.BeginRequest("GetTripStatus sent to " + server.name, request);
     Gateway.GetTripStatusResponse response = server.GetTripStatus(request);
     Logger.EndRequest(response);
     return response;
 }
        public Partner(string ID, string name, Gateway tripthru, List<PartnerFleet> PartnerFleets = null, string preferedPartnerId = null)
            : base(ID, name)
        {
            this.tripthru = tripthru;
            this.preferedPartnerId = preferedPartnerId;
            this.PartnerFleets = new Dictionary<string, PartnerFleet>();
            if (PartnerFleets != null)
            {
                foreach (PartnerFleet f in PartnerFleets)
                    AddPartnerFleet(f);
            }

            tripsByID = new Dictionary<string, PartnerTrip>();

            partnerAccounts.Clear();
            clientIdByAccessToken.Clear();
            {
                PartnerAccount partnerAccount = new PartnerAccount
                {
                    UserName = "******",
                    Password = "******",
                    Email = "*****@*****.**",
                    AccessToken = "jaosid1201231",
                    RefreshToken = "jaosid1201231",
                    ClientId = "TripThru",
                    ClientSecret = "23noiasdn2123"
                };
                partnerAccounts[partnerAccount.ClientId] = partnerAccount;
                clientIdByAccessToken[partnerAccount.AccessToken] = partnerAccount.ClientId;
            }
        }
 public override Gateway.GetPartnerInfoResponse GetPartnerInfo(Gateway.GetPartnerInfoRequest request)
 {
     Logger.BeginRequest("GetPartnerInfo sent to " + server.name, request);
     Gateway.GetPartnerInfoResponse response = server.GetPartnerInfo(request);
     Logger.EndRequest(response);
     return response;
 }
Beispiel #4
0
        public Partner(string ID, string name, Gateway tripthru, List<PartnerFleet> PartnerFleets = null, string preferedPartnerId = null)
            : base(ID, name)
        {
            this.tripthru = tripthru;
            this.preferedPartnerId = preferedPartnerId;
            this.PartnerFleets = new Dictionary<string, PartnerFleet>();
            if (PartnerFleets != null)
            {
                foreach (PartnerFleet f in PartnerFleets)
                    AddPartnerFleet(f);
            }

            tripsByID = new Dictionary<string, PartnerTrip>();

            partnerAccounts.Clear();
            clientIdByAccessToken.Clear();

            var accounts = StorageManager.GetPartnerAccounts();
            if (accounts != null)
                foreach (PartnerAccount account in accounts)
                {
                    if (Storage.Storage.UserRole.partner != account.Role && account.ClientId != "TripThru")
                        continue;
                    if (!partnerAccounts.ContainsKey(account.ClientId))
                        partnerAccounts[account.ClientId] = account;
                    if (!clientIdByAccessToken.ContainsKey(account.AccessToken))
                        clientIdByAccessToken[account.AccessToken] = account.ClientId;
                }

            PartnerTrip.nextID = base.activeTrips.lastID;
        }
 public override Gateway.RegisterPartnerResponse RegisterPartner(Gateway.RegisterPartnerRequest request)
 {
     Logger.BeginRequest("RegisterPartner sent to " + server.name, request);
     Gateway.RegisterPartnerResponse response = server.RegisterPartner(request);
     Logger.EndRequest(response);
     return response;
 }
 public override Gateway.QuoteTripResponse QuoteTrip(Gateway.QuoteTripRequest request)
 {
     Logger.BeginRequest("QuoteTrip sent to " + server.name, request);
     Gateway.QuoteTripResponse response = server.QuoteTrip(request);
     Logger.EndRequest(response);
     return response;
 }
 public override Gateway.DispatchTripResponse DispatchTrip(Gateway.DispatchTripRequest request)
 {
     requests++;
     requests++; //Assuming Tripthru will quote itself in AutoDispatch
     Gateway.DispatchTripResponse resp = server.DispatchTrip(request);
     if (resp.result == Gateway.Result.Rejected)
         rejects++;
     Gateway.DispatchTripResponse response = new Gateway.DispatchTripResponse
     {
         result = resp.result,
     };
     return response;
 }
        public override Gateway.GetPartnerInfoResponse GetPartnerInfo(Gateway.GetPartnerInfoRequest request)
        {
            requests++;
            Gateway.GetPartnerInfoResponse resp = server.GetPartnerInfo(request);

            Gateway.GetPartnerInfoResponse response = new Gateway.GetPartnerInfoResponse
            {
                fleets = resp.fleets,
                vehicleTypes = resp.vehicleTypes,
                result = resp.result
            };
            return response;
        }
 public override Gateway.DispatchTripResponse DispatchTrip(Gateway.DispatchTripRequest request)
 {
     requests++;
     requests++; //Assuming Tripthru will quote itself in AutoDispatch
     Gateway.DispatchTripResponse resp = server.DispatchTrip(request);
     if (resp.result == Gateway.Result.Rejected)
         rejects++;
     if (resp.result == Result.OK)
     {
         var resp1 = GetTripStatus(new GetTripStatusRequest(request.clientID, request.tripID));
         if (resp1.distance != null) distance = distance + resp1.distance.Value;
     }
     Gateway.DispatchTripResponse response = new Gateway.DispatchTripResponse
     {
         result = resp.result,
     };
     return response;
 }
        public override Gateway.GetPartnerInfoResponse GetPartnerInfo(Gateway.GetPartnerInfoRequest request)
        {
            Logger.BeginRequest("GetPartnerInfo sent to " + name, request);

            JsonServiceClient client = new JsonServiceClient(RootUrl);
            GatewayService.PartnersResponse resp = client.Get<GatewayService.PartnersResponse>(new GatewayService.Partners
            {
                access_token = AccessToken,
            });

            Gateway.GetPartnerInfoResponse response = new Gateway.GetPartnerInfoResponse
            {
                fleets = resp.Fleets,
                vehicleTypes = resp.VehicleTypes,
                result = resp.ResultCode
            };
            Logger.EndRequest(response);
            return response;
        }
Beispiel #11
0
 public override Gateway.DispatchTripResponse DispatchTrip(Gateway.DispatchTripRequest request)
 {
     Uri uri;
     if (!Uri.TryCreate(RootUrl, UriKind.Absolute, out uri))
         return new Gateway.DispatchTripResponse
         {
             result = Result.InvalidParameters
         };
     Logger.BeginRequest("DispatchTrip sent to " + name, request);
     //Logger.Log("RootURL: " + RootUrl);
     GatewayService.Trip dispatch = new GatewayService.Trip
     {
         access_token = AccessToken,
         PassengerId = request.passengerID,
         PassengerName = request.passengerName,
         Luggage = request.luggage,
         Persons = request.persons,
         PickupLat = request.pickupLocation.Lat,
         PickupLng = request.pickupLocation.Lng,
         PickupTime = request.pickupTime,
         DropoffLat = request.dropoffLocation == null ? (double?) null : request.dropoffLocation.Lat,
         DropoffLng = request.dropoffLocation == null ? (double?) null : request.dropoffLocation.Lng,
         PaymentMethod = request.paymentMethod,
         VehicleType = request.vehicleType,
         MaxPrice = request.maxPrice,
         MinRating = request.minRating,
         PartnerId = request.partnerID,
         FleetId = request.fleetID,
         DriverId = request.driverID,
         TripId = request.tripID
     };
     JsonServiceClient client = new JsonServiceClient(RootUrl);
     client.Timeout = timeout;
     GatewayService.TripResponse resp = client.Post<GatewayService.TripResponse>(dispatch);
     Gateway.DispatchTripResponse response = new Gateway.DispatchTripResponse
     {
         result = resp.ResultCode,
     };
     Logger.EndRequest(response);
     return response;
 }
Beispiel #12
0
 public Test_TripLifeCycle_Base(
     string filename,
     Gateway tripthru,
     TimeSpan? maxLateness = null,
     PartnerTrip.Origination? origination = null,
     PartnerTrip.Origination? service = null,
     double? locationVerificationTolerance = null)
 {
     this.filename = filename;
     this.tripthru = tripthru;
     if (maxLateness != null)
         this.maxLateness = (TimeSpan)maxLateness;
     if (origination != null)
         this.origination = origination;
     if (service != null)
         this.service = service;
     if (locationVerificationTolerance != null)
         this.locationVerificationTolerance = (double)locationVerificationTolerance;
     PartnerConfiguration configuration = Partner.LoadPartnerConfigurationFromJsonFile(filename);
     partner = new Partner(configuration.Partner.ClientId, configuration.Partner.Name, new GatewayClientMock(tripthru), configuration.partnerFleets);
     partner.tripthru.RegisterPartner(partner);
 }
 public override Gateway.GetTripStatusResponse GetTripStatus(Gateway.GetTripStatusRequest request)
 {
     requests++;
     Gateway.GetTripStatusResponse resp = server.GetTripStatus(request);
     Gateway.GetTripStatusResponse response;
     if (resp.result == Gateway.Result.OK)
     {
         response = new Gateway.GetTripStatusResponse
         {
             result = Gateway.Result.OK,
             ETA = resp.ETA,
             passengerName = resp.passengerName,
             driverID = resp.driverID,
             driverLocation = resp.driverLocation,
             driverName = resp.driverName,
             dropoffTime = resp.dropoffTime,
             dropoffLocation = resp.dropoffLocation,
             fleetName = resp.fleetName,
             fleetID = resp.fleetID,
             vehicleType = resp.vehicleType,
             status = resp.status,
             partnerName = resp.partnerName,
             partnerID = resp.partnerID,
             pickupTime = resp.pickupTime,
             pickupLocation = resp.pickupLocation,
             distance = resp.distance,
             driverRouteDuration = resp.driverRouteDuration,
             price = resp.price
         };
     }
     else
     {
         response = new Gateway.GetTripStatusResponse
         {
                 result = resp.result
         };
     }
     return response;
 }
 public override Gateway.GetTripStatusResponse GetTripStatus(Gateway.GetTripStatusRequest request)
 {
     Logger.BeginRequest("GetTripStatus sent to " + name, request);
     JsonServiceClient client = new JsonServiceClient(RootUrl);
     GatewayService.TripStatusResponse resp = client.Get<GatewayService.TripStatusResponse>(new GatewayService.TripStatus
     {
         access_token = AccessToken,
         TripId = request.tripID
     });
     GetTripStatusResponse response;
     if (resp.ResultCode == Result.OK)
     {
         response = new Gateway.GetTripStatusResponse
         {
             result = Gateway.Result.OK,
             ETA = resp.ETA,
             passengerName = resp.PassengerName,
             driverID = resp.DriverId,
             driverLocation = resp.DriverLocation,
             driverName = resp.DriverName,
             dropoffTime = resp.DropoffTime,
             dropoffLocation = resp.DropoffLocation,
             fleetName = resp.FleetName,
             fleetID = resp.FleetId,
             vehicleType = resp.VehicleType,
             status = resp.Status,
             partnerName = resp.PartnerName,
             partnerID = resp.PartnerId,
             pickupTime = resp.PickupTime,
             pickupLocation = resp.PickupLocation,
             distance = resp.Distance,
             driverRouteDuration = resp.DriverRouteDuration,
             price = resp.Price
         };
     }
     else
     {
         response = new Gateway.GetTripStatusResponse
         {
                 result = resp.ResultCode
         };
     }
     Logger.EndRequest(response);
     return response;
 }
        public override Gateway.RegisterPartnerResponse RegisterPartner(Gateway.RegisterPartnerRequest request)
        {
            JsonServiceClient client = new JsonServiceClient(RootUrl);
            GatewayService.PartnerResponse resp = client.Post<GatewayService.PartnerResponse>(new GatewayService.PartnerRequest
            {
                access_token = AccessToken,
                Name = request.name,
                CallbackUrl = request.callback_url
            });

            return new Gateway.RegisterPartnerResponse
            {
                result = resp.ResultCode
            };
        }
Beispiel #16
0
 public override Gateway.RegisterPartnerResponse RegisterPartner(Gateway partner)
 {
     return(MakeRejectRegisterPartnerResponse());
 }
Beispiel #17
0
        protected DispatchTripResponse MakeRejectDispatchResponse(DispatchTripRequest r, Gateway client, Gateway partner)
        {
            DispatchTripResponse response;
            rejects++;
            response = new DispatchTripResponse(result: Result.Rejected);

            var trip = new Trip
            {
                Id = r.tripID,
                OriginatingPartnerName = client.name,
                OriginatingPartnerId = client.ID,
                ServicingPartnerName = partner == null ? null : partner.name,
                ServicingPartnerId = partner == null ? null : partner.ID,
                Status = Status.Rejected,
                PickupLocation = r.pickupLocation,
                PickupTime = r.pickupTime,
                DropoffLocation = r.dropoffLocation,
                PassengerName = r.passengerName,
                VehicleType = r.vehicleType,
                Creation = DateTime.UtcNow,
                LatenessMilliseconds = 0,
                SamplingPercentage = 1
            };
            activeTrips.SaveTrip(trip); // Hack: save trip should be moved somewhere else.

            return response;
        }
 private void RequestQuotesFromPartnerAndAdd(QuoteTripRequest request, List<Quote> quotes, Gateway partner)
 {
     string savedClientID = request.clientID;
     request.clientID = ID;
     QuoteTripResponse response = partner.QuoteTrip(request);
     if (response.result == Result.OK)
     {
         if (response.quotes != null)
             quotes.AddRange(response.quotes);
     }
     request.clientID = savedClientID;
 }
        private void RegisterOfficeConfiguration(Gateway tripThru, Office o)
        {
            List<Fleet> fleets = new List<Fleet>();
            List<Zone> coverage = o.coverage;
            fleets.Add(new Fleet("TDispatch", "TDispatch", o.name, o.name, coverage));
            List<VehicleType> vehicleTypes = new List<VehicleType>();

            TDispatchIntegration partner = new TDispatchIntegration(tripThru, apiKey: o.api_key,
                fleetAuth: o.fleetAuthorizationCode, fleetAccessToken: o.fleetAccessToken,
                fleetRefreshToken: o.fleetRefreshToken,
                passengerAuth: o.passengerAuthorizationCode, passengerAccessToken: o.passengerAccessToken,
                passengerRefreshToken: o.passengerRefreshToken,
                passengerProxyPK: o.passengerProxyPK, fleets: fleets, vehicleTypes: vehicleTypes);
            o.fleetAccessToken = partner.api.FLEET_ACCESS_TOKEN;
            o.fleetRefreshToken = partner.api.FLEET_REFRESH_TOKEN;
            o.passengerAccessToken = partner.api.PASSENGER_ACCESS_TOKEN;
            o.passengerRefreshToken = partner.api.PASSENGER_REFRESH_TOKEN;
            o.ID = partner.ID;
            o.name = partner.name;
            RegisterPartner(new GatewayLocalClient(partner)); // the local client is not necessary, it just encloses the call inside a Begin/End request (for logging)
        }
 private void RecordTripOriginatingAndServicingPartner(DispatchTripRequest r, Gateway partner)
 {
     originatingPartnerByTrip.Add(r.tripID, r.clientID);
     Logger.AddTag("Originating partner", r.clientID);
     servicingPartnerByTrip.Add(r.tripID, partner.ID);
     Logger.AddTag("Servicing partner", partner.name);
 }
 public override Gateway.UpdateTripStatusResponse UpdateTripStatus(Gateway.UpdateTripStatusRequest request)
 {
     Logger.BeginRequest("UpdateTripStatus sent to " + name, request);
     JsonServiceClient client = new JsonServiceClient(RootUrl);
     GatewayService.TripStatusResponse resp = client.Put<GatewayService.TripStatusResponse>(new GatewayService.TripStatus
     {
         access_token = AccessToken,
         Status = request.status,
         TripId = request.tripID,
         DriverLocationLat = request.driverLocation != null ? (double?)request.driverLocation.Lat : null,
         DriverLocationLng = request.driverLocation != null ? (double?)request.driverLocation.Lng : null,
         DriverLocationAddress = request.driverLocation != null ? request.driverLocation.Address : null
     });
     Gateway.UpdateTripStatusResponse response;
     response = new Gateway.UpdateTripStatusResponse
     {
         result = resp.ResultCode
     };
     Logger.EndRequest(response);
     return response;
 }
Beispiel #22
0
 public GatewayLocalClient(Gateway server)
     : base(server.ID, server.name)
 {
     this.server = server;
 }
 private Gateway SelectThePartnerWithBestQuote(DispatchTripRequest r, Gateway partner, QuoteTripResponse response)
 {
     Quote bestQuote = null;
     DateTime bestETA = r.pickupTime + missedBookingPeriod;
     // not more than 30 minues late
     foreach (Quote q in response.quotes)
     {
         DateTime eta = (DateTime)q.ETA;
         if (eta == null) // if no ETA is returned then we assum a certain lateness.
             eta = r.pickupTime + missedBookingPeriod - new TimeSpan(0, 1, 0);
         if (eta.ToUniversalTime() < bestETA.ToUniversalTime())
         {
             bestETA = (DateTime)q.ETA;
             bestQuote = q;
         }
     }
     if (bestQuote != null)
     {
         partner = partners[bestQuote.PartnerId];
         r.fleetID = bestQuote.FleetId;
         Logger.Log("Best quote " + bestQuote + " from " + partner.name);
     }
     else
         Logger.Log("There are no partners to handle this trip within an exceptable service time");
     return partner;
 }
Beispiel #24
0
 virtual public RegisterPartnerResponse RegisterPartner(Gateway partner)
 {
     throw new Exception("Not supported");
 }
Beispiel #25
0
 public GatewayLocalServer(Gateway gateway)
     : base(gateway.ID, gateway.name)
 {
     this.gateway = gateway;
 }
 public GatewayClientMock(Gateway server)
     : base(server.ID, server.name)
 {
     this.server = server;
 }
Beispiel #27
0
 private static bool PartnerHasBeenSelected(Gateway partner)
 {
     return(partner != null);
 }
 public override Gateway.RegisterPartnerResponse RegisterPartner(Gateway gateway)
 {
     requests++;
     Gateway.RegisterPartnerResponse resp = server.RegisterPartner(gateway);
     if (resp.result == Gateway.Result.Rejected)
         rejects++;
     return new Gateway.RegisterPartnerResponse
     {
         result = resp.result
     };
 }
 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;
 }
Beispiel #30
0
        private void RequestQuotesFromPartnerAndAdd(QuoteTripRequest request, List <Quote> quotes, Gateway partner)
        {
            string savedClientID = request.clientID;

            request.clientID = ID;
            QuoteTripResponse response = partner.QuoteTrip(request);

            if (response.result == Result.OK)
            {
                if (response.quotes != null)
                {
                    quotes.AddRange(response.quotes);
                }
            }
            request.clientID = savedClientID;
        }
 public override Gateway.QuoteTripResponse QuoteTrip(Gateway.QuoteTripRequest request)
 {
     requests++;
     Gateway.QuoteTripResponse resp = server.QuoteTrip(request);
     if (resp.result == Gateway.Result.Rejected)
         rejects++;
     Gateway.QuoteTripResponse response = new Gateway.QuoteTripResponse
     {
         result = resp.result,
         quotes = resp.quotes
     };
     return response;
 }
Beispiel #32
0
 public virtual RegisterPartnerResponse RegisterPartner(Gateway partner)
 {
     throw new Exception("Not supported");
 }
Beispiel #33
0
 public override Gateway.RegisterPartnerResponse RegisterPartner(Gateway partner)
 {
     return MakeRejectRegisterPartnerResponse();
 }
Beispiel #34
0
 public override GetGatewayStatsResponse GetGatewayStats(Gateway.GetGatewayStatsRequest request)
 {
     try
     {
         GetGatewayStatsResponse resp = new GetGatewayStatsResponse(
             activeTrips: activeTrips.Count,
             requestsAllTime: (long)requests.allTime.value, requestsLast24Hrs: (long)requests.last24Hrs.Count, requestsLastHour: (long)requests.lastHour.Count,
             rejectsAllTime: (long)rejects.allTime.value, rejectsLast24Hrs: (long)rejects.last24Hrs.Count, rejectsLastHour: (long)rejects.lastHour.Count,
             cancelsAllTime: (long)cancels.allTime.value, cancelsLast24Hrs: (long)cancels.last24Hrs.Count, cancelsLastHour: (long)cancels.lastHour.Count,
             exceptionsAllTime: (long)exceptions.allTime.value, exceptionsLast24Hrs: (long)exceptions.last24Hrs.Count, exceptionsLastHour: (long)exceptions.lastHour.Count,
             tripsAllTime: (long)completes.allTime.value, tripsLast24Hrs: (long)completes.last24Hrs.Count, tripsLastHour: (long)completes.lastHour.Count,
             distanceAllTime: distance.allTime.value, distanceLast24Hours: distance.last24Hrs.Count, distanceLastHour: distance.lastHour.Count,
             fareAllTime: fare.allTime.value, fareLast24Hrs: fare.last24Hrs.Count, fareLastHour: fare.lastHour.Count);
         return resp;
     }
     catch (Exception e)
     {
         exceptions++;
         Logger.LogDebug("GatewayStats=" + e.Message, e.ToString());
         return new GetGatewayStatsResponse(result: Result.UnknownError);
     }
 }
 private bool PickupLocationIsServedByPartner(QuoteTripRequest r, Gateway p)
 {
     bool covered = false;
     foreach (Zone z in GetPartnerCoverage(p.ID))
     {
         if (z.IsInside(r.pickupLocation))
         {
             covered = true;
             break;
         }
     }
     return covered;
 }
 public override Gateway.DispatchTripResponse DispatchTrip(Gateway.DispatchTripRequest request)
 {
     Logger.BeginRequest("DispatchTrip sent to " + name, request);
     GatewayService.Dispatch dispatch = new GatewayService.Dispatch
     {
         access_token = AccessToken,
         PassengerId = request.passengerID,
         PassengerName = request.passengerName,
         Luggage = request.luggage,
         Persons = request.persons,
         PickupLat = request.pickupLocation.Lat,
         PickupLng = request.pickupLocation.Lng,
         PickupTime = request.pickupTime,
         DropoffLat = request.dropoffLocation == null ? (double?) null : request.dropoffLocation.Lat,
         DropoffLng = request.dropoffLocation == null ? (double?) null : request.dropoffLocation.Lng,
         PaymentMethod = request.paymentMethod,
         VehicleType = request.vehicleType,
         MaxPrice = request.maxPrice,
         MinRating = request.minRating,
         PartnerId = request.partnerID,
         FleetId = request.fleetID,
         DriverId = request.driverID,
         TripId = request.tripID
     };
     JsonServiceClient client = new JsonServiceClient(RootUrl);
     GatewayService.DispatchResponse resp = client.Get<GatewayService.DispatchResponse>(dispatch);
     Gateway.DispatchTripResponse response = new Gateway.DispatchTripResponse
     {
         result = resp.ResultCode,
     };
     Logger.EndRequest(response);
     return response;
 }