Exemple #1
0
        public async Task <ActionResult> SelectedFlights(string outboundRadioGroup, string inboundRadioGroup)
        {
            // Try to get FlightSearchDataModel from session data.
            var searchData = (FlightSearchDataModel)Session["searchData"];

            SelectedFlights selectedFlights;

            bool parseOK = TryParseFlightIds(outboundRadioGroup, inboundRadioGroup, out selectedFlights);

            // Flight ids could not be parsed or search data from session is null.
            if ((parseOK == false) || (searchData is null))
            {
                return(RedirectToAction("Index", "Search"));
            }

            // Map data to selected flights object.
            selectedFlights.NumberAdults   = searchData.NumberAdults;
            selectedFlights.NumberChildren = searchData.NumberChildren;
            selectedFlights.TravelClass    = searchData.TravelClass;

            await CalculatePriceAsync(selectedFlights);


            SelectedFlightsModel selectedFlightsModel = await selectedFlights.ToSelectedFlightsModel(_calculator);

            // Add SelectedFlightsModel object to session data.
            Session.Add("selectedFlightsModel", selectedFlightsModel);

            return(View(selectedFlightsModel));
        }
        /// <summary>
        /// Convert this SelectedFlightsModel to a SelectedFlights object.
        /// </summary>
        /// <param name="model">The SelectedFlightsModel to convert.</param>
        public static SelectedFlights ToSelectedFlights(this SelectedFlightsModel model)
        {
            var output = new SelectedFlights
            {
                Outbound       = model.Outbound.Flight,
                NumberAdults   = model.NumberAdults,
                NumberChildren = model.NumberChildren,
                TravelClass    = model.TravelClass,
                Price          = model.TotalPrice
            };

            if (model.IsReturn)
            {
                output.Inbound = model.Inbound.Flight;
            }

            return(output);
        }