public void Transform(GetARyderRequest request, LyftRideTypesResponse rideTypes,
                              LyftRideEstimatesResponse rideEstimates, LyftRideEtasResponse rideEtas, GetARyderResponse response)
        {
            PopulateRideTypes(rideTypes, response);
            PopulateRideEstimates(rideEstimates, response);
            PopulateRideEtas(rideEtas, response);

            response.DeepAppLink = CreateDeepAppLink("Lyft", request);
        }
        private void PopulateRideEstimates(LyftRideEstimatesResponse rideEstimates, GetARyderResponse response)
        {
            foreach (var estimate in rideEstimates.CostEstimates)
            {
                foreach (var ride in response.Rides)
                {
                    if (!ride.Type.Equals(estimate.DisplayName))
                    {
                        continue;
                    }

                    ride.Description           = $"{estimate.DisplayName}";
                    ride.EstimatedCost         = $"${(estimate.EstimatedCostCentsMax + estimate.EstimatedCostCentsMin) / 2 / 100}";
                    ride.EstimatedRideDuration = ConvertToMinutes(estimate.EstimatedDurationSeconds);
                    ride.ServiceName           = $"Lyft Ride Sharing: {estimate.DisplayName}";
                }
            }
        }
示例#3
0
 public void SetExpectedLyftRideEstimatesResponse(LyftRideEstimatesResponse lyftRideEstimatesResponse)
 {
     ExpectedLyftRideEstimatesResponse = lyftRideEstimatesResponse;
 }
        public static MitGetARideResponse GetMitGetARideResponseFromLyftResponses(MitGetARideRequest mitGetARideRequest,
                                                                                  LyftRideTypesResponse lyftRideTypesResponse, LyftDriverEtaResponse lyftDriverEtaResponse,
                                                                                  LyftRideEstimatesResponse lyftRideEstimatesResponse, LyftNearbyDriversResponse lyftNearbyDriversResponse)
        {
            var mitGetARideResponse = new MitGetARideResponse
            {
                AccessToken = mitGetARideRequest.AccessToken,
                AccessTokenExpirationDate            = mitGetARideRequest.AccessTokenExpirationDate,
                AccessManagementLoadBalalncingCookie = string.Empty,
                Alerts                = new List <string>(),
                CompletionCode        = string.Empty,
                CorrelationID         = string.Empty,
                CurrentDateTime       = DateTime.Now,
                ErrorID               = string.Empty,
                InputFieldDefinitions = new List <string>(),
                InsiteStatus          = string.Empty,
                NavigationOptions     = new List <string>(),
                RideDetails           = new List <MitGetARideRideDetail>(),
                ServiceStatus         = "MSG00000",
                ServiceStatusMessage  = string.Empty,
                UserSessionTokenID    = string.Empty
            };

            foreach (var rideType in lyftRideTypesResponse.RideTypes)
            {
                var mitGetARideRideDetail = new MitGetARideRideDetail
                {
                    DeepAppLink = GetDeepAppLink(mitGetARideRequest.From.Latitude, mitGetARideRequest.From.Longitude,
                                                 mitGetARideRequest.To.Latitude, mitGetARideRequest.To.Longitude, rideType.RideType),
                    Description     = rideType.Seats + " seats",
                    DisplayName     = rideType.DisplayName,
                    DriverLocations = new List <MitGetARideGpsDriverLocation>(),
                    RideType        = rideType.RideType
                };


                mitGetARideResponse.RideDetails.Add(mitGetARideRideDetail);
            }

            foreach (var rideType in mitGetARideResponse.RideDetails)
            {
                foreach (var etaType in lyftDriverEtaResponse.EtaEstimates)
                {
                    if (etaType.RideType.Equals(rideType.RideType))
                    {
                        rideType.EstimatedTimeOfArrival = "In " + Math.Floor(etaType.EtaSeconds / 60d) + " min";
                    }
                }
            }

            foreach (var rideType in mitGetARideResponse.RideDetails)
            {
                foreach (var rideEstimate in lyftRideEstimatesResponse.CostEstimates)
                {
                    if (rideEstimate.RideType.Equals(rideType.RideType))
                    {
                        var estimate = (rideEstimate.EstimatedCostCentsMax + rideEstimate.EstimatedCostCentsMin) / 2;
                        var dollars  = Math.Floor(estimate / 100d);
                        var cents    = estimate % 100;
                        rideType.EstimatedCost = $"${dollars}.{cents}";
                    }
                }
            }

            foreach (var rideType in mitGetARideResponse.RideDetails)
            {
                foreach (var nearbyDrivers in lyftNearbyDriversResponse.NearbyDrivers)
                {
                    if (nearbyDrivers.RideType.Equals(rideType.RideType))
                    {
                        foreach (var nearbyDriver in nearbyDrivers.Drivers)
                        {
                            var driverLocation = new MitGetARideGpsDriverLocation
                            {
                                Latitude  = nearbyDriver.Locations[(nearbyDriver.Locations.Count - 1)].Latitude,
                                Longitude = nearbyDriver.Locations[(nearbyDriver.Locations.Count - 1)].Longitude,
                                Direction = GetBearingOfDriver(nearbyDriver.Locations)
                            };
                            rideType.DriverLocations.Add(driverLocation);
                        }
                    }
                }
            }

            return(mitGetARideResponse);
        }