private void selectCampground() { bool noAdvance = true; int campID; DateTime startDate; DateTime endDate; selectPark(); do { Console.WriteLine("Which campground would you like to make a reservation for (by numeric ID)?"); string userCampID = Console.ReadLine(); Console.WriteLine("Please enter the first date of your stay(YYYY-MM-DD): "); string userStartDate = Console.ReadLine(); Console.WriteLine("Please enter the last date of your stay(YYYY-MM-DD): "); string userLastDate = Console.ReadLine(); try { campID = int.Parse(userCampID); startDate = DateTime.Parse(userStartDate); endDate = DateTime.Parse(userLastDate); noAdvance = false; IList <Site> sites = siteDAO.GetAvailableSites(campID, startDate, endDate); foreach (Site site in sites) { Console.WriteLine($"\nCampsite ID: {site.SiteNumber} \nAccessible: {site.Accessible} | Utilities: {site.Utilities} \nMax Occupancy: {site.MaxOccupancy} \nMax RV Length: {site.MaxRVLength}"); Console.WriteLine($"Total Price: {reservationDAO.GetTotalCost(startDate, endDate, site.CampgroundId):C2}"); } noAdvance = true; int siteID = 0; do { Console.Write("\nPlease select the site (by ID) you would like to stay at: "); string userSiteID = Console.ReadLine(); try { siteID = int.Parse(userSiteID); foreach (Site site in sites) { if (siteID == site.Id) { noAdvance = false; } } } catch (Exception e) { Console.WriteLine("The site ID you selected is invalid (Enter the numeric ID of the campsite)"); } }while (noAdvance); Console.Write("Please enter a name for the reservation: "); string reservationName = Console.ReadLine(); bool wasSuccessful = reservationDAO.MakeReservation(siteID, reservationName, startDate, endDate); if (wasSuccessful) { Console.WriteLine("Reservation Created Successfully!"); } else { Console.WriteLine("Reservation was not successful! A value you entered was likely invalid.\nYou may need to restart... sorry!"); } } catch (Exception e) { Console.WriteLine("The values you entered were invalid... \n*Select the campground by ID, Dates are in the format YYYY-MM-DD"); Console.WriteLine(e.Message); } }while(noAdvance); }
public void GetDates(int campgroundID, int parkID) { IList <DateTime> departArriveDates = new List <DateTime>(); IList <Site> sitesToReserve = new List <Site>(); while (true) { //DateTime fromDate; //DateTime toDate; try { Console.WriteLine("Please enter the arrival date: MM / DD / YYYY or press \"Q\" to quit"); string input = Console.ReadLine(); if (input.ToLower() == "q") { SearchForReservation(parkID); } //string fromDateString = Console.ReadLine(); DateTime fromDate = Convert.ToDateTime(input); Console.WriteLine("Please enter the departure date: MM / DD / YYYY or press \"Q\" to quit"); input = Console.ReadLine(); if (input.ToLower() == "q") { SearchForReservation(parkID); } //fromDate = Convert.ToDateTime(fromDateString); DateTime toDate = Convert.ToDateTime(input); departArriveDates.Add(fromDate); departArriveDates.Add(toDate); IList <Site> sites = siteDAO.ListSitesAtCampgroundWithinDate(campgroundID, departArriveDates); IList <Campground> campgrounds = campgroundDAO.ListCampgroundsFromPark(parkID); decimal campgroundFee = 0; if (sites.Count == 0) { Console.WriteLine("No Results. Press any key to enter an alternate date range."); Console.ReadKey(); GetDates(campgroundID, parkID); } Console.WriteLine("Results Matching Your Criteria: "); Console.WriteLine(string.Format("{0,-10}{1,-12}{2,-16}{3,-16}{4,-12}{5,-14}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost")); foreach (Site site in sites) { foreach (Campground campground in campgrounds) { if (site.CampgroundID == campground.CampgroundID) { campgroundFee = reservationDAO.GetTotalCost(campground.DailyFee, departArriveDates); } } sitesToReserve.Add(site); Console.WriteLine(string.Format("{0,-10}{1,-12}{2,-16}{3,-16}{4,-12}{5,-14}", site.SiteNumber, site.MaxOccupancy, site.Accessible, site.MaxRvLength, site.Utilities, campgroundFee.ToString("C"))); } break; } catch (Exception e) { Console.WriteLine(e.Message); } } GetReservation(departArriveDates, sitesToReserve); }