public async Task <List <FlightDTO> > SearchFlights(SearchFlightsInput input) { var result = await getFlights(input.DepartureDate, input.DirectFlightsOnly, input.DestinationIATACode, input.OriginIATACode, false); if (input.ReturnDate.HasValue) { result.AddRange(await getFlights(input.ReturnDate.Value, input.DirectFlightsOnly, input.OriginIATACode, input.DestinationIATACode, true)); } foreach (var resultFlight in result) { var price = getTotalPrice(input.Adults, TravelerType.Adult, input.TravelClass, resultFlight); if (input.Children.HasValue) { price += getTotalPrice(input.Children.Value, TravelerType.Child, input.TravelClass, resultFlight); } if (input.Infants.HasValue) { price += getTotalPrice(input.Infants.Value, TravelerType.SeatedInfant, input.TravelClass, resultFlight); } resultFlight.TotalPrice = price; } return(result); }
public async Task <List <FlightDTO> > SearchFlights(SearchFlightsInput input) { var query = input.GetParameterKeyValuePairs(); var response = await client.GetAsync(QueryHelpers.AddQueryString("/v2/shopping/flight-offers", query)); var responseStream = await response.Content.ReadAsStringAsync(); var searchFlightResponse = JsonConvert.DeserializeObject <SearchFlightsResponse>(responseStream); return(searchFlightResponse.Data.SelectMany(d => createFlightDTO(d, searchFlightResponse.Dictionaries)).ToList()); }
public async Task <ActionResult <FlightDTO> > SearchFlights(SearchFlightsInput input) { var result = await flightManagerService.SearchFlights(input); if (input.ShouldIncludeAmadeusFlights) { result.AddRange(await amadeusService.SearchFlights(input)); } return(Ok(result)); }