コード例 #1
0
        public void SearchAvailableSitesByCampId(int campId, DateTime fromDate, DateTime toDate)
        {
            TimeSpan totalDays = toDate.Subtract(fromDate);
            int      days      = Convert.ToInt32(totalDays.Days);

            SiteSqlDal  dal = new SiteSqlDal(dbConnection);
            List <Site> listOfAvailableSites = dal.GetAllAvailableSitesForCamp(campId, fromDate, toDate);

            //when working on the bonus search - move this to new method and call it
            CampgroundSqlDal             campDal    = new CampgroundSqlDal(dbConnection);
            Dictionary <int, Campground> listOfCamp = campDal.GetNameByCampId(campId);

            if (listOfAvailableSites.Count > 0)
            {
                for (int i = 0; i < listOfAvailableSites.Count; i++)
                {
                    Console.Write(listOfCamp[campId].Name + "\t\t");
                    Console.Write(listOfAvailableSites[i].SiteNumber + "\t\t");
                    Console.Write(listOfAvailableSites[i].MaxOccupancy + "\t\t");
                    if (listOfAvailableSites[i].Accessible)
                    {
                        Console.Write("Yes\t\t");
                    }
                    else
                    {
                        Console.Write("No\t\t");
                    }
                    if (listOfAvailableSites[i].MaxRVLength == 0)
                    {
                        Console.Write("N/A\t\t");
                    }
                    else
                    {
                        Console.Write(listOfAvailableSites[i].MaxRVLength + " \t\t");
                    }
                    if (listOfAvailableSites[i].Utilities)
                    {
                        Console.Write("Yes\t\t");
                    }
                    else
                    {
                        Console.Write("N/A\t\t");
                    }
                    Console.Write(listOfCamp[campId].DailyFee * days);
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("Sorry there are no available sites for your requested dates.");
            }
        }
コード例 #2
0
        public void GetAvailableSitesFromCampgroundTest()
        {
            //Arrange
            SiteSqlDal siteSqlDal = new SiteSqlDal(connectionString);

            //Act
            DateTime    checkIn  = new DateTime(2100, 1, 1);
            DateTime    checkOut = new DateTime(2100, 5, 1);
            List <Site> sites    = siteSqlDal.GetAvailableSitesFromCampground(1, checkIn, checkOut);

            //Assert
            Assert.IsNotNull(sites, "Sites list is empty!");

            //Since GetAvailableSitesFromCampground caps at 5, cap our site-count at 5 here
            if (availableSiteCount > 5)
            {
                availableSiteCount = 5;
            }

            Assert.AreEqual(availableSiteCount, sites.Count, $"Expected a count of {availableSiteCount} for sites");
        }
コード例 #3
0
        public void GetAllSitesFromCampgroundTest()
        {
            //Arange
            SiteSqlDal siteSqlDal = new SiteSqlDal(connectionString);

            //ACT
            List <Site> sites = siteSqlDal.GetAllSitesFromCampground(1);

            //Assert
            Assert.IsNotNull(sites, "Sites list is empty!");
            Assert.AreEqual(siteCount, sites.Count, $"Expected a count of {siteCount} for sites");

            bool found = false;

            foreach (Site site in sites)
            {
                if (site.SiteNumber == 1)
                {
                    found = true;
                    break;
                }
            }
            Assert.IsTrue(found, "Could not find Test Site named Test Site");
        }
        public void SearchForAvailableReservationScreen(Park park)
        {
            SiteSqlDal        siteSqlDal        = new SiteSqlDal(DatabaseConnection);
            CampgroundSqlDal  campgroundSqlDal  = new CampgroundSqlDal(DatabaseConnection);
            ReservationSqlDal reservationSqlDal = new ReservationSqlDal(DatabaseConnection);
            List <Campground> campgrounds       = campgroundSqlDal.GetAllCampgroundsFromPark(park.Id);

            //Search for valid campground
            bool done = false;

            while (!done)
            {
                Console.Clear();
                Console.WriteLine("Search for Campground Reservation: ");
                PrintAllCampgroundInfoInPark(park);

                int userInputCampgroundId = CLIHelper.GetInteger("\nWhich Campground number (Enter 0 to cancel)?");
                if (userInputCampgroundId == 0)
                {
                    Console.WriteLine("Cancelled! Press any key to continue.");
                    Console.ReadKey();
                    return;
                }

                if (GetCampgroundById(userInputCampgroundId, campgrounds) == null)
                {
                    Console.WriteLine("Not a valid campground! Press any key to continue.");
                    Console.ReadKey();
                    return;
                }

                //Once valid campground has been chosen --> Get good dates for query
                DateTime    checkIn  = CLIHelper.GetDateTime("Check-in date: ");
                DateTime    checkOut = CLIHelper.GetDateTime("Check-out date: ");
                List <Site> availableSitesFromCampgrounds = new List <Site>();
                bool        gotDates = false;
                bool        showReservationPrompt = false;
                while (!gotDates)
                {
                    availableSitesFromCampgrounds = siteSqlDal.GetAvailableSitesFromCampground(userInputCampgroundId, checkIn, checkOut);
                    if (checkOut.CompareTo(checkIn) <= 0)
                    {
                        Console.WriteLine("Cannot check-out earlier or same day as check-in.  Press any key to continue");
                        Console.ReadKey();
                        showReservationPrompt = false;
                        gotDates = true;
                        //could allow user a choice to return or enter new dates
                    }
                    else if (availableSitesFromCampgrounds.Count < 1)
                    {
                        string dateReset = CLIHelper.GetString("\nThere are no available sites. \nWould you like to enter an alternate date range?\n\tYes or No?").ToLower();
                        if (dateReset == "yes" || dateReset == "y")
                        {
                            Console.WriteLine();
                            checkIn  = CLIHelper.GetDateTime("Check-in date: ");
                            checkOut = CLIHelper.GetDateTime("Check-out date: ");
                            gotDates = false;
                        }
                        else if (dateReset == "no" || dateReset == "n")
                        {
                            gotDates = true;
                        }
                        else
                        {
                            Console.WriteLine("Invalid input. Try again");
                            gotDates = false;
                        }
                    }
                    else
                    {
                        showReservationPrompt = true;
                        gotDates = true;
                    }
                }
                if (showReservationPrompt)
                {
                    int daysReserved = checkOut.Subtract(checkIn).Days;
                    Console.WriteLine("Site Id".PadRight(10) + "Max Occup.".PadRight(15) + "Accessible?".PadRight(15) + "Max RV Length".PadRight(20) + "Utility".PadRight(15) + "Cost\n");
                    foreach (Site site in availableSitesFromCampgrounds)
                    {
                        Console.WriteLine(site.GetPrintString(daysReserved, GetCampgroundById(userInputCampgroundId, campgrounds).DailyFee));
                    }
                    Console.WriteLine();

                    MakeReservationPrompts(checkIn, checkOut, availableSitesFromCampgrounds);
                    done = true;
                }
            }
        }