Exemple #1
0
        public async Task <ClientSearchSession> SearchAsync(string apiKey, string[] countries, string currency, string locale, string originPlaceSkyscannerCode,
                                                            string destinationPlaceSkyscannerCode, DateTime outboundPartialDate, DateTime?inboundPartialDate, int adults, int children, int infants,
                                                            double?priceMinFilter, double?priceMaxFilter, int?maxStopsFilter, string cabinClass, string sortType, string sortOrder,
                                                            DateTime?outboundDepartureDateTimeFromFilter, DateTime?outboundDepartureDateTimeToFilter, DateTime?outboundArrivalDateTimeFromFilter, DateTime?outboundArrivalDateTimeToFilter,
                                                            DateTime?inboundDepartureDateTimeFromFilter, DateTime?inboundDepartureDateTimeToFilter, DateTime?inboundArrivalDateTimeFromFilter, DateTime?inboundArrivalDateTimeToFilter, CancellationToken cancellationToken)
        {
            await _flightSearchEngine.GetLocalesAsync(cancellationToken).ConfigureAwait(false);

            int passengers = adults + children + infants;

            List <ServerSearchSessionResult> searchResults = new List <ServerSearchSessionResult>();

            var cts   = TaskHelper.CreateChildCancellationTokenSource(cancellationToken);
            var tasks = new List <Task <IEnumerable <ServerSearchSessionResult> > >();

            foreach (string country in countries)
            {
                tasks.Add(StartSearchAsync(country, currency, locale, originPlaceSkyscannerCode, destinationPlaceSkyscannerCode, outboundPartialDate, inboundPartialDate, adults, 0, 0, priceMinFilter, priceMaxFilter, maxStopsFilter, cabinClass, cts.Token));
            }

            IEnumerable <IEnumerable <ServerSearchSessionResult> > tempResults = await TaskHelper.WhenAllOrException(tasks.ToArray(), cts).ConfigureAwait(false);

            foreach (List <ServerSearchSessionResult> list in tempResults)
            {
                foreach (ServerSearchSessionResult result in list)
                {
                    searchResults.Add(result);
                }
            }

            double?priceMinFilterAllPassengers = null;

            if (priceMinFilter.HasValue)
            {
                priceMinFilterAllPassengers = priceMinFilter * passengers;
            }

            double?priceMaxFilterAllPassengers = null;

            if (priceMaxFilter.HasValue)
            {
                priceMaxFilterAllPassengers = priceMaxFilter * passengers;
            }

            ServerSearchSession data = ServerSearchSession.CreateServerSearchSession(countries, currency, locale, originPlaceSkyscannerCode, destinationPlaceSkyscannerCode, outboundPartialDate, inboundPartialDate, adults, 0, 0, priceMinFilterAllPassengers, priceMaxFilterAllPassengers, 3, cabinClass, searchResults);

            ClientSearchSession clientSearchSession = data.CreateClientSearchSession();
            await clientSearchSession.FilterAsync(sortType, sortOrder, adults, children, infants, outboundDepartureDateTimeFromFilter, outboundDepartureDateTimeToFilter, outboundArrivalDateTimeFromFilter, outboundArrivalDateTimeToFilter,
                                                  inboundDepartureDateTimeFromFilter, inboundDepartureDateTimeToFilter, inboundArrivalDateTimeFromFilter, inboundArrivalDateTimeToFilter, priceMinFilterAllPassengers, priceMaxFilterAllPassengers, maxStopsFilter, cancellationToken).ConfigureAwait(false);

            return(clientSearchSession);
        }
Exemple #2
0
 public async Task <LocalesServiceResponse> GetLocalesAsync(CancellationToken cancellationToken)
 {
     return(await _flightSearchEngine.GetLocalesAsync(cancellationToken).ConfigureAwait(false));
 }