Beispiel #1
0
        public ActionResult Create(CreateReservationsViewModel model)
        {
            if (ModelState.IsValid)
            {
                Flight flight       = db.Flights.Find(model.Flight);
                Flight returnFlight = null;
                if (model.RoundTrip)
                {
                    returnFlight = db.Flights.Find(model.ReturnFlight);
                }
                for (int i = 0; i < model.Reservations.Count; ++i)
                {
                    Reservation reservation = model.Reservations.ElementAt(i);
                    reservation.RoundTrip    = model.RoundTrip;
                    reservation.FirstFlight  = flight;
                    reservation.SecondFlight = returnFlight;
                    reservation.AccountEmail = User.Identity.GetUserName();
                    reservation.FirstLuggage = db.Luggages.Find(model.Luggages.ElementAt(i));
                    flight.NumOfFreeSeats--;
                    if (model.RoundTrip)
                    {
                        reservation.SecondLuggage = db.Luggages.Find(model.ReturnLuggages.ElementAt(i));
                        returnFlight.NumOfFreeSeats--;
                        db.Entry(returnFlight).State = EntityState.Modified;
                    }
                    db.Entry(flight).State = EntityState.Modified;
                    db.Reservations.Add(reservation);
                    db.SaveChanges();
                }
                return(RedirectToAction("MyReservations"));
            }

            Session.Remove("model");
            return(View(model));
        }
Beispiel #2
0
        // GET: Reservations/Create
        public ActionResult Create()
        {
            BeginReservationsViewModel model = (BeginReservationsViewModel)Session["model"];

            if (model == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            CreateReservationsViewModel newModel = new CreateReservationsViewModel();

            //newModel.PartialModel = model;
            newModel.RoundTrip = model.RoundTrip;
            //newModel.NumPassengers = model.Passengers;
            newModel.Reservations   = new List <Reservation>(model.Passengers);
            newModel.Luggages       = new List <int>(model.Passengers);
            newModel.ReturnLuggages = new List <int>(model.Passengers);

            for (int i = 0; i < model.Passengers; ++i)
            {
                Reservation res = new Reservation();
                res.RoundTrip = model.RoundTrip;
                newModel.Reservations.Add(res);

                newModel.Luggages.Add(0);
                newModel.ReturnLuggages.Add(0);
            }

            DateTime departure  = DateTime.Parse(model.Departure, CultureInfo.CreateSpecificCulture("en-US"));
            DateTime returnDate = new DateTime(0);

            if (model.RoundTrip)
            {
                returnDate = DateTime.Parse(model.Return, CultureInfo.CreateSpecificCulture("en-US"));
            }

            IEnumerable <Flight> flights = (from f in db.Flights.Where(x => x.AirportFrom.Id.Equals(model.AirportFrom))
                                            .Where(x => x.AirportTo.Id.Equals(model.AirportTo))
                                            .Where(x => DbFunctions.TruncateTime(x.Departure) == departure)
                                            .Where(x => x.NumOfFreeSeats >= model.Passengers)
                                            .ToList()
                                            select f);

            ViewBag.f = flights;

            IEnumerable <Flight> rflights = (from f in db.Flights.Where(x => x.AirportFrom.Id.Equals(model.AirportTo))
                                             .Where(x => x.AirportTo.Id.Equals(model.AirportFrom))
                                             .Where(x => DbFunctions.TruncateTime(x.Departure) == returnDate)
                                             .Where(x => x.NumOfFreeSeats >= model.Passengers)
                                             .ToList()
                                             select f);

            ViewBag.rf = rflights;

            IEnumerable <SelectListItem> selectListFlights =
                from s in db.Flights.Where(x => x.AirportFrom.Id.Equals(model.AirportFrom))
                .Where(x => x.AirportTo.Id.Equals(model.AirportTo))
                .Where(x => DbFunctions.TruncateTime(x.Departure) == departure)
                .Where(x => x.NumOfFreeSeats >= model.Passengers)
                .ToList()
                select new SelectListItem
            {
                Value = s.Id.ToString(),
                Text  = s.ToString()
            };

            ViewBag.Flights       = new SelectList(selectListFlights, "Value", "Text");
            ViewBag.ReturnFlights = new SelectList(new List <string>());
            if (model.RoundTrip)
            {
                IEnumerable <SelectListItem> selectListReturnFlights =
                    from s in db.Flights.Where(x => x.AirportFrom.Id.Equals(model.AirportTo))
                    .Where(x => x.AirportTo.Id.Equals(model.AirportFrom))
                    .Where(x => DbFunctions.TruncateTime(x.Departure) == returnDate)
                    .Where(x => x.NumOfFreeSeats >= model.Passengers)
                    .ToList()
                    select new SelectListItem
                {
                    Value = s.Id.ToString(),
                    Text  = s.ToString()
                };

                ViewBag.ReturnFlights = new SelectList(selectListReturnFlights, "Value", "Text");
            }

            IEnumerable <SelectListItem> selectListLuggages = from s in db.Luggages.ToList()
                                                              select new SelectListItem
            {
                Value = s.Id.ToString(),
                Text  = s.ToString()
            };

            ViewBag.Luggages = new SelectList(selectListLuggages, "Value", "Text");

            return(View(newModel));
        }