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); }
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); }
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); }
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) { }