public ActionResult New()
        {
            var lightFlightPaths = InitializeFlightPaths();
            var lightStarships   = InitializeStarships();

            var viewModel = new ContainerFlightFormViewModel(new FlightFormViewModel(), lightFlightPaths, lightStarships);

            return(View("FlightForm", viewModel));
        }
        public ActionResult Edit(int?id)
        {
            if (!id.HasValue)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var flight = flightRepository.GetSingleFlight(id ?? (int)InvalidPropertyValues.undefinedValue);

            if (flight == null)
            {
                return(HttpNotFound());
            }

            var lightFlightPaths = InitializeFlightPaths();
            var lightStarships   = InitializeStarships();

            var viewModel = new ContainerFlightFormViewModel(new FlightFormViewModel(flight), lightFlightPaths, lightStarships);

            return(View("FlightForm", viewModel));
        }
        public ActionResult Save(FlightFormViewModel flightFormViewModel)
        {
            if (!ModelState.IsValid)
            {
                var lightFlightPaths = InitializeFlightPaths();
                var lightStarships   = InitializeStarships();

                var viewModel = new ContainerFlightFormViewModel(flightFormViewModel, lightFlightPaths, lightStarships);
                return(View("FlightForm", viewModel));
            }

            Flight flightToDB;

            if (flightFormViewModel.FlightId == 0)
            {
                var starship = starshipRepository.GetSingleStarship(flightFormViewModel.StarshipId);
                flightToDB = new Flight(flightFormViewModel.GetDateTime(), flightFormViewModel.BasePrice, flightFormViewModel.FlightPathId, starship, flightFormViewModel.IsVIP);

                flightRepository.Add(flightToDB);
            }
            else
            {
                flightToDB = flightRepository.GetSingleFlight(flightFormViewModel.FlightId);

                if (flightToDB == null)
                {
                    return(HttpNotFound());
                }

                var starship = starshipRepository.GetSingleStarship(flightFormViewModel.StarshipId);
                flightToDB.Update(flightFormViewModel.GetDateTime(), flightFormViewModel.BasePrice, null, starship, null);
            }

            unitOfWork.Complete();

            InformViewsForCreateOrEdit(flightToDB, flightFormViewModel.FlightId);

            return(RedirectToAction("Index", "Flight"));
        }