Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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);
        }