public Reservation Create(Reservation reservation)
        {
            List<Room> rooms = reservation.Rooms;
            reservation.Rooms = null;
            dbContext.Reservations.Add(reservation);
            dbContext.SaveChanges();

            reservation.Rooms = new List<Room>();

            var lastReservation = dbContext.Reservations.OrderByDescending(i => i.ReservationID).First();
            dbContext.Reservations.Attach(lastReservation);
            foreach (var item in rooms)
            {
                Room room = dbContext.Rooms.SingleOrDefault(p => p.RoomID == item.RoomID);

                dbContext.Rooms.Attach(room);
                lastReservation.Rooms.Add(room);
            }

            dbContext.SaveChanges();
            return reservation;
        }
        public ActionResult Index(ReservationStarter reservation)
        {
            Reservation r = new Reservation();
            if (reservation != null)
            {
                r.DayOfArrival = reservation.Begin;
                r.DayOfDeparture = reservation.End;

                if (r.DayOfArrival.CompareTo(DateTime.Today) < 0)
                {
                    Session["msg"] = "Day of arrival must be after today";
                    return Redirect("/");
                }

                if (r.DayOfArrival.CompareTo(r.DayOfDeparture) >= 0)
                {
                    Session["msg"] = "Day of departure must be after day of arrival.";
                    return Redirect("/");
                }
                if (reservation.NumberOfPeople <= 0)
                {
                    Session["msg"] = "At least one person is required.";
                    return Redirect("/");
                }

                List<Reservation> allReservations = reservationRepository.GetBetween(r.DayOfArrival, r.DayOfDeparture);
                List<Room> allRooms = roomRepository.GetAll();
                List<Room> reservationRooms = new List<Room>();

                foreach (var res in allReservations)
                {
                    if (res.Rooms != null)
                    {
                        foreach (var room in res.Rooms)
                        {
                            Room id = allRooms.Find(p => p.RoomID == room.RoomID);
                            allRooms.Remove(id);
                        }
                    }
                }

                int numberOfPeople = reservation.NumberOfPeople;
                while (numberOfPeople > 0)
                {
                    if (allRooms.Count > 0)
                    {
                        Room room = FindRoom(allRooms, numberOfPeople);

                        if (room == null)
                        {
                            Session["msg"] = "Could not find a Room.";
                            return Redirect("/");
                        }

                        allRooms.Remove(room);
                        reservationRooms.Add(room);

                        numberOfPeople = numberOfPeople - room.RoomSize;
                    }
                    else
                    {
                        Session["msg"] = "No rooms available for this amount of guests.";
                        return Redirect("/");
                    }
                }

                r.Rooms = reservationRooms;
                for (int i = 0; i < reservation.NumberOfPeople; i++)
                {
                    r.People.Add(new Person());
                }

                Session["newReservation"] = r;

                return RedirectToAction("NewReservation", "Reservation");
            }
            return View();
        }
 public Reservation Update(Reservation reservation)
 {
     dbContext.Entry(reservation).State = EntityState.Modified;
     dbContext.SaveChanges();
     return reservation;
 }
 public void Delete(Reservation reservation)
 {
     dbContext.Reservations.Remove(dbContext.Reservations.First(p => p.ReservationID == reservation.ReservationID));
     dbContext.SaveChanges();
 }
        public ActionResult NewReservation(Reservation reservation)
        {
            Session["newReservation"] = reservation;

            return RedirectToAction("ShowSummary");
        }