static void Main(string[] args) { // Get the connection string from the appsettings.json file IConfigurationBuilder builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); IConfigurationRoot configuration = builder.Build(); string connectionString = configuration.GetConnectionString("npcampground"); IParksDAO parksDAO = new ParksSqlDAO(connectionString); ICampgroundDAO campgroundDAO = new CampgroundSqlDAO(connectionString); ISiteDAO siteDAO = new SiteSqlDAO(connectionString); IReservationDAO reservationDAO = new ReservationSqlDAO(connectionString); MainCLI mainCLI = new MainCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); ParkCLI parkCLI = new ParkCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); CampGroundCLI campGroundCLI = new CampGroundCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); SiteCLI siteCLI = new SiteCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); mainCLI.RunMainMenuCLI(); }
/// <summary> /// Runs menu to give user a choice of parks. /// </summary> public void RunParkCLI() { Console.Clear(); PrintHeader(); GetAllParks(); PrintParkChoices(); while (true) { string userChoice = Console.ReadLine(); IList <Park> parks = parksDAO.GetAllParks(); foreach (Park park in parks) { string parkIdString = park.ParkId.ToString(); if (userChoice == parkIdString) { CampGroundCLI campGroundCLI = new CampGroundCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); campGroundCLI.RunCampGroundCLI(park.Name, park.ParkId); } else { switch (userChoice.ToLower()) { case "p": Console.Clear(); RunMainMenuCLI(); break; default: Console.WriteLine("The command provided was not a valid command, please try again.", Color.OrangeRed); break; } } } } }
/// <summary> /// Runs menu to give user a choice of sites from the choosen campground. /// </summary> /// <param name="parkName"></param> /// <param name="parkId"></param> /// <param name="campgroundId"></param> /// <param name="campgroundName"></param> /// <param name="dailyFee"></param> /// <param name="fromDate"></param> /// <param name="toDate"></param> public void RunSiteCLI(string parkName, int parkId, int campgroundId, string campgroundName, decimal dailyFee, DateTime fromDate, DateTime toDate) { userParkName = parkName; userParkId = parkId; userCampgroundID = campgroundId; userCampgroundName = campgroundName; userDailyFee = dailyFee; userFromDate = fromDate; userToDate = toDate; Console.Clear(); PrintHeader(); GetSiteList(); while (true) { string userChoice = Console.ReadLine(); IList <Site> sites = siteDAO.Search(userCampgroundID, userFromDate, userToDate); foreach (Site site in sites) { siteIdString = site.SiteId.ToString(); if (userChoice == siteIdString) { int totalDays = HowManyDays(userFromDate, userToDate); decimal totalCost = totalDays * userDailyFee; string apptConfirm = CLIHelper.GetString($"Your total is {totalCost:C}, would you like to confirm your reservation. (Y)es or (N): "); bool confirmAppointment; if (apptConfirm == "y") { confirmAppointment = true; } else { confirmAppointment = false; } if (confirmAppointment == true) { reservationName = CLIHelper.GetString("What name would you like to make your reservation under?: "); reservationDAO.MakeReservation(userFromDate, userToDate, reservationName, site.SiteId); PrintConfirmationPage(); } else { // Temporary for tonight Console.WriteLine("Fine Then!"); Console.ReadLine(); } } } switch (userChoice.ToLower()) { case "p": Console.Clear(); CampGroundCLI campgroundCLI = new CampGroundCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); campgroundCLI.RunCampGroundCLI(parkName, parkId); break; default: Console.WriteLine("The command provided was not a valid command, please try again."); break; } } }
/// <summary> /// Retrieves all sites from the db and displays Top 5 on the screen. /// </summary> private void GetSiteList() { int totalDays = HowManyDays(userFromDate, userToDate); totalCost = totalDays * userDailyFee; IList <Site> sites = siteDAO.Search(userCampgroundID, userFromDate, userToDate); { Console.WriteLine(); Console.WriteLine($" {userCampgroundName} |Total Price for {totalDays} Days| {totalCost:C} ", Color.Yellow); Console.WriteLine("___________________________________________________________________________________________________________________________________________________________________________", Color.DimGray); string menu = " [ {0} ] [ {1} ] [ {2} ] [ {3} ] [ {4} ] [ {5} ] "; Formatter[] fruits = new Formatter[] { new Formatter("Site ID", Color.WhiteSmoke), new Formatter("Maximum Occupancy", Color.WhiteSmoke), new Formatter("OHandicap Accessible", Color.WhiteSmoke), new Formatter("Maximum RV Length", Color.WhiteSmoke), new Formatter("Utilities Available", Color.WhiteSmoke), new Formatter("Campsite Number", Color.WhiteSmoke), }; Console.WriteFormatted(menu, Color.Yellow, fruits); Console.WriteLine(); Console.WriteLine("___________________________________________________________________________________________________________________________________________________________________________", Color.DimGray); if (sites.Count == 0) { Console.WriteLine("--------------------------------------------------- Sorry, no sites are available for the provided dates ---------------------------------------------------", Color.OrangeRed); PrintNoSitesAvailableChoices(); while (true) { string userChoice = Console.ReadLine(); switch (userChoice.ToLower()) { case "p": CampGroundCLI campGroundCLI = new CampGroundCLI(parksDAO, campgroundDAO, siteDAO, reservationDAO); campGroundCLI.RunCampGroundCLI(userParkName, userParkId); break; case "m": RunMainMenuCLI(); return; default: Console.WriteLine("The command provided was not a valid command, please try again.", Color.OrangeRed); break; } } } else { foreach (Site site in sites) { string isAccessible = (site.Accesible == true) ? isAccessible = "Yes" : isAccessible = "No"; string hasUtilities = (site.Utilities == true) ? isAccessible = "Yes" : isAccessible = "No"; Console.WriteLine($" {site.SiteId.ToString().PadRight(25)} {site.MaxOccupants.ToString().PadRight(30)} {isAccessible.PadRight(15)} {site.MaxRvLength + "ft.".PadRight(30)} {hasUtilities.PadRight(20)} {site.SiteNumber} ", Color.Yellow); } Console.WriteLine("__________________________________________________________________________________________________________________________________________________________________________", Color.DimGray); PrintSiteChoices(); } } }