コード例 #1
0
        /// <summary>
        /// Populate a FlightSearchDataModel with airports, etc. from the database.
        /// </summary>
        /// <param name="flightSearchDataModel">The object to populate.</param>
        private async Task FillModel(FlightSearchDataModel flightSearchDataModel)
        {
            // Clear out existing items in lists.
            flightSearchDataModel.CheapestPricesOnSimilarDates = new Dictionary <DateTime, decimal>();
            flightSearchDataModel.OutboundFlights = new List <PricedFlight>();
            flightSearchDataModel.InboundFlights  = new List <PricedFlight>();

            var searchFilterParameters = await flightSearchDataModel.ToSearchFilterParameters(_dataAccess);

            // Set cheapest prices on similar dates.
            flightSearchDataModel.CheapestPricesOnSimilarDates = await _flightManager.FindCheapestPricesOnSimilarDatesAsync(searchFilterParameters, 2);

            // Set outbound flight list.
            List <Flight> outboundFlights = await _flightManager.FindOutboundFlightsAsync(searchFilterParameters);

            foreach (var flight in outboundFlights)
            {
                // Loop through and price each flight then add it to model list.
                flightSearchDataModel.OutboundFlights.Add(await flight.PriceFlightAsync(flightSearchDataModel, _priceCalculator));
            }

            // Set inbound flight list.
            if (flightSearchDataModel.ReturnFlight == true)
            {
                // Flight is return flight.
                List <Flight> inboundFlights = await _flightManager.FindInboundFlightsAsync(searchFilterParameters);

                foreach (var flight in inboundFlights)
                {
                    // Loop through and price each flight then add it to model list.
                    flightSearchDataModel.InboundFlights.Add(await flight.PriceFlightAsync(flightSearchDataModel, _priceCalculator));
                }
            }
            else
            {
                // Not a return flight.
                flightSearchDataModel.InboundFlights = null;
            }
        }