/// <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; } }