/// <summary> /// Books a reservation at site of choice. /// </summary> /// <param name="sites">A list of sites to choose from.</param> /// <param name="startDate">Start date of the reservation.</param> /// <param name="endDate">Reservation end date.</param> private void BookAReservation(List <Site> sites, DateTime startDate, DateTime endDate) { //Get user choice of site Console.WriteLine("Which site should be reserved (enter 0 to cancel) "); int input = CLIHelper.GetAnInteger(0, sites.Count); //If they chose a site number, get their name and book a reservation if (input != 0) { Console.WriteLine("What Name should the reservation be made under? "); string name = CLIHelper.GetString(); Reservation reservation = new Reservation() { SiteId = sites[input - 1].SiteId, Name = name, FromDate = startDate, ToDate = endDate }; //Log reservation in the database int resId = resDAL.MakeReservation(reservation); //Show the user their confirmation ID Console.WriteLine(); Console.WriteLine($"The Reservation has been made and your confirmation Id is {resId}"); Console.WriteLine("Press any key to continue"); Console.ReadKey(true); Console.Clear(); } }
/// <summary> /// Prints the campground menu /// </summary> /// <param name="currentPark">The park to look in</param> /// <returns>The user's input</returns> private int PrintCampgroundMenu(Park currentPark) { Console.Clear(); // Print a list Campgrounds PrintCampgroundList(currentPark); Console.WriteLine("Choose an option"); Console.WriteLine(" 1) Search for Available Reservation"); Console.WriteLine(" 2) Return to Previous Screen"); Console.WriteLine(); Console.Write(" >"); // Return the user input return(CLIHelper.GetAnInteger(Command_SearchCampgroundReservation, Command_QuitCampgroundMenu)); }
/// <summary> /// Prints the Park menu /// </summary> /// <param name="currentPark">The park to display</param> /// <returns>The user's input</returns> private static int PrintParkMenu(Park currentPark) { Console.Clear(); Console.WriteLine(currentPark.ToString()); Console.WriteLine(); Console.WriteLine("Choose an option"); Console.WriteLine(" 1) View Campgrounds"); Console.WriteLine(" 2) Search for Reservation"); Console.WriteLine(" 3) View Upcoming Reservations"); Console.WriteLine(" 4) View Current Campers"); Console.WriteLine(" 5) Return to Previous Screen"); Console.Write(" > "); // Return user input return(CLIHelper.GetAnInteger(Command_ViewCampgrounds, Command_QuitParkMenu)); }
/// <summary> /// Displays the main Menu /// </summary> /// <returns>The user's choice</returns> private static int PrintMainMenu() { Console.Clear(); Console.WriteLine("Pick a Park to View"); Console.WriteLine(); //Get a list of park objects from ParkDAL List <Park> parks = parkDAL.GetParks(); //Display each park name, and the quit option for (int i = 1; i <= parks.Count; i++) { Console.WriteLine($" {i}) {parks[i - 1].Name}"); } Console.WriteLine($" {parks.Count + 1}) Quit"); Console.WriteLine(); Console.Write(" > "); // Return the user's input return(CLIHelper.GetAnInteger(1, parks.Count + 1)); }
/// <summary> /// Preforms a search for campsites available to be reserved /// </summary> /// <param name="currentPark">The park to find a reservation in.</param> /// <param name="fromWholePark">Option to search through all campgrounds in the specified Park.</param> private void SearchForReservation(Park currentPark, bool fromWholePark) { Console.Clear(); //Initialize working variables List <Campground> campgrounds = campDAL.GetCampgrounds(currentPark); List <Site> sites = new List <Site>(); DateTime startDate = DateTime.MinValue; DateTime endDate = DateTime.MinValue; int input = -1; bool continueSearching = true; do { //If the reservation is for a specific campground if (!fromWholePark) { campgrounds = campDAL.GetCampgrounds(currentPark); Console.WriteLine($"Campgrounds in {currentPark.Name}"); PrintCampgroundList(currentPark); //Print list of campgrounds in park to screen //Ask for user choice Console.Write("Which Campground (enter 0 to cancel)? "); input = CLIHelper.GetAnInteger(0, campgrounds.Count); //If User chose a campground, make the list only contain their choice if (input != 0) { campgrounds = new List <Campground>() { campgrounds[input - 1] }; } } //initialize advanced search criteria if (input != 0) { int occupants = 1; bool isAccessible = false; int RVLength = 0; bool hasUtilities = false; //Get reservation dates in correct format Console.Write(">Enter a Start Date for Reservation: "); startDate = CLIHelper.GetDateTime(DateTime.Now.Date); Console.Write(">Enter a Departure Date for Reservation: "); endDate = CLIHelper.GetDateTime(startDate); //Ask user for optional advanced search Console.Write("Would You Like to Preform an Advanced Search? (Y/N): "); bool isAdvancedSearch = CLIHelper.GetBoolean(); //Get user specified advanced search criteria if (isAdvancedSearch) { Console.WriteLine(); Console.Write("How many occupants: "); occupants = CLIHelper.GetAnInteger(1, 55); Console.Write("Do you need Wheelchair Accessiblity? (Y/N): "); isAccessible = CLIHelper.GetBoolean(); Console.Write("How long is your RV? (Enter 0 if not applicable): "); RVLength = CLIHelper.GetAnInteger(0, 35); Console.Write("Utilities Required? (Y/N): "); hasUtilities = CLIHelper.GetBoolean(); } //Print a list of sites that match the search criteria sites = PrintSiteList(startDate, endDate, campgrounds, occupants, isAccessible, RVLength, hasUtilities); //if there are no sites ask to try again or quit if (sites.Count == 0) { Console.Clear(); Console.WriteLine("No Available Sites per Your Specifications."); Console.Write("Would You Like to Try Again? (Y/N): "); continueSearching = CLIHelper.GetBoolean(); Console.WriteLine(); } } //Loop while the search return empty and user has not chosen to continue/quit } while (sites.Count == 0 && input != 0 && continueSearching); //Book a reservation if sites were found if (sites.Count != 0) { BookAReservation(sites, startDate, endDate); } }