コード例 #1
0
        public async Task <IActionResult> Create(CreateFlightViewModel model)
        {
            if (ModelState.IsValid)
            {
                var airplane = await _airplaneRepository.GetAirplaneWithUserAsync(model.AirplaneId);

                if (airplane == null)
                {
                    return(NotFound());
                }

                // Verificar a disponibilidade do avião ( É visto na tebela dos voos - Enviando o id do avião)
                bool isAvailable = _flightRepository.AirplaneIsAvailable(model.AirplaneId, model.Departure, model.Arrival);

                // Obter o state active
                var status = _context.Status.Where(x => x.StatusName == "Active").FirstOrDefault();

                var to = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.To);

                var from = await _destinationRepository.GetDestinationWithUserCityAndCoutryAsync(model.From);

                if (isAvailable)
                {
                    Flight flight = new Flight()
                    {
                        From      = from,
                        To        = to,
                        Departure = model.Departure,
                        Arrival   = model.Arrival,
                        Airplane  = airplane,
                        Status    = status,
                        Business  = airplane.BusinessSeats,
                        Economic  = airplane.EconomySeats,
                    };

                    try
                    {
                        await _flightRepository.CreateAsync(flight);

                        return(RedirectToAction(nameof(Index)));
                    }

                    catch (Exception ex)
                    {
                        ModelState.AddModelError(string.Empty, ex.InnerException.Message);
                        GetCombos(model);
                        ViewBag.minDate   = DateTime.Now;
                        ViewBag.format    = "dd/MM/yyyy HH:mm";
                        ViewBag.departure = model.Departure;
                        ViewBag.arrival   = model.Arrival;

                        return(View(model));
                    }
                }

                GetCombos(model);
                ModelState.AddModelError(string.Empty, "Airplane isn't available. Choose another!");
                return(View(model));
            }


            GetCombos(model);
            ViewBag.minDate = DateTime.Now;
            ViewBag.format  = "dd/MM/yyyy HH:mm";
            return(View(model));
        }