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