public void AddReservationTest() { ReservationSqlDAL dal = new ReservationSqlDAL(ConnectionString); int initialCount = GetRowCount(); Reservation reservation = new Reservation(); reservation.ReservationId = 2; reservation.SiteId = 1; reservation.Name = "Art Vandelay Reservation"; reservation.StartDate = new DateTime(2018, 07, 01); reservation.EndDate = new DateTime(2018, 07, 10); reservation.CreateDate = DateTime.Now; DateTime[] dateRange = new DateTime[2] { reservation.StartDate, reservation.EndDate }; var reservations = dal.AddReservation(reservation.SiteId, reservation.Name, dateRange); int finalCount = GetRowCount(); Assert.AreEqual(initialCount + 1, finalCount); }
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); } }
/// <summary> /// Select from available sites in selected campground /// </summary> /// <param name="campground"></param> /// <param name="arrival"></param> /// <param name="departure"></param> private void SiteSelectionMenu(Campground campground, DateTime arrival, DateTime departure) { Reservation reserve = new Reservation(); reserve.FromDate = arrival; reserve.ToDate = departure; bool quit = false; while (!quit) { SiteSqlDAL siteSqlDAL = new SiteSqlDAL(_connectionString); List <Site> resList = siteSqlDAL.GetAvailalableSitesInCampground(campground.CampgroundId, arrival, departure); TimeSpan interval = reserve.ToDate - reserve.FromDate; decimal cost = interval.Days * campground.DailyFee; if (resList.Count == 0) { Console.WriteLine("\nNo sites available for the dates provided."); } else { DisplayAvailableSites(resList, cost); reserve.SiteId = 0; int selection = CLIHelper.GetInteger("Which site should be reserved (enter 0 to cancel)?"); if (selection < 0) { Console.WriteLine(" Invalid selection. Please try again."); } //else if (selection == 0) //{ // quit = true; //} else if (selection > 0) { //var site = resList.Find(m => m.SiteId == selection); for (int i = 0; i < resList.Count; i++) { if (resList[i].SiteNumber == selection) { reserve.SiteId = resList[i].SiteId; } } if (reserve.SiteId == 0) { Console.WriteLine(" Invalid selection. Please try again."); } } Console.WriteLine("What name Should the reservation be made under?"); reserve.Name = Console.ReadLine(); ReservationSqlDAL reservationSqlDAL = new ReservationSqlDAL(_connectionString); reserve = reservationSqlDAL.AddReservation(reserve); Console.WriteLine($"The reservation has been made and the confirmation id is {reserve.ReservationId}"); quit = true; } } }
/// <summary> /// Adds a reservation to the database at the selected site, under the provided name, and for /// the provided duration. /// </summary> /// <param name="arrivalDate">The date that the guest will arrive at the site.</param> /// <param name="departureDate">The date that the guest will leave the site.</param> /// <param name="name">A name to identify the guest by.</param> /// <param name="site">The site being reserved.</param> private void MakeReservation(DateTime arrivalDate, DateTime departureDate, string name, Site site) { Reservation newReservation = new Reservation(); newReservation.Site_Id = site.Site_Id; newReservation.From_Date = arrivalDate; newReservation.To_Date = departureDate; newReservation.Name = name; ReservationSqlDAL rDal = new ReservationSqlDAL(ConnectionString); int reservationConfirmation = rDal.AddReservation(newReservation); Console.WriteLine("The reservation has been made and the confirmation id is {0}", reservationConfirmation); }
public void AddReservation_Succeeds() { using (TransactionScope transaction = new TransactionScope()) { // Arrange ReservationSqlDAL testClass = new ReservationSqlDAL(connectionString); ManualInitialize(); DateTime testStartDate = new DateTime(2000, 6, 10).Date; DateTime testEndDate = new DateTime(2000, 6, 20).Date; Reservation tempReservation = new Reservation(); tempReservation.Site_Id = siteId; tempReservation.Name = "TEMP RESERVATION"; tempReservation.From_Date = testStartDate; tempReservation.To_Date = testEndDate; // Act int reservationId = testClass.AddReservation(tempReservation); // Assert Assert.IsTrue(reservationId > 0); } }
/// <summary> /// Checks the entered requested date range against existing reservations for that selected site at the selected campground at the selected park /// </summary> /// <param name="parkId"></param> /// <param name="campgroundId"></param> /// <param name="siteNumber"></param> /// <param name="desiredReservationDates"></param> /// <returns>Reservation at the selected site at the selected campground at the selected park</returns> private Reservation CheckAvailableReservation(int parkId, int campgroundId, int siteId, int siteNumber, DateTime[] desiredReservationDates) { ReservationSqlDAL dal = new ReservationSqlDAL(DatabaseConnection); IList <Reservation> reservations = dal.GetReservations(parkId, campgroundId, siteNumber); Reservation successfulReservation = new Reservation(); bool isValidReservation = true; foreach (var reservation in reservations) { if ((desiredReservationDates[0] >= reservation.StartDate && desiredReservationDates[0] <= reservation.EndDate) || (desiredReservationDates[1] >= reservation.StartDate && desiredReservationDates[1] <= reservation.EndDate)) { isValidReservation = false; Console.WriteLine("Reservation already booked during all or part of this date range. Please select another date range."); break; } } if (isValidReservation) { Console.Write("Please Enter Reservation Name: "); string reservationName = Console.ReadLine(); successfulReservation = dal.AddReservation(siteId, reservationName, desiredReservationDates); } return(successfulReservation); }
private void MainMenu() { Console.WriteLine(@"_________ ________ ___"); Console.WriteLine(@"\_ ___ \_____ _____ ______ / _____/______ ____ __ __ ____ __| _/"); Console.WriteLine(@"/ \ \/\__ \ / \\____ \/ \ __\_ __ \/ _ \| | \/ \ / __ | "); Console.WriteLine(@"\ \____/ __ \| Y Y \ |_> > \_\ \ | \( <_> ) | / | \/ /_/ | "); Console.WriteLine(@" \______ (____ /__|_| / __/ \______ /__| \____/|____/|___| /\____ | "); Console.WriteLine(@" \/ \/ \/|__| \/ \/ \/ "); Console.WriteLine(@"_________ ___ .__"); Console.WriteLine(@"\______ \ ____ ______ ______________ _______ _/ |_|__| ____ ____ "); Console.WriteLine(@"| _// __ \ / ___// __ \_ __ \ \/ /\__ \\ __\ |/ _ \ / \ "); Console.WriteLine(@"| | \ ___/ \___ \\ ___/| | \/\ / / __ \| | | ( <_> ) | \"); Console.WriteLine(@"|____|_ /\___ >____ >\___ >__| \_/ (____ /__| |__|\____/|___| /"); Console.WriteLine(@" \/ \/ \/ \/ \/ \/ "); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Welcome to the National Parks Reservation System."); Console.WriteLine("Please choose one of the parks listed below."); Console.WriteLine(); //gives us a new park using the get GetParkNames Method IList <string> parks = GetParkNames(); int parkCount = 1; //loops through the park list //gives each of the parks a number foreach (string p in parks) { Console.WriteLine($"{parkCount} - {p}"); parkCount++; } Console.WriteLine($"{parks.Count + 1} - Quit"); Console.WriteLine(); int userInput = 0; //prompt user to enter teh park they want to go to //if they choose the quit number(n+1) it wil quit the program //if they are a jackass and enter in a huge number or a negative number //then it will keep promptinf them to enter in a real number do { userInput = (CLIHelper.GetInteger("Please Choose a Park Number: ")); } while (userInput <= 0 || userInput > parks.Count + 1); if (userInput == parks.Count + 1) { return; } string parkName = parks[userInput - 1].ToString(); ParksSqlDAL Parks = new ParksSqlDAL(connectionString); //creates a new dictionary with the parks data in it Dictionary <int, Park> parkDictionary = Parks.GetParkData(parkName); globalParkName = parkDictionary[1].Name; Console.Clear(); Console.WriteLine("Park Information Screen"); Console.WriteLine(); Console.WriteLine($"Park Name: {parkDictionary[1].Name}"); Console.WriteLine($"Location: {parkDictionary[1].Location}"); Console.WriteLine($"Established: {parkDictionary[1].Established.ToShortDateString()}"); Console.WriteLine($"Area: {string.Format("{0:n0}", parkDictionary[1].Area)}"); Console.WriteLine($"Annual Visitors: {string.Format("{0:n0}", parkDictionary[1].VisitCount)}"); Console.WriteLine(); Console.WriteLine($"{parkDictionary[1].Description}"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" 1 - View all campgrounds"); Console.WriteLine(" 2 - Search for Reservation."); Console.WriteLine(" 3 - Return to Previous Screen"); Console.WriteLine(); do { userInput = CLIHelper.GetInteger("Please Select a Command: "); if (userInput == 1) { //create a new campground //puts it in a dictionary //brings up the ground menu CampgroundSqlDAL Campgrounds = new CampgroundSqlDAL(connectionString); Dictionary <int, Campground> campGroundDictionary = Campgrounds.GetCampground(parkDictionary[1].Id); CampGroundMenu(campGroundDictionary); } else if (userInput == 2) { } else if (userInput == 3) { Console.Clear(); MainMenu(); } else { Console.WriteLine("Please make a valid choice"); } } while (userInput != 1 || userInput != 2 || userInput != 3); void CampGroundMenu(Dictionary <int, Campground> campGroundDictionary) { int count = 1; Console.Clear(); Console.WriteLine($"{globalParkName} Park Campgrounds"); Console.WriteLine(); Console.Write("Name".PadLeft(10)); Console.Write("Open".PadLeft(30)); Console.Write("Close".PadLeft(11)); Console.WriteLine("Daily Fee".PadLeft(19)); Console.WriteLine(); Dictionary <int, int> siteIdDictionary = new Dictionary <int, int>(); siteIdDictionary.Add(0, 0); foreach (KeyValuePair <int, Campground> kvp in campGroundDictionary) { Console.Write($"#{count,-5}"); Console.Write("{1, -30}", kvp.Key, kvp.Value.Name); Console.Write("{1, -10}", kvp.Key, CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(kvp.Value.Open)); Console.Write("{1, -15}", kvp.Key, CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(kvp.Value.Close)); Console.Write("{1, -15}", kvp.Key, kvp.Value.Fee.ToString("C")); Console.WriteLine(); siteIdDictionary.Add(count, kvp.Value.Id); count++; } if (reservation == false) { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" 1 - Search for Available Reservation."); Console.WriteLine(" 2 - Return to Previous Screen"); Console.WriteLine(); do { userInput = CLIHelper.GetInteger("Please Select a Command: "); if (userInput == 1) { //if the user inputs 1 // will set reservation varible to true //then prompt you to enter the campground of your choice reservation = true; CampGroundMenu(campGroundDictionary); } else if (userInput == 2) { CampGroundMenu(campGroundDictionary); } else { Console.WriteLine("Please make a valid choice"); } } while (userInput != 1 || userInput != 2); } else { //when the user chooses 1 it starts the reservation menu ReservationMenu(campGroundDictionary, siteIdDictionary); } } void ReservationMenu(Dictionary <int, Campground> campGroundDictionary, Dictionary <int, int> siteIdDictionary) { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); int campgroundChoice = CLIHelper.GetInteger("Which campground (enter 0 to cancel)?: "); if (campgroundChoice == 0) { //will bring back the menu choices Console.Clear(); reservation = false; CampGroundMenu(campGroundDictionary); } else { campgroundChoice = siteIdDictionary[campgroundChoice]; } Console.Clear(); //prompts the user for arrival and departure dates DateTime arrivalDate = CLIHelper.GetDateTime("Please enter the date you will be arriving. (mm/dd/yyyy): "); arrivalDate = arrivalDate; DateTime departureDate = CLIHelper.GetDateTime("Please enter the date you will be departing. (mm/dd/yyyy): "); departureDate = departureDate; ReservationSqlDAL reservations = new ReservationSqlDAL(connectionString); //creates new dictionary to get open camp sites Dictionary <int, CampSite> reservationDictionary = reservations.GetOpenCampSites(campgroundChoice, arrivalDate, departureDate); Console.Clear(); Console.WriteLine($"Results matching your search criteria"); Console.WriteLine(); Console.Write("Site No.".PadLeft(5)); Console.Write("Max Occup.".PadLeft(12)); Console.Write("Accessible?".PadLeft(12)); Console.Write("Max RV Length".PadLeft(16)); Console.Write("Utility".PadLeft(12)); Console.Write("Total Cost".PadLeft(11)); Console.WriteLine(); if (reservationDictionary.Count < 1) { string userTemp = ""; do { //if no reservations are avalible then prompts user to choose new dates Console.Clear(); userTemp = CLIHelper.GetString( "No sites available for those dates. Would you like to choose alternate dates? y/n"); if (userTemp == "y") { //takes user back to the reservation menu Console.Clear(); CampGroundMenu(campGroundDictionary); } else if (userTemp == "n") { Console.Clear(); MainMenu(); } } while (userTemp != "y" || userTemp != "n"); } foreach (KeyValuePair <int, CampSite> kvp in reservationDictionary) { Console.Write("{1, -10}", kvp.Key, kvp.Value.SiteNumber); Console.Write("{1, -11}", kvp.Key, kvp.Value.MaxOccupancy); Console.Write("{1, -14}", kvp.Key, kvp.Value.Accessiblity); Console.Write("{1, -18}", kvp.Key, kvp.Value.MaxRevLength); Console.Write("{1, -10}", kvp.Key, kvp.Value.Utilities); int totalDays = (int)(departureDate - arrivalDate).TotalDays; if (totalDays < 1) { totalDays = 1; } decimal feeTotal = campGroundDictionary[campgroundChoice].Fee * totalDays; Console.Write($"{feeTotal:C}".PadLeft(10)); Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(); int siteChoice = CLIHelper.GetInteger("Which site should be reserved (enter 0 to cancel)? "); if (siteChoice == 0) { CampGroundMenu(campGroundDictionary); } //prompts user for the name they want the reservation under string reservationName = CLIHelper.GetString("What name should the reservation be under? "); Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"The reservation has been made and the confirmation id is {reservations.AddReservation(siteChoice, arrivalDate, departureDate, reservationName)})"); Console.ReadLine(); string temp = ""; do { Console.Clear(); temp = CLIHelper.GetString( "Would you like to make another reservation? y/n"); if (temp == "y") { Console.Clear(); CampGroundMenu(campGroundDictionary); } else if (temp == "n") { Console.Clear(); MainMenu(); } } while (temp != "y" || temp != "n"); } }