// GET: AirRoutes/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (id == Guid.Empty)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AirRoute airRoute = db.AirRoutes.FirstOrDefault(p => p.PublicId == id);

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

            AirRouteFormModel model = new AirRouteFormModel()
            {
                AirLineId         = airRoute.AirLineId,
                StartAirportCode  = airRoute.StartAirportCode,
                FinishAirportCode = airRoute.FinishAirportCode
            };

            ViewBag.AirLineId         = new SelectList(db.AirLines, "AirLineId", "Name", model.AirLineId);
            ViewBag.StartAirPortCode  = new SelectList(db.Airports, "Code", "Name", model.StartAirportCode);
            ViewBag.FinishAirPortCode = new SelectList(db.Airports, "Code", "Name", model.FinishAirportCode);
            return(View(model));
        }
        public ActionResult Edit(Guid?id, [Bind(Include = "AirLineId,StartAirportCode,FinishAirportCode")] AirRouteFormModel request)
        {
            try
            {
                ViewBag.AirLineId         = new SelectList(db.AirLines, "AirLineId", "Name", request.AirLineId);
                ViewBag.StartAirPortCode  = new SelectList(db.Airports, "Code", "Name", request.StartAirportCode);
                ViewBag.FinishAirPortCode = new SelectList(db.Airports, "Code", "Name", request.FinishAirportCode);

                if (id == Guid.Empty)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                if (ModelState.IsValid)
                {
                    if (request.StartAirportCode.Equals(request.FinishAirportCode))
                    {
                        return(View(request));
                    }


                    if (!db.AirLines.Where(p => p.AirLineId == request.AirLineId).Any() || !db.Airports.Where(p => p.Code.Equals(request.StartAirportCode)).Any() || !db.Airports.Where(p => p.Code.Equals(request.FinishAirportCode)).Any())
                    {
                        return(View(request));
                    }


                    AirRoute airRoute = db.AirRoutes.FirstOrDefault(p => p.PublicId == id);
                    if (airRoute == null)
                    {
                        return(HttpNotFound());
                    }

                    airRoute.AirLineId         = request.AirLineId;
                    airRoute.AirLine           = db.AirLines.Find(request.AirLineId);
                    airRoute.StartAirportCode  = request.StartAirportCode;
                    airRoute.FinishAirportCode = request.FinishAirportCode;

                    db.Entry(airRoute).State = EntityState.Modified;
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                return(View(request));
            }
            catch (Exception e)
            {
                ViewBag.AirLineId         = new SelectList(db.AirLines, "AirLineId", "Name", request.AirLineId);
                ViewBag.StartAirPortCode  = new SelectList(db.Airports, "Code", "Name", request.StartAirportCode);
                ViewBag.FinishAirPortCode = new SelectList(db.Airports, "Code", "Name", request.FinishAirportCode);
                return(View(request));
            }
        }
        public ActionResult Create([Bind(Include = "AirLineId,StartAirportCode,FinishAirportCode")] AirRouteFormModel request)
        {
            try
            {
                ViewBag.AirLineId         = new SelectList(db.AirLines, "AirLineId", "Name", request.AirLineId);
                ViewBag.StartAirportCode  = new SelectList(db.Airports, "Code", "Name", request.StartAirportCode);
                ViewBag.FinishAirportCode = new SelectList(db.Airports, "Code", "Name", request.FinishAirportCode);

                if (ModelState.IsValid)
                {
                    if (request.StartAirportCode.Equals(request.FinishAirportCode))
                    {
                        return(View(request));
                    }


                    if (!db.AirLines.Where(p => p.AirLineId == request.AirLineId).Any() || !db.Airports.Where(p => p.Code.Equals(request.StartAirportCode)).Any() || !db.Airports.Where(p => p.Code.Equals(request.FinishAirportCode)).Any())
                    {
                        return(View(request));
                    }

                    AirRoute airRoute = new AirRoute()
                    {
                        PublicId          = Guid.NewGuid(),
                        AirLineId         = request.AirLineId,
                        AirLine           = db.AirLines.Find(request.AirLineId),
                        StartAirportCode  = request.StartAirportCode,
                        FinishAirportCode = request.FinishAirportCode,
                        IsActive          = true
                    };

                    db.AirRoutes.Add(airRoute);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(request));
            }catch
            {
                ViewBag.AirLineId         = new SelectList(db.AirLines, "AirLineId", "Name", request.AirLineId);
                ViewBag.StartAirportCode  = new SelectList(db.Airports, "Code", "Name", request.StartAirportCode);
                ViewBag.FinishAirportCode = new SelectList(db.Airports, "Code", "Name", request.FinishAirportCode);
                return(View(request));
            }
        }