예제 #1
0
        public void GetCampSiteAvailability_TotalCost_Test()
        {
            List <Campsite> output  = s.GetCampsitesByAvailability(connectionString, cg, fromDate, toDate);
            List <Campsite> output2 = s.GetCampsitesByAvailability(connectionString, cg2, fromDate, toDate);

            Campsite cs  = output[0];
            Campsite cs2 = output2[0];

            decimal result  = s.CalculateCostOfReservation(cs, fromDate, toDate, connectionString);
            decimal result2 = s.CalculateCostOfReservation(cs2, fromDate, toDate, connectionString);

            Assert.AreEqual(140.00m, Decimal.Round(result, 2));
            Assert.AreEqual(100.00m, Decimal.Round(result2, 2));
        }
예제 #2
0
        private static void BookReservationByParkMenu(Park park, DateTime arrival, DateTime departure)
        {
            PrintTrees();
            Console.WriteLine();

            PrintMenuDoubleSpaced(new[] { park.Name + " Park" });

            Console.WriteLine();
            List <Campsite> availableCampsites = parkDAL.BookReservationByPark(arrival, departure, park, connectionString);

            if (availableCampsites.Count == 0)
            {
                Console.Clear();
                PrintMenuDoubleSpaced(new[] { "I'm sorry, there are no available dates for your selected visit, please select again..." });
                ArrivalDateSelectionMenu(park);
            }
            Console.SetCursorPosition((Console.WindowWidth - 80) / 2, Console.CursorTop);
            Console.WriteLine("{0, -15}{1, -15}{2, -15}{3, -15}{4, -15}{5, -15}", $"Site No.", $"Max Occup.", $"Accessible?", $"Max RV Length", $"Utility", $"Cost");
            Console.WriteLine();

            foreach (var site in availableCampsites)
            {
                decimal totalCost = campsiteDAL.CalculateCostOfReservation(site, arrival, departure, connectionString);
                Console.SetCursorPosition((Console.WindowWidth - 80) / 2, Console.CursorTop);
                Console.WriteLine("{0, -15}{1, -15}{2, -15}{3, -15}{4, -15}{5, -15}", $"{site.SiteID}", $"{site.MaxOccupancy}", $"{site.Accessible}", $"{site.MaxRvLength}", $"{site.Utilities}", $"{totalCost.ToString("c")}");
            }
            Console.WriteLine();

            Campsite reservationSite = new Campsite();//create a new campsite so that the user can book their stay

            PrintTrees();

            int userSelectedSiteID = CLIHelper.GetInteger("What site should be reserved?(To Return to the Main Menu press (0))");

            //first verify that the site_id entered exists from the list provided to the user only!
            bool exists = availableCampsites.Any(x => x.SiteID == userSelectedSiteID);

            if (userSelectedSiteID == 0)
            {
                Console.Clear();
                MainMenu();
            }
            else if (exists)
            {
                reservationSite.SiteID = userSelectedSiteID;
                //book a reservation based on the site_id
            }
            else
            {
                Console.Clear();
                Console.WriteLine("That is not a valid option, please select from the choices below...");
                BookReservationByParkMenu(park, arrival, departure);
            }

            string nameOfReservation = CLIHelper.GetString("What name should the reservation be placed under?");

            if (availableCampsites.Any(x => x.SiteID == userSelectedSiteID))
            {
                campsiteDAL.CreateReservation(reservationSite.SiteID, arrival, departure, nameOfReservation, connectionString);

                Console.WriteLine($"The reservation has been created and the reservation id is " +
                                  $"{campsiteDAL.GetReservationID(reservationSite.SiteID, connectionString)}");
                Console.WriteLine("Press Enter to Return to the Main Menu");
                Console.ReadLine();
                MainMenu();
            }
            else
            {
                // if the site has not been reserved on the provided dates the reservation will be created
                Console.WriteLine("This site is already reserved during the dates provided");
                BookReservationByParkMenu(park, arrival, departure);
            }
        }