Example #1
0
        public override Gateway.QuoteTripResponse QuoteTrip(Gateway.QuoteTripRequest request)
        {
            Logger.BeginRequest("QuoteTrip received from " + tripthru.name, request);
            Gateway.QuoteTripResponse response = null;
            {
                // TDispatch requires that we supply the string address and postal code in addition to the Lng/Lat coordinates
                Pair <string, string> pickup_address  = MapTools.GetReverseGeoLocAddress(request.pickupLocation);
                Pair <string, string> dropoff_address = MapTools.GetReverseGeoLocAddress(request.dropoffLocation);

                TDispatchAPI.GetFareRequest createRequest = new TDispatchAPI.GetFareRequest
                {
                    payment_method  = "cash",
                    pickup_location = new TDispatchAPI.Location {
                        lat = request.pickupLocation.Lat, lng = request.pickupLocation.Lng
                    },
                    pickup_time      = request.pickupTime.ToString("yyyy-MM-dd'T'HH:mm:ssK", DateTimeFormatInfo.InvariantInfo),
                    dropoff_location = new TDispatchAPI.Location {
                        lat = request.dropoffLocation.Lat, lng = request.dropoffLocation.Lng
                    }
                };
                // TODO: replace with POST /locations/fare
                TDispatchAPI.GetFareResponse createResponse = api.GetFare(createRequest);
                List <Quote> quotes = new List <Quote>();
                var          price  = 0.0;
                try
                {
                    price = double.Parse(createResponse.fare.formatted_total_cost.Replace("$", ""));
                }
                catch (Exception e) { }
                quotes.Add(new Quote(partnerID: ID, partnerName: name, fleetID: ID, fleetName: name, price: price, ETA: DateTime.UtcNow + new TimeSpan(1, 0, createResponse.fare.time_to_wait)));
                response = new Gateway.QuoteTripResponse(quotes, Result.OK);
            }
            Logger.EndRequest(response);
            return(response);
        }