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 PopulateRideTypes(LyftRideTypesResponse rideTypes, GetARyderResponse response)
 {
     foreach (var type in rideTypes.RideTypes)
     {
         var newRide = new GetARyderRide {
             Type = type.DisplayName
         };
         response.Rides.Add(newRide);
     }
 }
Exemple #3
0
 public void SetExpectedLyftRideTypesResponse(LyftRideTypesResponse lyftRideTypesResponse)
 {
     ExpectedLyftRideTypesResponse = lyftRideTypesResponse;
 }
        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);
        }