コード例 #1
0
        /// <summary>
        /// Books a site reservation
        /// </summary>
        /// <param name="sites">List of available sites</param>
        /// <param name="arrivalDate">Arrival date for the reservation</param>
        /// <param name="departureDate">Departure date for the reservation</param>
        private void BookReservation(IList <Site> sites, DateTime arrivalDate, DateTime departureDate)
        {
            int siteIndex = -1;

            do
            {
                int siteNumber = CLIHelper.GetInteger("Which site should be reserved (enter 0 to cancel)? ");

                if (siteNumber == 0)
                {
                    Console.Clear();
                    return;
                }

                siteIndex = sites.IndexOf(sites.Where(x => x.SiteNumber == siteNumber).FirstOrDefault());
            } while (siteIndex < 0);

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

            int reservationId = reservationDAO.AddReservation(sites[siteIndex].SiteId, name, arrivalDate, departureDate);

            Console.WriteLine("".PadRight(lineWidth, lineChar));

            if (reservationId > 0)
            {
                Console.WriteLine("The reservation has been made and the confirmation id is {" + reservationId + "}.\n");
            }
            else
            {
                Console.WriteLine("An error occurred making the reservation.");
            }

            Console.WriteLine("Press any key to return to the previous menu");
            Console.ReadKey();
        }
コード例 #2
0
        /// <summary>
        /// Shows 5 campsites available for the user to select and reserve.
        /// Checks if the campground is open and if the dates.
        /// Prompts if the site is fully reserved.
        /// </summary>
        /// <param name="campgroundId"></param>
        /// <param name="arrivalDate"></param>
        /// <param name="departureDate"></param>
        private void ShowReservationResults(int campgroundId, DateTime arrivalDate, DateTime departureDate)
        {
            List <Site> availableSites = siteDAO.GetTop5AvailableSites(campgroundId, arrivalDate, departureDate);

            Campground campground = campgroundDAO.GetCampground(campgroundId);

            //Check that the selected campground is open for the requested dates (eg. no winter closures)
            bool campgoundOpen = campground.IsCampgroundOpen(arrivalDate, departureDate);

            if (!campgoundOpen)
            {
                Console.WriteLine($"Campground is open between {campground.DisplayMonths(campground.OpenMonths)} and {campground.DisplayMonths(campground.ClosedMonths)}. Please choose a date range within that timeframe. Thank you!");
                Console.WriteLine("Press enter to continue...");
                Console.ReadLine();
                return;
            }

            // Check that sites are available in database
            bool isAvailable = siteDAO.HasAvailableSites(campgroundId, arrivalDate, departureDate);

            if (!isAvailable)
            {
                Console.WriteLine($"The date range preferred {arrivalDate}-{departureDate} is not available. Please make another selection.");
            }
            else
            {
                //Display 5 available sites with details
                Console.WriteLine($"Results Matching your Search Criteria");
                Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost");


                foreach (Site site in availableSites)
                {
                    //TODO: The 3 methods IsSiteAccessible(site), MaxRVLength(site), UtilitiesAvailable(site) are just text formatting. I'd like to change these to simple ternary expressions
                    Console.WriteLine(" {0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5:C}", site.SiteId, site.MaxOccupancy, IsSiteAccessible(site), MaxRVLength(site), UtilitiesAvailable(site), campground.TotalStayCost(arrivalDate, departureDate));
                }

                //User to choose a site to reserve
                Console.WriteLine($" Which site whould be reserved (enter 0 to cancel)?");
                string response = Console.ReadLine();
                int    campsite = int.Parse(response);
                if (campsite == 0)
                {
                    return;
                }

                //Get reservation details
                Console.WriteLine($" What name should the reservation be made under?");
                string reservationName = Console.ReadLine();

                //Add reservation to database
                int reservationId = reservationDAO.AddReservation(NewReservation(campsite, reservationName, arrivalDate, departureDate));

                //Let user know their reservation is confirmed
                Console.WriteLine($" The reservation has been made and the confirmation id is {reservationId}. Thank you for booking with us!");
                Console.WriteLine(" Press ENTER to continue...");
                Console.ReadLine();
            }
        }
コード例 #3
0
        public IActionResult Reservation(ReservationUserViewModel vm)
        {
            if (vm.InvitedUser.Username == null)
            {
                return(RedirectToAction("Reservation", "Reservation"));
            }

            var user = authProvider.GetCurrentUser();

            vm.User        = userDAL.GetUserById(user.Id);
            vm.InvitedUser = userDAL.GetUser(vm.InvitedUser.Username);

            vm.Reservation.StartTime = vm.Reservation.StartTime.AddHours(vm.StartHour);
            vm.Reservation.StartTime = vm.Reservation.StartTime.AddMinutes(vm.StartMinute);
            vm.Reservation.EndTime   = vm.Reservation.EndTime.AddHours(vm.EndHour);
            vm.Reservation.EndTime   = vm.Reservation.EndTime.AddMinutes(vm.EndMinute);
            reservationDAO.AddReservation(vm);


            return(RedirectToAction("UserHome", "Account"));
        }
コード例 #4
0
        private void ShowReservationResults(int campground, DateTime arrivalDate, DateTime departureDate)
        {
            List <Site> availableSites = siteDAO.GetTop5AvailableSites(campground, arrivalDate, departureDate);

            List <Campground> campgrounds = campgroundDAO.GetCampgrounds();
            Campground        campground1 = new Campground();


            bool campgoundOpen = campground1.IsCampgroundOpen(arrivalDate, departureDate);

            if (!campgoundOpen)
            {
                Console.WriteLine($"Campground is open between {campground1.DisplayMonths(campground1.OpenMonths)} and {campground1.DisplayMonths(campground1.ClosedMonths)}. Please choose a date range within that timeframe. Thank you!");
                Console.WriteLine("Press enter to continue...");
                Console.ReadLine();
                return;
            }

            bool isAvailable = siteDAO.HasAvailableSites(campground, arrivalDate, departureDate);

            if (!isAvailable)
            {
                Console.WriteLine($"The date range preferred {arrivalDate}-{departureDate} is not available. Please make another selection.");
            }
            else
            {
                Console.WriteLine($"Results Matching your Search Criteria");
                Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost");


                foreach (Campground camp in campgrounds)
                {
                    if (campground == camp.Id)
                    {
                        campground1 = camp;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }

                foreach (Site site in availableSites)
                {
                    Console.WriteLine("{0, -10} {1,-10} {2,-15} {3,-15} {4,-10} {5,-5:C}", site.SiteId, site.MaxOccupancy, IsSiteAccessible(availableSites), MaxRVLength(availableSites), UtilitiesAvailable(availableSites), campground1.TotalStayCost(arrivalDate, departureDate));
                }
                Console.WriteLine($"Which site whould be reserved (enter 0 to cancel)?");
                string response = Console.ReadLine();
                int    campsite = int.Parse(response);
                if (campsite == 0)
                {
                    return;
                }


                Console.WriteLine($"What name should the reservation be made under?");
                string reservationName = Console.ReadLine();

                int reservationId = reservationDAO.AddReservation(NewReservation(campsite, reservationName, arrivalDate, departureDate));

                Console.WriteLine($"The reservation has been made and the confirmation id is {reservationId}. Thank you for booking with us!");
                Console.WriteLine("Press ENTER to continue...");
                Console.ReadLine();
            }
        }
コード例 #5
0
        public void ReserveSpaceMenu(int menuID)
        {
            Console.WriteLine();
            Console.Write("When do you need the space? (Use MM/DD/YYYY format) ");
            DateTime reservationStartDate = Convert.ToDateTime(Console.ReadLine());

            Console.Write("How many days will you need the space? ");
            int reservationDuration = Convert.ToInt32(Console.ReadLine());

            Console.Write("How many people will be in attendance? ");
            int numberOfGuests = Convert.ToInt32(Console.ReadLine());

            DateTime reservationEndDate = Reservation.CalculateReservationDepartureDate(reservationStartDate, reservationDuration);

            IList <Space> availableSpaces = spaceDAO.GetAvailableSpaces(menuID, reservationStartDate, reservationEndDate, numberOfGuests);

            if (availableSpaces.Count > 0)
            {
                Console.WriteLine();
                Console.WriteLine("The following spaces are available based on your needs:");
                Console.WriteLine();
                Console.WriteLine("Space #".PadRight(10) + "Name".PadRight(27) + "Daily Rate".PadRight(20) + "Max Occupancy".PadRight(15) + "Accessible?".PadRight(15) +
                                  "Total Cost");
                Console.WriteLine("------------------------------------------------------------------------------------------");

                foreach (Space space in availableSpaces)
                {
                    Console.WriteLine($"{space.SpaceAvailabilityToString(reservationDuration)}");
                }
                Console.WriteLine();

                string selectedAvailableSpace = "";
                Console.WriteLine("Which space would you like to reserve?");
                Console.WriteLine("(Or enter 0 to cancel reservation)");
                selectedAvailableSpace = Console.ReadLine();
                Console.WriteLine();

                while (selectedAvailableSpace != "0")
                {
                    Console.WriteLine("Please enter a name for the reservation");
                    string reservationName = Console.ReadLine();

                    int spaceMenuID = int.Parse(selectedAvailableSpace);

                    if (reservationDAO.AddReservation(spaceMenuID, numberOfGuests, reservationStartDate, reservationEndDate, reservationName))
                    {
                        PrintReservationConfirmation(spaceMenuID, reservationName, numberOfGuests, reservationStartDate, reservationDuration);
                    }
                    else
                    {
                        Console.WriteLine("There was an error with your reservation submission. Please try again.");
                    }
                    return;
                }
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("There are no available spaces, please try again.");
                Console.ReadLine();
            }
        }
コード例 #6
0
        // Search for and/or make site reservations
        public void SearchReservations()
        {
            selectedCampgroundId   = 0;
            selectedCampgroundName = "";
            selectedCampgroundCost = 0;



            //Search for Available Reservation
            Console.Clear();
            IList <Campground> campInfo = campgroundDAO.ReadToListCampground(selectedParkId);

            Console.WriteLine("Park Campgrounds");
            Console.WriteLine();
            Console.WriteLine(selectedParkName + " National Park Campgrounds");
            Console.WriteLine();
            Console.WriteLine("{0,-40}{1,-15}{2,-15}{3,-15}", "Name", "Open", "Close", "Daily Fee");

            for (int i = 0; i < campInfo.Count; i++)
            {
                Console.WriteLine("{0,-40}{1,-15}{2,-15}{3,-15:C}", i + 1 + ") " + campInfo[i].Name, CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(campInfo[i].OpenFrom), CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(campInfo[i].OpenTo), campInfo[i].DailyFee);
            }

            Console.WriteLine();


            string inputCampground = CLIHelper.GetString("Select a campground (enter Q to quit and return to main menu)");

            if (inputCampground.ToUpper() == "Q")
            {
                Console.Clear();
                RunParkMenu();
            }
            try
            {
                int pInputCampground = int.Parse(inputCampground) - 1;

                selectedCampgroundId   = campInfo[pInputCampground].CampgroundId;
                selectedCampgroundName = campInfo[pInputCampground].Name;
                selectedCampgroundCost = campInfo[pInputCampground].DailyFee;
            }

            catch (Exception)
            {
                Console.WriteLine("Not a valid campground; please press any key to try again");
                Console.ReadLine();
                SearchReservations();
            }

            bool datesAreValid = false;

            while (!datesAreValid)
            {
                Console.WriteLine();
                inputStartDate = CLIHelper.GetDate("What is the arrival date? (mm/dd/yyyy): ");
                inputEndDate   = CLIHelper.GetDate("What is the departure date? (mm/dd/yyyy): ");

                // Calculate number of days for reservation
                numDays = inputEndDate.Subtract(inputStartDate);
                intDays = numDays.TotalDays;
                if (inputStartDate < DateTime.Now)
                {
                    Console.WriteLine();
                    Console.WriteLine("Arrival/departure dates must be in the future. We do not have time-traveling capabilities.\nPlease try new dates.");
                }
                else if (intDays < 1)
                {
                    Console.WriteLine();
                    Console.WriteLine("Departure date must be after arrival date. \nPlease try new dates.");
                }
                else
                {
                    datesAreValid = true;
                }
            }



            // Display results matching search
            IList <Site> siteAvailList = siteDAO.ReadToListSite(selectedCampgroundId, inputStartDate, inputEndDate);

            Console.Clear();
            Console.WriteLine("Results Matching Your Search Criteria");
            Console.WriteLine();
            if (siteAvailList.Count == 0)
            {
                Console.WriteLine("No sites are available for your dates. Would you like to enter alternate dates? Y/N");
                string yesOrNo;
                bool   isValid = false;

                do
                {
                    yesOrNo = Console.ReadLine();
                    if (yesOrNo.ToUpper() != "Y" && yesOrNo.ToUpper() != "N")
                    {
                        Console.WriteLine("Please enter Y or N.");
                    }
                    else
                    {
                        isValid = true;
                    }
                }while (!isValid);

                if (yesOrNo.ToUpper() == "N")
                {
                    Console.Clear();
                    RunParkMenu();
                }
                else if (yesOrNo.ToUpper() == "Y")
                {
                    SearchReservations();
                }
            }
            else
            {
                string totalCost = $"Total Cost for {intDays} Days";
                Console.WriteLine("{0,-40}{1,-13}{2,-15}{3,-15}{4,-15}{5,-25}{6,-10}", "Campground", "Site No.", "Max Occup.", "Accessible?", "RV Length", "Utilities Available?", totalCost);
                List <int> validSiteIds = new List <int>();
                foreach (Site slot in siteAvailList)
                {
                    decimal campTotal = selectedCampgroundCost * (decimal)intDays;
                    Console.WriteLine("{0,-40}{1,-13}{2,-15}{3,-15}{4,-15}{5,-25}{6,-10:C}", selectedCampgroundName, +slot.SiteId, slot.MaxOccupancy, slot.Accessible, slot.MaxRvLength, slot.Utilities, campTotal);
                    validSiteIds.Add(slot.SiteId);
                }

                // check input against site numbers in the list

                bool inputInvalid = true;
                while (inputInvalid)
                {
                    Console.WriteLine();
                    inputSiteReserve = CLIHelper.GetInteger("Which site should be reserved? Enter site number from above list or 0 to start over: ");
                    if (inputSiteReserve == 0)
                    {
                        SearchReservations();
                        break;
                    }
                    else if (validSiteIds.Contains(inputSiteReserve))
                    {
                        inputInvalid = false;
                    }
                }

                inputNameReserve = CLIHelper.GetString("What name should the reservation be made under?");

                // Add reservation
                int id = reservationDAO.AddReservation(inputNameReserve, inputSiteReserve, inputStartDate, inputEndDate);

                if (id != 0)
                {
                    Console.Clear();
                    Console.WriteLine($"The reservation has been made, and the confirmation id is {id}");
                }
                else
                {
                    Console.WriteLine("Reservation unsuccessful.");
                    //option to go back
                }
                string inputContinue = "";
                while (inputContinue != "1" && inputContinue != "0")
                {
                    inputContinue = CLIHelper.GetString("Enter 1 to return to the main menu or 0 to quit");
                }
                if (inputContinue == "0")
                {
                    Environment.Exit(0);
                }
                else if (inputContinue == "1")
                {
                    Console.Clear();
                    RunParkMenu();
                }
            }
        }
コード例 #7
0
ファイル: CampSiteMenu.cs プロジェクト: pattm0824/Main
        protected override bool ExecuteSelection(string choice)
        {
            decimal  totalCost;
            DateTime arrivalDate;
            DateTime departureDate;
            int      siteReservation;
            string   nameReservation;
            int      reservationID;


            switch (choice)// choice indicates campground
            {
            case "1":
                // user will get prompted for arrival and departure dates
                Console.WriteLine("What is your arrival date MM/DD/YYYY");
                arrivalDate = DateTime.Parse(Console.ReadLine());
                Console.WriteLine("What is your departure date MM/DD/YYYY");        //*****************Logic to ensure date in the future
                departureDate = DateTime.Parse(Console.ReadLine());

                siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[0].Campground_Id);


                // user will see results matching their search (Sites)
                Console.WriteLine($"{"SiteNo.", -15} {"Max Occup.", -15} {"Accesible?", -15} {"MaxRvLength",-15} {"Utility", -15} {"Cost",-15}");
                foreach (Site site in siteList)
                {
                    totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[0].Daily_Fee);
                    Console.WriteLine($"{site.Site_Number, -15} {site.Max_Occupancy, -15} {site.Accessible, -15} {site.Max_Rv_Length, -15} {site.Utilities, -15} {totalCost, -15:C}");
                }


                Console.WriteLine("What site should be reserved (Please enter site number)?");
                siteReservation = int.Parse(Console.ReadLine());
                Console.WriteLine("What name should the reservation be made under?");
                nameReservation = Console.ReadLine();

                reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate);
                Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." +
                                  $"Your reservation ID is {reservationID}.");

                Pause("");
                return(true);



            case "2":


                // user will get prompted for arrival and departure dates
                Console.WriteLine("What is your arrival date MM/DD/YYYY");
                arrivalDate = DateTime.Parse(Console.ReadLine());
                Console.WriteLine("What is your departure date MM/DD/YYYY");
                departureDate = DateTime.Parse(Console.ReadLine());

                siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[1].Campground_Id);


                // user will see results matching their search (Sites)
                Console.WriteLine($"{"SiteNo.",-15} {"Max Occup.",-15} {"Accesible?",-15} {"MaxRvLength",-15} {"Utility",-15} {"Cost",-15}");
                foreach (Site site in siteList)
                {
                    totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[1].Daily_Fee);
                    Console.WriteLine($"{site.Site_Number,-15} {site.Max_Occupancy,-15} {site.Accessible,-15} {site.Max_Rv_Length,-15} {site.Utilities,-15} {totalCost,-15:C}");
                }

                Console.WriteLine("What site should be reserved (Please enter site number)?");
                siteReservation = int.Parse(Console.ReadLine());
                Console.WriteLine("What name should the reservation be made under?");
                nameReservation = Console.ReadLine();

                reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate);
                Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." +
                                  $"Your reservation ID is {reservationID}.");

                Pause("");
                return(true);


            case "3":


                // user will get prompted for arrival and departure dates
                Console.WriteLine("What is your arrival date MM/DD/YYYY");
                arrivalDate = DateTime.Parse(Console.ReadLine());
                Console.WriteLine("What is your departure date MM/DD/YYYY");
                departureDate = DateTime.Parse(Console.ReadLine());

                siteList = siteDAO.GetSites(arrivalDate, departureDate, campgroundList[2].Campground_Id);

                // user will see results matching their search (Sites)
                Console.WriteLine($"{"SiteNo.",-15} {"Max Occup.",-15} {"Accesible?",-15} {"MaxRvLength",-15} {"Utility",-15} {"Cost",-15}");
                foreach (Site site in siteList)
                {
                    totalCost = site.TotalCost(arrivalDate, departureDate, campgroundList[2].Daily_Fee);
                    Console.WriteLine($"{site.Site_Number,-15} {site.Max_Occupancy,-15} {site.Accessible,-15} {site.Max_Rv_Length,-15} {site.Utilities,-15} {totalCost,-15:C}");
                }

                Console.WriteLine("What site should be reserved (Please enter site number)?");
                siteReservation = int.Parse(Console.ReadLine());
                Console.WriteLine("What name should the reservation be made under?");
                nameReservation = Console.ReadLine();

                reservationID = reservationDAO.AddReservation(siteReservation, nameReservation, arrivalDate, departureDate);
                Console.WriteLine($"Thank you for your reservation! {nameReservation} has made a reservation at site {siteReservation} from {arrivalDate.ToShortDateString()} to {departureDate.ToShortDateString()}." +
                                  $"Your reservation ID is {reservationID}.");

                Pause("");
                return(true);
            }
            // user will get prompted for site and name (Method to confirm **Check and Insert reservation)

            return(true);
        }