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);
        }
Example #2
0
        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());
        }
Example #3
0
        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));
        }