Esempio n. 1
0
        public void UserMainMenu()
        {
            Console.Clear();
            Console.Write(Constant.UserMainMenuOption);
            UserMainMenuOption option = (UserMainMenuOption)Helper.ValidInteger();

            switch (option)
            {
            case UserMainMenuOption.CreateRide:
                this.BookingServices.CreateBooking(UserInput.GetRideDetail());
                UserMainMenu();

                break;

            case UserMainMenuOption.BookARide:
                Booking     booking = UserInput.GetBooking();
                List <Ride> rides   = this.BookingServices.ViewRideOffer(booking);
                if (rides.Count > 0)
                {
                    foreach (var ride in rides)
                    {
                        Console.Clear();
                        Console.WriteLine(booking.Id);
                        Display.OfferRide(ride);
                        if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                        {
                            if (!this.BookingServices.RequestBooking(booking, ride.Id))
                            {
                                Console.WriteLine(Constant.InvalidBookingRequest);
                            }
                            else
                            {
                                Console.WriteLine(Constant.RequestSentToOwner);
                            }
                        }
                    }
                }
                else
                {
                    Console.WriteLine(Constant.NoRequestCurrently);
                }

                Console.ReadKey();
                UserMainMenu();

                break;

            case UserMainMenuOption.ViewStatus:
                Console.Write(Constant.CheckRequestStatusOption);
                BookingStatusMenuOption statusOption = (BookingStatusMenuOption)Helper.ValidInteger();
                switch (statusOption)
                {
                case BookingStatusMenuOption.RideOffer:
                    rides = this.BookingServices.ViewCreatedRideStatus();
                    foreach (var ride in rides)
                    {
                        foreach (var bookingId in ride.RequestBookerId)
                        {
                            Display.BookingRequest(AppDataServices.GetBooking(bookingId));
                            switch (UserInput.BookingChoice())
                            {
                            case BookingStatus.Confirm:
                                if (!this.BookingServices.SeatBookingConfirm(bookingId))
                                {
                                    Console.WriteLine(Constant.SeatFull);
                                }
                                else
                                {
                                    Console.WriteLine(Constant.SeatBookResponse);
                                }
                                break;

                            case BookingStatus.Rejected:
                                this.BookingServices.SeatBookingReject(bookingId);

                                break;
                            }
                            if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                            {
                                break;
                            }
                        }

                        if (rides.Count < 1)
                        {
                            Console.WriteLine(Constant.NoRequestCurrently);
                        }

                        Console.ReadKey();
                        UserMainMenu();
                    }
                    break;

                case BookingStatusMenuOption.RideRequest:
                    List <Booking> bookings = this.BookingServices.ViewSeatBookingRequestStatus();
                    foreach (var book in bookings)
                    {
                        Display.BookingRequest(book);
                        switch (book.Status)
                        {
                        case BookingStatus.Confirm:
                            Console.WriteLine(Constant.DisplayConfirmBooking);

                            break;

                        case BookingStatus.Rejected:
                            Console.WriteLine(Constant.DisplayRejectBooking);

                            break;

                        case BookingStatus.Pending:
                            Console.WriteLine(Constant.DisplayWaitingBooking);

                            break;
                        }
                        if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                        {
                            break;
                        }
                    }
                    Console.ReadKey();
                    UserMainMenu();

                    break;

                case BookingStatusMenuOption.RiderDetail:
                    rides = this.BookingServices.ViewOfferStatus();
                    foreach (var ride in rides)
                    {
                        Console.Clear();
                        Display.OfferRide(ride);
                        int travellerCount = ride.AcceptedBookerId.Count;
                        Console.WriteLine(Constant.PassangerCount + travellerCount);
                    }
                    Console.ReadKey();
                    UserMainMenu();

                    break;

                case BookingStatusMenuOption.SignOut:
                    Program.MainMenu();

                    break;

                case BookingStatusMenuOption.Exit:
                    Environment.Exit(0);

                    break;
                }
                UserMainMenu();

                break;

            case UserMainMenuOption.ModifyRide:
                rides = this.BookingServices.ViewOfferStatus();
                foreach (var ride in rides)
                {
                    Console.Clear();
                    Display.OfferRide(ride);
                    int confirmBookingCount = ride.AcceptedBookerId.Count;
                    Console.WriteLine(Constant.PassangerCount + confirmBookingCount);
                    Console.WriteLine(Constant.ConfirmOption);
                    if (UserInput.Confirmation() == ConfirmationResponse.Yes && confirmBookingCount == 0)
                    {
                        this.BookingServices.ModifyRide(UserInput.GetRideDetail(), ride);
                    }
                }

                break;

            case UserMainMenuOption.DeleteRide:
                rides = this.BookingServices.ViewOfferStatus();
                foreach (var ride in rides)
                {
                    Console.Clear();
                    Display.OfferRide(ride);
                    int ConfirmBookingCount = ride.AcceptedBookerId.Count;
                    Console.WriteLine(Constant.PassangerCount + ConfirmBookingCount);
                    Console.WriteLine(Constant.ConfirmOption);
                    if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                    {
                        this.BookingServices.DeleteRideOffer(ride);
                    }
                }

                Console.ReadKey();
                UserMainMenu();

                break;

            case UserMainMenuOption.UpdateAccountDetail:
                if (AppDataServices.UpdateUserDetail(UserInput.NewUser(), AppDataServices.GetUser(this.UserId)))
                {
                    Console.WriteLine(Constant.UpdateDetailResponse);
                }

                break;

            case UserMainMenuOption.DeleteUserAccount:
                Console.WriteLine(Constant.Confirmation);
                if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                {
                    if (AppDataServices.DeleteUser(AppDataServices.GetUser(this.UserId)))
                    {
                        Console.WriteLine(Constant.AccountDeleteResponse);
                    }
                }

                break;

            case UserMainMenuOption.SignOut:
                Program.MainMenu();

                break;

            case UserMainMenuOption.Exit:
                Environment.Exit(0);

                break;
            }

            UserMainMenu();
        }
        public void BookingStatus()
        {
            Console.Write(Constant.RequestStatusOptions);
            BookingStatusMenu statusOption = (BookingStatusMenu)Helper.ValidInteger();

            switch (statusOption)
            {
            case BookingStatusMenu.RideOffer:

                List <Ride> rides = this.RideService.GetRides(this.Id);
                foreach (var ride in rides)
                {
                    var pendingBookings = this.BookingService.GetAllPendingReviewBookings(ride.Id);

                    foreach (var pendingBooking in pendingBookings)
                    {
                        Display.BookingRequest(AppDataService.Bookings.FirstOrDefault(a => a.Id == pendingBooking.Id));
                    }
                }

                foreach (var ride in rides)
                {
                    var pendingBookings = this.BookingService.GetAllPendingReviewBookings(ride.Id);
                    foreach (var pendingBooking in pendingBookings)
                    {
                        Display.BookingRequest(AppDataService.Bookings.FirstOrDefault(a => a.Id == pendingBooking.Id));

                        BookingStatus status = UserInput.BookingChoice();
                        if (this.RideService.SeatBookingResponse(pendingBooking.RideId) && status == Models.BookingStatus.Confirm)
                        {
                            this.BookingService.BookingResponse(pendingBooking.Id, Models.BookingStatus.Confirm);
                        }
                        else if (status == Models.BookingStatus.Pending)
                        {
                        }
                        else
                        {
                            this.BookingService.BookingResponse(pendingBooking.Id, Models.BookingStatus.Rejected);
                        }
                    }
                }
                if (rides.Count < 1)
                {
                    Console.WriteLine(Constant.NoRequests);
                }

                Console.ReadKey();
                UserMainMenu();

                break;

            case BookingStatusMenu.RideRequest:
                List <Booking> bookings = this.BookingService.GetUserBookings(this.Id);

                foreach (var offer in bookings)
                {
                    Console.Write(bookings.IndexOf(offer) + 1);
                    Display.BookingRequest(offer);
                }
                Console.Write("Select any of the booking or for exit press 0");

                while (true)
                {
                    int choice = Helper.ValidInteger();
                    if (choice <= bookings.Count && choice != 0)
                    {
                        switch (bookings[choice - 1].Status)
                        {
                        case Models.BookingStatus.Confirm:
                            Console.WriteLine(Constant.ConfirmedBooking);

                            break;

                        case Models.BookingStatus.Rejected:
                            Console.WriteLine(Constant.RejectedBooking);

                            break;

                        case Models.BookingStatus.Pending:
                            Console.WriteLine(Constant.WaitingBooking);

                            break;
                        }
                        break;
                    }
                    else if (choice == 0)
                    {
                        break;
                    }
                }

                if (bookings.Count < 1)
                {
                    Console.Write(Constant.NoRideOfferCreated);
                }

                Console.ReadKey();
                UserMainMenu();

                break;

            case BookingStatusMenu.RiderDetail:
                rides = AppDataService.Rides.Where(a => a.OwnerId == this.Id).Select(a => a).ToList();
                foreach (var ride in rides)
                {
                    int travellerCount = this.BookingService.GetBookings(ride.Id).Count;
                    Console.WriteLine(Constant.NoOfBookedSeats + travellerCount);
                    Display.OfferRide(ride);
                }
                Console.ReadKey();
                UserMainMenu();

                break;

            case BookingStatusMenu.SignOut:
                Program.MainMenu();

                break;

            case BookingStatusMenu.Exit:
                Environment.Exit(0);

                break;
            }
        }