/// <summary> /// Books a site reservation /// </summary> /// <param name="sites">List of available sites</param> /// <param name="arrivalDate">Arrival date for the reservation</param> /// <param name="departureDate">Departure date for the reservation</param> private void BookReservation(IList <Site> sites, DateTime arrivalDate, DateTime departureDate) { int siteIndex = -1; do { int siteNumber = CLIHelper.GetInteger("Which site should be reserved (enter 0 to cancel)? "); if (siteNumber == 0) { Console.Clear(); return; } siteIndex = sites.IndexOf(sites.Where(x => x.SiteNumber == siteNumber).FirstOrDefault()); } while (siteIndex < 0); string name = CLIHelper.GetString("What name should the reservation be made under? "); int reservationId = reservationDAO.AddReservation(sites[siteIndex].SiteId, name, arrivalDate, departureDate); Console.WriteLine("".PadRight(lineWidth, lineChar)); if (reservationId > 0) { Console.WriteLine("The reservation has been made and the confirmation id is {" + reservationId + "}.\n"); } else { Console.WriteLine("An error occurred making the reservation."); } Console.WriteLine("Press any key to return to the previous menu"); Console.ReadKey(); }
/// <summary> /// Shows 5 campsites available for the user to select and reserve. /// Checks if the campground is open and if the dates. /// Prompts if the site is fully reserved. /// </summary> /// <param name="campgroundId"></param> /// <param name="arrivalDate"></param> /// <param name="departureDate"></param> private void ShowReservationResults(int campgroundId, DateTime arrivalDate, DateTime departureDate) { List <Site> availableSites = siteDAO.GetTop5AvailableSites(campgroundId, arrivalDate, departureDate); Campground campground = campgroundDAO.GetCampground(campgroundId); //Check that the selected campground is open for the requested dates (eg. no winter closures) bool campgoundOpen = campground.IsCampgroundOpen(arrivalDate, departureDate); if (!campgoundOpen) { Console.WriteLine($"Campground is open between {campground.DisplayMonths(campground.OpenMonths)} and {campground.DisplayMonths(campground.ClosedMonths)}. Please choose a date range within that timeframe. Thank you!"); Console.WriteLine("Press enter to continue..."); Console.ReadLine(); return; } // Check that sites are available in database bool isAvailable = siteDAO.HasAvailableSites(campgroundId, arrivalDate, departureDate); if (!isAvailable) { Console.WriteLine($"The date range preferred {arrivalDate}-{departureDate} is not available. Please make another selection."); } else { //Display 5 available sites with details Console.WriteLine($"Results Matching your Search Criteria"); Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost"); foreach (Site site in availableSites) { //TODO: The 3 methods IsSiteAccessible(site), MaxRVLength(site), UtilitiesAvailable(site) are just text formatting. I'd like to change these to simple ternary expressions Console.WriteLine(" {0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5:C}", site.SiteId, site.MaxOccupancy, IsSiteAccessible(site), MaxRVLength(site), UtilitiesAvailable(site), campground.TotalStayCost(arrivalDate, departureDate)); } //User to choose a site to reserve Console.WriteLine($" Which site whould be reserved (enter 0 to cancel)?"); string response = Console.ReadLine(); int campsite = int.Parse(response); if (campsite == 0) { return; } //Get reservation details Console.WriteLine($" What name should the reservation be made under?"); string reservationName = Console.ReadLine(); //Add reservation to database int reservationId = reservationDAO.AddReservation(NewReservation(campsite, reservationName, arrivalDate, departureDate)); //Let user know their reservation is confirmed Console.WriteLine($" The reservation has been made and the confirmation id is {reservationId}. Thank you for booking with us!"); Console.WriteLine(" Press ENTER to continue..."); Console.ReadLine(); } }
public IActionResult Reservation(ReservationUserViewModel vm) { if (vm.InvitedUser.Username == null) { return(RedirectToAction("Reservation", "Reservation")); } var user = authProvider.GetCurrentUser(); vm.User = userDAL.GetUserById(user.Id); vm.InvitedUser = userDAL.GetUser(vm.InvitedUser.Username); vm.Reservation.StartTime = vm.Reservation.StartTime.AddHours(vm.StartHour); vm.Reservation.StartTime = vm.Reservation.StartTime.AddMinutes(vm.StartMinute); vm.Reservation.EndTime = vm.Reservation.EndTime.AddHours(vm.EndHour); vm.Reservation.EndTime = vm.Reservation.EndTime.AddMinutes(vm.EndMinute); reservationDAO.AddReservation(vm); return(RedirectToAction("UserHome", "Account")); }
private void ShowReservationResults(int campground, DateTime arrivalDate, DateTime departureDate) { List <Site> availableSites = siteDAO.GetTop5AvailableSites(campground, arrivalDate, departureDate); List <Campground> campgrounds = campgroundDAO.GetCampgrounds(); Campground campground1 = new Campground(); bool campgoundOpen = campground1.IsCampgroundOpen(arrivalDate, departureDate); if (!campgoundOpen) { Console.WriteLine($"Campground is open between {campground1.DisplayMonths(campground1.OpenMonths)} and {campground1.DisplayMonths(campground1.ClosedMonths)}. Please choose a date range within that timeframe. Thank you!"); Console.WriteLine("Press enter to continue..."); Console.ReadLine(); return; } bool isAvailable = siteDAO.HasAvailableSites(campground, arrivalDate, departureDate); if (!isAvailable) { Console.WriteLine($"The date range preferred {arrivalDate}-{departureDate} is not available. Please make another selection."); } else { Console.WriteLine($"Results Matching your Search Criteria"); Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost"); foreach (Campground camp in campgrounds) { if (campground == camp.Id) { campground1 = camp; break; } else { continue; } } foreach (Site site in availableSites) { Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5:C}", site.SiteId, site.MaxOccupancy, IsSiteAccessible(availableSites), MaxRVLength(availableSites), UtilitiesAvailable(availableSites), campground1.TotalStayCost(arrivalDate, departureDate)); } Console.WriteLine($"Which site whould be reserved (enter 0 to cancel)?"); string response = Console.ReadLine(); int campsite = int.Parse(response); if (campsite == 0) { return; } Console.WriteLine($"What name should the reservation be made under?"); string reservationName = Console.ReadLine(); int reservationId = reservationDAO.AddReservation(NewReservation(campsite, reservationName, arrivalDate, departureDate)); Console.WriteLine($"The reservation has been made and the confirmation id is {reservationId}. Thank you for booking with us!"); Console.WriteLine("Press ENTER to continue..."); Console.ReadLine(); } }
public void ReserveSpaceMenu(int menuID) { Console.WriteLine(); Console.Write("When do you need the space? (Use MM/DD/YYYY format) "); DateTime reservationStartDate = Convert.ToDateTime(Console.ReadLine()); Console.Write("How many days will you need the space? "); int reservationDuration = Convert.ToInt32(Console.ReadLine()); Console.Write("How many people will be in attendance? "); int numberOfGuests = Convert.ToInt32(Console.ReadLine()); DateTime reservationEndDate = Reservation.CalculateReservationDepartureDate(reservationStartDate, reservationDuration); IList <Space> availableSpaces = spaceDAO.GetAvailableSpaces(menuID, reservationStartDate, reservationEndDate, numberOfGuests); if (availableSpaces.Count > 0) { Console.WriteLine(); Console.WriteLine("The following spaces are available based on your needs:"); Console.WriteLine(); Console.WriteLine("Space #".PadRight(10) + "Name".PadRight(27) + "Daily Rate".PadRight(20) + "Max Occupancy".PadRight(15) + "Accessible?".PadRight(15) + "Total Cost"); Console.WriteLine("------------------------------------------------------------------------------------------"); foreach (Space space in availableSpaces) { Console.WriteLine($"{space.SpaceAvailabilityToString(reservationDuration)}"); } Console.WriteLine(); string selectedAvailableSpace = ""; Console.WriteLine("Which space would you like to reserve?"); Console.WriteLine("(Or enter 0 to cancel reservation)"); selectedAvailableSpace = Console.ReadLine(); Console.WriteLine(); while (selectedAvailableSpace != "0") { Console.WriteLine("Please enter a name for the reservation"); string reservationName = Console.ReadLine(); int spaceMenuID = int.Parse(selectedAvailableSpace); if (reservationDAO.AddReservation(spaceMenuID, numberOfGuests, reservationStartDate, reservationEndDate, reservationName)) { PrintReservationConfirmation(spaceMenuID, reservationName, numberOfGuests, reservationStartDate, reservationDuration); } else { Console.WriteLine("There was an error with your reservation submission. Please try again."); } return; } } else { Console.WriteLine(); Console.WriteLine("There are no available spaces, please try again."); Console.ReadLine(); } }
// Search for and/or make site reservations public void SearchReservations() { selectedCampgroundId = 0; selectedCampgroundName = ""; selectedCampgroundCost = 0; //Search for Available Reservation Console.Clear(); IList <Campground> campInfo = campgroundDAO.ReadToListCampground(selectedParkId); Console.WriteLine("Park Campgrounds"); Console.WriteLine(); Console.WriteLine(selectedParkName + " National Park Campgrounds"); Console.WriteLine(); Console.WriteLine("{0,-40}{1,-15}{2,-15}{3,-15}", "Name", "Open", "Close", "Daily Fee"); for (int i = 0; i < campInfo.Count; i++) { Console.WriteLine("{0,-40}{1,-15}{2,-15}{3,-15:C}", i + 1 + ") " + campInfo[i].Name, CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(campInfo[i].OpenFrom), CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(campInfo[i].OpenTo), campInfo[i].DailyFee); } Console.WriteLine(); string inputCampground = CLIHelper.GetString("Select a campground (enter Q to quit and return to main menu)"); if (inputCampground.ToUpper() == "Q") { Console.Clear(); RunParkMenu(); } try { int pInputCampground = int.Parse(inputCampground) - 1; selectedCampgroundId = campInfo[pInputCampground].CampgroundId; selectedCampgroundName = campInfo[pInputCampground].Name; selectedCampgroundCost = campInfo[pInputCampground].DailyFee; } catch (Exception) { Console.WriteLine("Not a valid campground; please press any key to try again"); Console.ReadLine(); SearchReservations(); } bool datesAreValid = false; while (!datesAreValid) { Console.WriteLine(); inputStartDate = CLIHelper.GetDate("What is the arrival date? (mm/dd/yyyy): "); inputEndDate = CLIHelper.GetDate("What is the departure date? (mm/dd/yyyy): "); // Calculate number of days for reservation numDays = inputEndDate.Subtract(inputStartDate); intDays = numDays.TotalDays; if (inputStartDate < DateTime.Now) { Console.WriteLine(); Console.WriteLine("Arrival/departure dates must be in the future. We do not have time-traveling capabilities.\nPlease try new dates."); } else if (intDays < 1) { Console.WriteLine(); Console.WriteLine("Departure date must be after arrival date. \nPlease try new dates."); } else { datesAreValid = true; } } // Display results matching search IList <Site> siteAvailList = siteDAO.ReadToListSite(selectedCampgroundId, inputStartDate, inputEndDate); Console.Clear(); Console.WriteLine("Results Matching Your Search Criteria"); Console.WriteLine(); if (siteAvailList.Count == 0) { Console.WriteLine("No sites are available for your dates. Would you like to enter alternate dates? Y/N"); string yesOrNo; bool isValid = false; do { yesOrNo = Console.ReadLine(); if (yesOrNo.ToUpper() != "Y" && yesOrNo.ToUpper() != "N") { Console.WriteLine("Please enter Y or N."); } else { isValid = true; } }while (!isValid); if (yesOrNo.ToUpper() == "N") { Console.Clear(); RunParkMenu(); } else if (yesOrNo.ToUpper() == "Y") { SearchReservations(); } } else { string totalCost = $"Total Cost for {intDays} Days"; Console.WriteLine("{0,-40}{1,-13}{2,-15}{3,-15}{4,-15}{5,-25}{6,-10}", "Campground", "Site No.", "Max Occup.", "Accessible?", "RV Length", "Utilities Available?", totalCost); List <int> validSiteIds = new List <int>(); foreach (Site slot in siteAvailList) { decimal campTotal = selectedCampgroundCost * (decimal)intDays; Console.WriteLine("{0,-40}{1,-13}{2,-15}{3,-15}{4,-15}{5,-25}{6,-10:C}", selectedCampgroundName, +slot.SiteId, slot.MaxOccupancy, slot.Accessible, slot.MaxRvLength, slot.Utilities, campTotal); validSiteIds.Add(slot.SiteId); } // check input against site numbers in the list bool inputInvalid = true; while (inputInvalid) { Console.WriteLine(); inputSiteReserve = CLIHelper.GetInteger("Which site should be reserved? Enter site number from above list or 0 to start over: "); if (inputSiteReserve == 0) { SearchReservations(); break; } else if (validSiteIds.Contains(inputSiteReserve)) { inputInvalid = false; } } inputNameReserve = CLIHelper.GetString("What name should the reservation be made under?"); // Add reservation int id = reservationDAO.AddReservation(inputNameReserve, inputSiteReserve, inputStartDate, inputEndDate); if (id != 0) { Console.Clear(); Console.WriteLine($"The reservation has been made, and the confirmation id is {id}"); } else { Console.WriteLine("Reservation unsuccessful."); //option to go back } string inputContinue = ""; while (inputContinue != "1" && inputContinue != "0") { inputContinue = CLIHelper.GetString("Enter 1 to return to the main menu or 0 to quit"); } if (inputContinue == "0") { Environment.Exit(0); } else if (inputContinue == "1") { Console.Clear(); RunParkMenu(); } } }
protected override bool ExecuteSelection(string choice) { decimal totalCost; DateTime arrivalDate; DateTime departureDate; int siteReservation; string nameReservation; int reservationID; switch (choice)// choice indicates campground { case "1": // user will get prompted for arrival and departure dates Console.WriteLine("What is your arrival date MM/DD/YYYY"); arrivalDate = DateTime.Parse(Console.ReadLine()); Console.WriteLine("What is your departure date MM/DD/YYYY"); //*****************Logic to ensure date in the future departureDate = DateTime.Parse(Console.ReadLine()); siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[0].Campground_Id); // user will see results matching their search (Sites) Console.WriteLine($"{"SiteNo.", -15} {"Max Occup.", -15} {"Accesible?", -15} {"MaxRvLength",-15} {"Utility", -15} {"Cost",-15}"); foreach (Site site in siteList) { totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[0].Daily_Fee); Console.WriteLine($"{site.Site_Number, -15} {site.Max_Occupancy, -15} {site.Accessible, -15} {site.Max_Rv_Length, -15} {site.Utilities, -15} {totalCost, -15:C}"); } Console.WriteLine("What site should be reserved (Please enter site number)?"); siteReservation = int.Parse(Console.ReadLine()); Console.WriteLine("What name should the reservation be made under?"); nameReservation = Console.ReadLine(); reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate); Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." + $"Your reservation ID is {reservationID}."); Pause(""); return(true); case "2": // user will get prompted for arrival and departure dates Console.WriteLine("What is your arrival date MM/DD/YYYY"); arrivalDate = DateTime.Parse(Console.ReadLine()); Console.WriteLine("What is your departure date MM/DD/YYYY"); departureDate = DateTime.Parse(Console.ReadLine()); siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[1].Campground_Id); // user will see results matching their search (Sites) Console.WriteLine($"{"SiteNo.",-15} {"Max Occup.",-15} {"Accesible?",-15} {"MaxRvLength",-15} {"Utility",-15} {"Cost",-15}"); foreach (Site site in siteList) { totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[1].Daily_Fee); Console.WriteLine($"{site.Site_Number,-15} {site.Max_Occupancy,-15} {site.Accessible,-15} {site.Max_Rv_Length,-15} {site.Utilities,-15} {totalCost,-15:C}"); } Console.WriteLine("What site should be reserved (Please enter site number)?"); siteReservation = int.Parse(Console.ReadLine()); Console.WriteLine("What name should the reservation be made under?"); nameReservation = Console.ReadLine(); reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate); Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." + $"Your reservation ID is {reservationID}."); Pause(""); return(true); case "3": // user will get prompted for arrival and departure dates Console.WriteLine("What is your arrival date MM/DD/YYYY"); arrivalDate = DateTime.Parse(Console.ReadLine()); Console.WriteLine("What is your departure date MM/DD/YYYY"); departureDate = DateTime.Parse(Console.ReadLine()); siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[2].Campground_Id); // user will see results matching their search (Sites) Console.WriteLine($"{"SiteNo.",-15} {"Max Occup.",-15} {"Accesible?",-15} {"MaxRvLength",-15} {"Utility",-15} {"Cost",-15}"); foreach (Site site in siteList) { totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[2].Daily_Fee); Console.WriteLine($"{site.Site_Number,-15} {site.Max_Occupancy,-15} {site.Accessible,-15} {site.Max_Rv_Length,-15} {site.Utilities,-15} {totalCost,-15:C}"); } Console.WriteLine("What site should be reserved (Please enter site number)?"); siteReservation = int.Parse(Console.ReadLine()); Console.WriteLine("What name should the reservation be made under?"); nameReservation = Console.ReadLine(); reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate); Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." + $"Your reservation ID is {reservationID}."); Pause(""); return(true); } // user will get prompted for site and name (Method to confirm **Check and Insert reservation) return(true); }