// method that displays sites availabe during the selected date range // private List <Site> ViewAvailableSites(Campground campground, DateTime arrival, DateTime departure) { SiteSqlDAL dal = new SiteSqlDAL(connectionString); List <Site> sites = dal.GetAvailableSites(campground, arrival, departure); // following 3 lines calculate the rate for the chosen span of dates // decimal rate = campground.daily_fee; int days = (arrival - departure).Days; decimal cost = rate * days; Console.WriteLine(); Console.WriteLine("Results Matching Your Search Criteria:"); Console.WriteLine(); Console.WriteLine("------------------------------------------------------------------------------------------"); Console.WriteLine("| {0,2} | {1,13} | {2,20} | {3,14} | {4,13} | {5,9} |", $"ID", $"Max Occupancy", $"Handicap Accessible", $"Max RV Length", $"Has Utilities", $"Cost"); Console.WriteLine("------------------------------------------------------------------------------------------"); if (sites.Count > 0) { for (int i = 0; i < sites.Count; i++) { Console.WriteLine("| {0,2} | {1,13} | {2,20} | {3,14} | {4,13} | {5,9} |", $"{i + 1}", $"{sites[i].max_occupancy.ToString()}", $"{sites[i].acessible.ToString()}", $"{sites[i].max_rv_length.ToString()}", $"{sites[i].utilities.ToString()}", $"{cost.ToString("C")}"); } } else { Console.WriteLine("**** NO RESULTS ****"); } Console.WriteLine("------------------------------------------------------------------------------------------"); return(sites); }
public void GetAvailableSites_AdjacentToNext_IsAvailable() { using (TransactionScope transaction = new TransactionScope()) { // Arrange ManualInitialize(); SiteSqlDAL testClass = new SiteSqlDAL(connectionString); DateTime testStartDate = new DateTime(2000, 6, 10).Date; DateTime testEndDate = new DateTime(2000, 6, 20).Date; DateTime conflictStartDate = new DateTime(2000, 6, 20).Date; DateTime conflictEndDate = new DateTime(2000, 6, 30).Date; ReservationSqlDAL rDal = new ReservationSqlDAL(connectionString); Reservation tempReservation = new Reservation(); tempReservation.Site_Id = siteId; tempReservation.Name = "TEMP RESERVATION"; tempReservation.From_Date = conflictStartDate; tempReservation.To_Date = conflictEndDate; rDal.AddReservation(tempReservation); // Act List <Site> availableSites = testClass.GetAvailableSites(testCamp, testStartDate, testEndDate); // Assert Assert.AreEqual(1, availableSites.Count); } }
public void SearchMenu() { Console.WriteLine(); PrintAllCampgrounds(); Console.WriteLine(); Console.Write("Which campground (enter 0 to cancel)? "); int campgroundNum; bool isNumeric = int.TryParse(Console.ReadLine(), out campgroundNum); while (!isNumeric || campgroundNum < 0) { Console.Write("Please enter a valid selection: "); isNumeric = int.TryParse(Console.ReadLine(), out campgroundNum); Console.WriteLine(); } if (campgroundNum == 0) { ParkMenu(); } else { Console.Write("What is the arrival date? "); DateTime arrivalDate = Convert.ToDateTime(Console.ReadLine()); Console.Write("What is the departure date? "); DateTime departureDate = Convert.ToDateTime(Console.ReadLine()); SiteSqlDAL siteDAL = new SiteSqlDAL(connectionString); CampgroundSqlDAL campgroundDAL = new CampgroundSqlDAL(connectionString); List <Site> siteList = siteDAL.GetAvailableSites(campgroundNum, arrivalDate, departureDate); Console.WriteLine(); Console.WriteLine("Campground".PadRight(20) + "Site No.".PadRight(15) + "Max Occup.".PadRight(15) + "Accessible?".PadRight(15) + "RV Len".PadRight(15) + "Utility".PadRight(15) + "Cost".PadRight(15)); Campground campground = campgroundDAL.GetCampground(campgroundNum); foreach (Site site in siteList) { //string siteNa = site.Campground_id.ToString(); string siteNo = site.Site_number.ToString(); string siteMO = site.Max_occupancy.ToString(); string siteA = site.Accessible.ToString(); string siteMRV = site.Max_rv_length.ToString(); string siteU = site.Utilities.ToString(); string campNa = campground.Name.ToString(); int lenghtOfStay = (int)(departureDate - arrivalDate).TotalDays; decimal costOfStay = lenghtOfStay * campground.Daily_fee; string costOfStayString = costOfStay.ToString("C"); Console.WriteLine(campNa.PadRight(20) + siteNo.PadRight(20) + siteMO.PadRight(15) + siteA.PadRight(10) + siteMRV.PadRight(15) + siteU.PadRight(15) + costOfStayString.PadRight(5)); } ReservationMenu(arrivalDate, departureDate); } }
public void GetAvailableSitesTest() { int campgroundId = 1; List <Site> result = new List <Site>(); SiteSqlDAL sites = new SiteSqlDAL(connectionString); result = sites.GetAvailableSites(Convert.ToDateTime("2017-06-24"), Convert.ToDateTime("2017-06-25"), campgroundId); Assert.AreEqual(11, result.Count); result = sites.GetAvailableSites(Convert.ToDateTime("2017-06-13"), Convert.ToDateTime("2017-06-17"), campgroundId); Assert.AreEqual(7, result.Count); result = sites.GetAvailableSites(Convert.ToDateTime("2017-06-01"), Convert.ToDateTime("2017-07-04"), campgroundId); Assert.AreEqual(5, result.Count); }
/// <summary> /// Searches for available sites at a given campground and given timespan. /// </summary> /// <param name="campground">The campground for the search taking place.</param> private List <Site> SearchForAvailableSites(Campground campground, DateTime arrivalDate, DateTime departureDate) { List <Site> availableSites = new List <Site>(); SiteSqlDAL ssDal = new SiteSqlDAL(ConnectionString); availableSites.AddRange(ssDal.GetAvailableSites(campground, arrivalDate, departureDate)); return(availableSites); }
private bool SearchForReservationMenu(Park selectedPark) { Console.Clear(); //new ViewCampgrounds(selectedPark); SiteSqlDAL siteSqlDAL = new SiteSqlDAL(connectionString); string[] reservationInputs = ReservationInput(); if (reservationInputs[0] != "0") { bool validCampgroundId = int.TryParse(reservationInputs[0], out int campground_id); bool validFromDate = DateTime.TryParse(reservationInputs[1], out DateTime from_date); bool validToDate = DateTime.TryParse(reservationInputs[2], out DateTime to_date); if (validCampgroundId && validFromDate && validToDate) { // int campground_id = Convert.ToInt32(reservationInputs[0]); // DateTime from_date = Convert.ToDateTime(reservationInputs[1]); //DateTime to_date = Convert.ToDateTime(reservationInputs[2]); reservation.Reservation_from_date = from_date; reservation.Reservation_to_date = to_date; List <Site> availableSites = siteSqlDAL.GetAvailableSites(campground_id, from_date, to_date); foreach (Site site in availableSites) { Console.WriteLine(site.ToString() + siteSqlDAL.GetCost(campground_id, from_date, to_date)); } return(true); } else { Console.Clear(); Console.WriteLine("Invalid Input, Check Campground ID or Date Formats"); Console.WriteLine(); return(false); } } else { return(false); } }
private void MakeReservationMenu() { SiteSqlDAL siteSqlDAL = new SiteSqlDAL(connectionString); List <Site> availableSites = siteSqlDAL.GetAvailableSites(Convert.ToInt32(result[0]), reservation.Reservation_from_date, reservation.Reservation_to_date); Console.WriteLine($"Site ID:".PadRight(11) + "Site #:".PadRight(11) + "Max Occupancy:".PadRight(16) + "Wheelchair Accessible:".PadRight(25) + "Max RV Length:".PadRight(16) + "Utilities:".PadRight(14) + "Total Cost:".PadRight(10)); foreach (Site site in availableSites) { Console.WriteLine(site.ToString() + siteSqlDAL.GetCost(Convert.ToInt32(result[0]), reservation.Reservation_from_date, reservation.Reservation_to_date)); } Console.WriteLine("What site should be reserved? (enter 0 to cancel)"); bool siteInputValid = int.TryParse(Console.ReadLine(), out int siteInput); if (siteInputValid) { if (siteInput == 0) { input = "4"; return; } foreach (Site site in availableSites) { if (site.Site_id == siteInput) { reservation.Site_id = siteInput; Console.WriteLine("What name should the reservation be made under?"); reservation.Reservation_name = Console.ReadLine(); Console.WriteLine($"The reservation has been made and the confirmation id is: {BookReservation(reservation)}"); Console.WriteLine("Press enter to go to the main screen."); Console.ReadLine(); input = "1"; } } } else { Console.WriteLine("Please enter a valid input."); input = "5"; } }
public void TestListSiteDAL() { testScope = new TransactionScope(); DateTime startTime = new DateTime(2016, 08, 01); DateTime endTime = new DateTime(2016, 08, 03); ParkSqlDAL parkDAL = new ParkSqlDAL(connectionString); List <Park> park = parkDAL.GetParks(); CampgroundSqlDAL campgroundDAL = new CampgroundSqlDAL(connectionString); List <Campground> testNumberOfCampsAcadia = campgroundDAL.GetAllCampgroundFromPark(park[0]); SiteSqlDAL siteDal = new SiteSqlDAL(connectionString); List <Site> availableSites = siteDal.GetAvailableSites(testNumberOfCampsAcadia[0], startTime, endTime); Assert.IsNotNull(availableSites); Assert.IsTrue(availableSites.Count > 0); testScope.Dispose(); }
// method that inserts a reservation // private List <Site> MakeReservation(Campground campground, DateTime arrival, DateTime departure) { // opens a connection to provide a list of sites for current campground // SiteSqlDAL dal = new SiteSqlDAL(connectionString); List <Site> sites = dal.GetAvailableSites(campground, arrival, departure); // customer chooses which site they'd like to make a reservation for OR cancels // int customerSelection = CLIHelper.GetInteger("Which site should be reserved (enter 0 to cancel)?"); // customer chose to return to main menu (probably choked on total cost of trip) // if (customerSelection == 0) { Console.Clear(); ParksInterface mainmenu = new ParksInterface(); mainmenu.RunCLI(); } else if (customerSelection > sites.Count) { Console.WriteLine("That site does not exist, returning to main menu!"); Thread.Sleep(milliseconds); Console.Clear(); ParksInterface mainmenu = new ParksInterface(); mainmenu.RunCLI(); } // customer opted to make a reservation // // returns a list of all current resos, then gives customer confirmation number using last reservation_id (newest created) // else { string reservationName = CLIHelper.GetString("What name should the reservation be made under?"); int selectedSite = customerSelection - 1; DateTime now = DateTime.Now; ReservationSqlDAL resodal = new ReservationSqlDAL(connectionString); List <Reservation> result = resodal.CreateReservation(sites[selectedSite].site_id, reservationName, arrival, departure, now); Console.WriteLine($"The reservation has been made and the confirmation id is {result[result.Count - 1].reservation_id.ToString()}"); } return(sites); }
public void SearchReservation(int parkId, string commandOption) { if (commandOption == "1") { Console.WriteLine("Which campground (enter 0 to cancel)?__"); Console.WriteLine(); } else if (commandOption == "2") { Console.WriteLine("Would you like to make a reservation in this park? (any number for yes and [0] for no)?__"); Console.WriteLine(); } int inputId = int.Parse(Console.ReadLine()); if (inputId == 0) { Console.Clear(); ViewParks(); Console.WriteLine(); } else if (inputId != 0) { Console.WriteLine("What is the arrival date? __/__/____"); Console.WriteLine(); DateTime fromDate = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine(); Console.WriteLine("What is the departure date? __/__/____"); Console.WriteLine(); string stringDate = Console.ReadLine(); DateTime toDate = Convert.ToDateTime(stringDate); SiteSqlDAL newAvailSites = new SiteSqlDAL(connectionString); List <Site> sites = new List <Site>(); if (commandOption == "2") { sites = newAvailSites.GetAvailableSitesFromPark(toDate, fromDate, parkId); } else if (commandOption == "1") { sites = newAvailSites.GetAvailableSites(toDate, fromDate, inputId); } if (sites.Count == 0) { Console.Clear(); Console.WriteLine("there are no sites available. please enter an alternative date range"); SearchReservation(parkId, commandOption); } else { Console.WriteLine("{0, -20}{1, -20}{2, -20}{3, -20}{4, -20}{5, -20}", "Site Id", "Max Occup.", "Accessible", "Max RV Length", "Utility", "Cost"); foreach (Site site in sites) { Console.WriteLine("{0, -20}{1,-20}{2,-20}{3,-20}{4,-20}${5,-20:0.00}", site.SiteId, site.MaxOccupancy, site.Accessible, site.MaxRvLength, site.Utilities, site.TotalCost); } Console.WriteLine(); Console.WriteLine("Which site should be reserved (enter 0 to cancel)?__"); Console.WriteLine(); int siteId = int.Parse(Console.ReadLine()); if (siteId == 0) { Console.Clear(); ViewParks(); } Console.WriteLine(); Console.WriteLine("What name should the reservation be made under? __"); string name = Console.ReadLine(); Console.WriteLine(); ReservationSqlDAL newRes = new ReservationSqlDAL(connectionString); int reservationId = newRes.SetUpReservation(siteId, name, toDate, fromDate); Console.WriteLine($"The reservation has been made and the confirmation id is {reservationId}"); Console.WriteLine(); } } else { ViewCampGrounds(parkId); } }
public void CampGroundChoices(List <Campground> campgrounds) { Console.WriteLine("Select a campground to check for availability. Please select a number"); for (int i = 0; i < campgrounds.Count; i++) { Console.WriteLine((i + 1).ToString().PadRight(10) + campgrounds[i].Name); } int parsedUserInput = 0; while (parsedUserInput <= 0 || parsedUserInput > campgrounds.Count) { string userInput = Console.ReadLine(); Int32.TryParse(userInput, out parsedUserInput); if (parsedUserInput <= 0 || parsedUserInput > campgrounds.Count) { Console.WriteLine("Please enter a valid number"); } } Campground userCampground = campgrounds[parsedUserInput - 1]; Console.WriteLine("You Selected campground " + userCampground.Name); Console.WriteLine(); DateTime startDate = DateTime.MinValue; while (startDate < DateTime.Today) { Console.WriteLine("Please enter a valid start date (MM/DD/YYYY)"); Console.WriteLine(); string userStartDate = Console.ReadLine(); DateTime.TryParse(userStartDate, out startDate); } Console.WriteLine("Your start date is " + startDate.ToShortDateString()); Console.WriteLine(); DateTime endDate = DateTime.MinValue; while (endDate < startDate) { Console.WriteLine("Please enter a valid end date (MM/DD/YYYY)"); Console.WriteLine(); string userEndDate = Console.ReadLine(); DateTime.TryParse(userEndDate, out endDate); } Console.WriteLine("Your end date is " + endDate.ToShortDateString()); Console.WriteLine(); IReservationDAL dal = new ReservationSqlDAL(databaseConnection); List <int> numberOfSites = dal.GetTotalSites(userCampground.CampgroundId); List <Reservation> allReservations = dal.GetAllReservations(); List <int> openSites = dal.IsReservationOpen(startDate, endDate, allReservations, numberOfSites); bool isOpen = dal.IsCampgroundOpen(userCampground, startDate, endDate); if (isOpen) { IReservationDAL reservation = new ReservationSqlDAL(databaseConnection); ISiteDAL siteDAL = new SiteSqlDAL(databaseConnection); List <Site> availableSites = siteDAL.GetAvailableSites(userCampground.CampgroundId); Console.WriteLine("Available Camp Sites:"); foreach (Site camp in availableSites) { if (numberOfSites.Contains(camp.SiteId)) { Console.WriteLine("Site ID: " + camp.SiteId); Console.WriteLine("Site #" + camp.SiteNumber); Console.WriteLine(" Max Occupancy: " + camp.MaxOccupancy); Console.WriteLine(" Handicap Accessible: " + camp.yesOrNo(camp.Accessible)); Console.WriteLine(" Max RV Length: " + camp.RvLength.ToString()); Console.WriteLine(" Utilities Available: " + camp.yesOrNo(camp.HasUtilities)); Console.WriteLine(" Total Fee: " + (userCampground.DailyFee * Convert.ToInt32((endDate.Subtract(startDate)).TotalDays)).ToString("C2")); Console.WriteLine(); } else if (numberOfSites.Count == 0) { Console.WriteLine("Sorry, no camp sites are available during that time."); } } } else { Console.WriteLine("The campground is not open during that period"); } bool userInputId = false; while (userInputId == false) { Console.WriteLine("Please enter the Site ID for your desired site:"); string response = Console.ReadLine(); int userSite = 0; if (int.TryParse(response, out int result)) { userSite = int.Parse(response); } if (numberOfSites.Contains(userSite)) { userReservation.SiteId = userSite; userInputId = true; } else { Console.WriteLine("That was not a valid site number"); } } Console.WriteLine("What name would you like to book this reservation under? "); string userName = Console.ReadLine(); userReservation.Name = userName; userReservation.From_Date = startDate; userReservation.To_Date = endDate; userReservation.Create_Date = DateTime.Now; bool reservationSuccess = dal.CreateReservation(userReservation); if (reservationSuccess) { IReservationDAL dalUpdated = new ReservationSqlDAL(databaseConnection); List <Reservation> updatedReservations = dalUpdated.GetAllReservations(); Console.WriteLine("Your reservation has been successfully booked!"); Console.WriteLine("Your confirmation id is " + (updatedReservations.Count)); } }
public void ReserveCampsite(int park_id, int campground_id, DateTime arrivalDate, DateTime departureDate) { while (true) { //Gets a list of available campsites SiteSqlDAL siteSqlDal = new SiteSqlDAL(connectionString); List <Site> sites = siteSqlDal.GetAvailableSites(campground_id, arrivalDate, departureDate); //Lets user know if no sites are available based on their search terms while (sites.Count == 0) { Console.WriteLine(); Console.WriteLine("There are no available sites matching your search criteria.\nPress any Key to Continue."); Console.ReadKey(); Console.Clear(); SearchMenu(park_id); } //Create a reservation to pass into DAL methods, assign to and from times Reservation currentReservation = new Reservation(); currentReservation.From_Date = arrivalDate; currentReservation.To_Date = departureDate; //Get Number of days to multiply by daily cost of campground int numOfDays = (int)departureDate.Subtract(arrivalDate).TotalDays; //Displays all available sites based on search criteria Console.WriteLine(); Console.WriteLine("Results Matching your Search Criteria:"); Console.WriteLine(); Console.Write("Site No.".PadRight(12)); Console.Write("Max Occup.".PadRight(12)); Console.Write("Accessible?".PadRight(15)); Console.Write("Max RV Length".PadRight(18)); Console.Write("Utility".PadRight(12)); Console.WriteLine("Cost".PadRight(12)); foreach (Site site in sites) { site.DisplaySite(numOfDays); } //Prompts user to enter their name and preferred site id Console.WriteLine(); Console.Write("Which site should be reserved (enter 0 to cancel)? "); string siteReserved = Console.ReadLine().Trim(); int siteNumber; bool isSiteEnteredAnInteger = int.TryParse(siteReserved, out siteNumber); currentReservation.Site_id = siteNumber; Console.Write("What name should the reservation be made under? "); currentReservation.Name = Console.ReadLine().Trim() + " Reservation"; //Create a reservation for the selected site_id and reservation dates bool isReservationSuccessful = siteSqlDal.ReserveSite(currentReservation); if (isReservationSuccessful) { int reservation_id = siteSqlDal.GetReservationId(currentReservation); Console.WriteLine("\nThe reservation has been made and the confirmation ID is " + reservation_id); Console.ReadKey(); Console.Clear(); InitialMenu(); } else { Console.WriteLine("Error: Your reservation was not made. Returning to home"); Console.Clear(); InitialMenu(); } } }