public async Task <IActionResult> SearchVehiclesAvailableAsync(SearchVehicleAvailability search) { var result = await searchService.SearchVehiclesAvailableAsync(search); if (result.IsSuccess) { return(Ok(result.SearchResults)); } return(NotFound()); }
public async Task <(bool IsSuccess, NotAvailableVehicles VehiclesNotAvailable, string ErrorMessage)> GetNotAvailableVehiclesAsync(SearchVehicleAvailability search) { try { var requestContent = JsonSerializer.Serialize(search); var buffer = System.Text.Encoding.UTF8.GetBytes(requestContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var client = httpClientFactory.CreateClient("ReservationsService"); var response = await client.PostAsync($"api/reservations/notavailablevehicles", byteContent); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsByteArrayAsync(); var options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }; var result = JsonSerializer.Deserialize <NotAvailableVehicles>(content, options); return(true, result, null); } return(false, null, response.ReasonPhrase); } catch (Exception ex) { logger.LogError(ex.ToString()); return(false, null, ex.Message); } }
public async Task <(bool IsSuccess, dynamic SearchResults)> SearchVehiclesAvailableAsync(SearchVehicleAvailability search) { var notAvailableResults = await reservationsService.GetNotAvailableVehiclesAsync(search); if (!notAvailableResults.IsSuccess) { notAvailableResults.VehiclesNotAvailable = new NotAvailableVehicles(); notAvailableResults.VehiclesNotAvailable.LstNotAvailableVehicles = new List <int> { -1 }; } var availableModels = await vehiclesService.GetAvailableCarModelsAsync(notAvailableResults.VehiclesNotAvailable.LstNotAvailableVehicles); if (availableModels.IsSuccess) { var result = new { TotalRentalHours = (search.EndDate - search.StartDate).TotalHours, AvailableModels = availableModels.AvailableCarModels }; return(true, result); } return(false, null); }