Esempio n. 1
0
        private async Task <VehicleInformationResponse> GetOptions(VehicleInformationResponse vehicleDetails)
        {
            var optionResponse = await GetVehicleOptions(vehicleDetails.Year, vehicleDetails.Make, vehicleDetails.SelectedModel);

            if (optionResponse.MenuItem == null || optionResponse.MenuItem.Count == 0)
            {
                //TODO: possible infinite loop
                //If we got no options, it means the model may be wrong, so we need to send choices back
                var modelOptions = await GetManufacturerModels(vehicleDetails.Year, vehicleDetails.Make);

                vehicleDetails.SelectedModel = null;
                vehicleDetails.VehicleModels = modelOptions.MenuItem.Select(m => m.Value).ToList();
            }
            else if (optionResponse.MenuItem.Count == 1)
            {
                vehicleDetails.SelectedVehicleOption = new VehicleInformationResponseOption
                {
                    Text = optionResponse.MenuItem.First().Text,
                    Id   = optionResponse.MenuItem.First().Value
                };
            }
            else
            {
                vehicleDetails.VehicleOptions = optionResponse.MenuItem.Select(m => new VehicleInformationResponseOption
                {
                    Text = m.Text,
                    Id   = m.Value
                }).ToList();
            }

            return(vehicleDetails);
        }
Esempio n. 2
0
        public async Task <VehicleInformationResponse> GetVehicleInformation(int year, string make, string model)
        {
            var vehicleDetails = new VehicleInformationResponse()
            {
                VIN           = null,
                Make          = make,
                SelectedModel = model,
                Year          = year
            };

            return(await GetOptions(vehicleDetails));
        }
        private async Task ProcessVehicleOptions(VehicleInformationResponse vehicleDetails)
        {
            if (vehicleDetails.SelectedVehicleOption == null)
            {
                var options = vehicleDetails.VehicleOptions.Select(s => new VehicleOptionViewModel {
                    Id = s.Id, Text = s.Text
                }).ToList();

                LoadVehicleDetailsOptionsRequired?.Invoke(new LoadVehicleDetailsOptionRequiredResponse {
                    Success = true, Message = "Please select the vehicle's drivetrain.", VehicleOptions = options
                });
                return;
            }

            await SetVehicleOptionAndGetMileage(vehicleDetails.SelectedVehicleOption.Id, vehicleDetails.SelectedVehicleOption.Text);

            LoadVehicleDetailsComplete?.Invoke(new LoadVehicleDetailsCompleteResponse {
                Success = true, DetailsAreFromStorage = false
            });
            return;
        }
Esempio n. 4
0
        public async Task <VehicleInformationResponse> GetVehicleInformation(string vin)
        {
            //truncate to remove specific vehicle identification characters
            if (vin.Length > 11)
            {
                vin = vin.Substring(0, 11);
            }

            var vinQuery = ConstructVinQuery(vin);

            var vinResponse = await _restUtility.ExecuteGetRequestAsync <VinQueryResponse>(vinQuery);

            var vehicleDetails = new VehicleInformationResponse()
            {
                VIN           = vin,
                Make          = GetValueFromVinResponse <string>(vinResponse, "Make"),
                SelectedModel = GetValueFromVinResponse <string>(vinResponse, "Model"),
                Year          = GetValueFromVinResponse <int>(vinResponse, "Model Year")
            };

            return(await GetOptions(vehicleDetails));
        }