// 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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
        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));
            }
        }
Ejemplo n.º 12
0
 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();
         }
     }
 }