/// <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(); } } }