Пример #1
0
        public async Task <DistanceResponse> GetDistanceAsync(DistanceRequest request)
        {
            var distanceRequest = new DistanceMatrixRequest
            {
                Origins = new[]
                {
                    new Location(request.Origin.Latitude, request.Origin.Longitude)
                },
                Destinations = new[]
                {
                    new Location(request.Destination.Latitude, request.Destination.Longitude)
                },
                TravelMode = TravelMode.Driving,
                Language   = Language.Ukrainian,
                Units      = Units.Metric,
                Key        = ServicesConstants.GOOGLE_MAPS_API_KEY
            };

            var distanceResponse = await GoogleMaps.DistanceMatrix.QueryAsync(distanceRequest);

            if (distanceResponse?.Status != Status.Ok)
            {
                return(null);
            }

            var data = distanceResponse.Rows?.First()?.Elements?.First();

            var response = new DistanceResponse
            {
                Duration = data?.Duration?.Value,
                Distance = Math.Round(data.Distance.Value / MetresInKilometer, RoundingDigits)
            };

            return(response);
        }
Пример #2
0
        public TripDetail FromBolt(TaxiRequest order, Bolt.Models.Responses.PriceEstimateResponse response,
                                   DistanceResponse distance)
        {
            var price = order.CarType == CarType.Business
                ? response.Data.SearchCategories.Single(x => x.Name.Equals("Comfort"))
                : response.Data.SearchCategories.Single(x => x.Name.Equals("Bolt"));

            var minCost = int.Parse(price.PricePrediction.Trim('₴').Split('–').First());
            var maxCost = int.Parse(price.PricePrediction.Trim('₴').Split('–').Last());
            var avgCost = (minCost + maxCost) / 2;

            var detail = new TripDetail
            {
                CarType     = order.CarType,
                TaxiService = TaxiService.Bolt,
                Details     = new TripData
                {
                    Price = new Price
                    {
                        MinPrice        = minCost,
                        MaxPrice        = maxCost,
                        Cost            = avgCost,
                        SurgeMultiplier = price.SurgeMultiplier
                    },
                    Distance   = distance.Distance,
                    Duration   = distance.Duration,
                    PickupTime = price.PickupTime,
                    Seats      = 4
                }
            };

            return(detail);
        }
Пример #3
0
        public TripDetail FromTaxi838(TaxiRequest order, Taxi838.Models.Responses.PriceEstimateResponse response,
                                      DistanceResponse distance)
        {
            var cost = int.Parse(response.Price.Split(' ').First());

            var detail = new TripDetail
            {
                CarType     = order.CarType,
                TaxiService = TaxiService.Taxi838,
                Details     = new TripData
                {
                    Price = new Price
                    {
                        Cost     = cost,
                        MinPrice = cost - new Random().Next(10),
                        MaxPrice = cost + new Random().Next(30)
                    },
                    Distance = distance.Distance,
                    Duration = distance.Duration,
                    Seats    = order.CarType == CarType.Minibus ? 8 : 4
                }
            };

            return(detail);
        }
Пример #4
0
        public TripDetail FromUklon(TaxiRequest order, Uklon.Models.Responses.PriceEstimateResponse response,
                                    DistanceResponse distance)
        {
            var detail = new TripDetail
            {
                CarType     = order.CarType,
                TaxiService = TaxiService.Uklon,
                Details     = new TripData
                {
                    Price = new Price
                    {
                        Cost            = response.Cost,
                        MinPrice        = response.LowCost,
                        MaxPrice        = response.HighCost,
                        SurgeMultiplier = response.CostMultiplier
                    },
                    Distance = response.Distance,
                    Duration = distance.Duration,
                    Seats    = order.CarType == CarType.Minibus ? 8 : 4
                }
            };

            return(detail);
        }
 public void OnDistanceCallback(DistanceResponse p0)
 {
 }