/// <summary>
        /// Runs the menu
        /// </summary>
        public override void Run()
        {
            IList <Campground> campgrounds = campgroundDAO.GetCampgrounds(park.Id);

            this.CampgroundMenuHeader(campgrounds);
            DisplayCampgroundOptions();

            while (true)
            {
                int userInput = GetInteger("Pick One:", 0, campgrounds.Count);

                if (userInput == 1)
                {
                    this.CampgroundMenuHeader(campgrounds);

                    int selectedCampground = GetInteger("Which campground (enter 0 to cancel)?", -1, campgrounds.Count);
                    if (selectedCampground == 0)
                    {
                        break;
                    }

                    DateTime arrivalDate   = GetDate("What is the arrival date (mm/dd/yyyy)?");
                    DateTime departureDate = GetDate("What is the departure date (mm/dd/yyyy)?");
                    Console.WriteLine();

                    // List of all Avaiable sites
                    IList <Site> sites = this.siteDAO.GetSites(campgrounds[selectedCampground - 1].Id, arrivalDate, departureDate);

                    // Displays site results
                    Console.WriteLine("Site No.".PadRight(SitePad) + "Max Occup.".PadRight(SitePad) + "Accessible?".PadRight(SitePad) + "Max RV Length".PadRight(SitePad) + "Utilty".PadRight(SitePad) + "Cost");
                    foreach (Site site in sites)
                    {
                        decimal cost = campgroundDAO.GetCampingCost(campgrounds[selectedCampground - 1].DailyFee, arrivalDate, departureDate);
                        Console.WriteLine($"{site.SiteNumber, -SitePad}{site.MaxOccupancy, -SitePad}{site.Accessible, -SitePad}{site.MaxRVLength, -SitePad}{site.Utilities, -SitePad}{cost:C2}");
                    }

                    // Book reservation
                    Console.WriteLine();
                    int    siteNumber      = GetInteger("Which site should be reserved (enter 0 to cancel)?");
                    string reservationName = GetString("What name should the reservation be made under?");

                    reservationDAO.GetReservations(sites[siteNumber - 1].SiteId);
                    Reservation newReservation = Reservation.CreateReservation(sites[siteNumber - 1].SiteId, arrivalDate, departureDate, reservationName);
                    int         reservationId  = reservationDAO.BookResrevation(newReservation);

                    Console.Write($"The reservation has been made and the confirmation id is {reservationId}");
                    Console.ReadLine();
                    CampgroundMenuHeader(campgrounds);
                    DisplayCampgroundOptions();
                }
                else if (userInput == 2)
                {
                    break;
                }
                else
                {
                    InvalidInput();
                }
            }
        }