示例#1
0
        private void selectCampground()
        {
            bool     noAdvance = true;
            int      campID;
            DateTime startDate;
            DateTime endDate;

            selectPark();

            do
            {
                Console.WriteLine("Which campground would you like to make a reservation for (by numeric ID)?");
                string userCampID = Console.ReadLine();

                Console.WriteLine("Please enter the first date of your stay(YYYY-MM-DD): ");
                string userStartDate = Console.ReadLine();

                Console.WriteLine("Please enter the last date of your stay(YYYY-MM-DD): ");
                string userLastDate = Console.ReadLine();

                try
                {
                    campID    = int.Parse(userCampID);
                    startDate = DateTime.Parse(userStartDate);
                    endDate   = DateTime.Parse(userLastDate);
                    noAdvance = false;

                    IList <Site> sites = siteDAO.GetAvailableSites(campID, startDate, endDate);

                    foreach (Site site in sites)
                    {
                        Console.WriteLine($"\nCampsite ID: {site.SiteNumber} \nAccessible: {site.Accessible} |  Utilities: {site.Utilities} \nMax Occupancy: {site.MaxOccupancy} \nMax RV Length: {site.MaxRVLength}");
                        Console.WriteLine($"Total Price: {reservationDAO.GetTotalCost(startDate, endDate, site.CampgroundId):C2}");
                    }

                    noAdvance = true;
                    int siteID = 0;

                    do
                    {
                        Console.Write("\nPlease select the site (by ID) you would like to stay at: ");
                        string userSiteID = Console.ReadLine();
                        try
                        {
                            siteID = int.Parse(userSiteID);
                            foreach (Site site in sites)
                            {
                                if (siteID == site.Id)
                                {
                                    noAdvance = false;
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("The site ID you selected is invalid (Enter the numeric ID of the campsite)");
                        }
                    }while (noAdvance);

                    Console.Write("Please enter a name for the reservation: ");
                    string reservationName = Console.ReadLine();

                    bool wasSuccessful = reservationDAO.MakeReservation(siteID, reservationName, startDate, endDate);
                    if (wasSuccessful)
                    {
                        Console.WriteLine("Reservation Created Successfully!");
                    }
                    else
                    {
                        Console.WriteLine("Reservation was not successful! A value you entered was likely invalid.\nYou may need to restart... sorry!");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("The values you entered were invalid... \n*Select the campground by ID, Dates are in the format YYYY-MM-DD");
                    Console.WriteLine(e.Message);
                }
            }while(noAdvance);
        }
示例#2
0
        public void GetDates(int campgroundID, int parkID)
        {
            IList <DateTime> departArriveDates = new List <DateTime>();
            IList <Site>     sitesToReserve    = new List <Site>();

            while (true)
            {
                //DateTime fromDate;
                //DateTime toDate;
                try
                {
                    Console.WriteLine("Please enter the arrival date: MM / DD / YYYY or press \"Q\" to quit");
                    string input = Console.ReadLine();
                    if (input.ToLower() == "q")
                    {
                        SearchForReservation(parkID);
                    }
                    //string fromDateString = Console.ReadLine();
                    DateTime fromDate = Convert.ToDateTime(input);
                    Console.WriteLine("Please enter the departure date: MM / DD / YYYY or press \"Q\" to quit");
                    input = Console.ReadLine();
                    if (input.ToLower() == "q")
                    {
                        SearchForReservation(parkID);
                    }
                    //fromDate = Convert.ToDateTime(fromDateString);
                    DateTime toDate = Convert.ToDateTime(input);


                    departArriveDates.Add(fromDate);
                    departArriveDates.Add(toDate);

                    IList <Site>       sites       = siteDAO.ListSitesAtCampgroundWithinDate(campgroundID, departArriveDates);
                    IList <Campground> campgrounds = campgroundDAO.ListCampgroundsFromPark(parkID);

                    decimal campgroundFee = 0;

                    if (sites.Count == 0)
                    {
                        Console.WriteLine("No Results. Press any key to enter an alternate date range.");
                        Console.ReadKey();
                        GetDates(campgroundID, parkID);
                    }

                    Console.WriteLine("Results Matching Your Criteria: ");

                    Console.WriteLine(string.Format("{0,-10}{1,-12}{2,-16}{3,-16}{4,-12}{5,-14}", "Site No.", "Max Occup.", "Accessible?", "Max RV Length", "Utility", "Cost"));
                    foreach (Site site in sites)
                    {
                        foreach (Campground campground in campgrounds)
                        {
                            if (site.CampgroundID == campground.CampgroundID)
                            {
                                campgroundFee = reservationDAO.GetTotalCost(campground.DailyFee, departArriveDates);
                            }
                        }

                        sitesToReserve.Add(site);
                        Console.WriteLine(string.Format("{0,-10}{1,-12}{2,-16}{3,-16}{4,-12}{5,-14}", site.SiteNumber, site.MaxOccupancy, site.Accessible, site.MaxRvLength, site.Utilities, campgroundFee.ToString("C")));
                    }
                    break;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            GetReservation(departArriveDates, sitesToReserve);
        }