示例#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 UserMainMenu()
        {
            Console.Write(Constant.UserMainMenuOptions);
            HomeMenu option = (HomeMenu)Helper.ValidInteger();
            var      user   = this.UserService.GetUser(this.Id);

            if (user != null)
            {
                switch (option)
                {
                case HomeMenu.CreateRide:
                    List <Car> cars = this.CarService.GetCars(this.Id);
                    if (cars != null && cars.Any())
                    {
                        foreach (var car in cars)
                        {
                            Console.Write((cars.IndexOf(car) + 1) + ". " + car.Model + " " + car.Number + "\n");
                        }
                        Console.WriteLine(Constant.CarSelection);
                        while (true)
                        {
                            int choice = Helper.ValidInteger();
                            if (choice <= cars.Count && choice != 0)
                            {
                                Ride ride = UserInput.GetRideDetail();
                                ride.CarId = cars[choice - 1].Id;

                                Car carRecord = AppDataService.Cars.FirstOrDefault(a => a.Id == ride.CarId);
                                while (true)
                                {
                                    Console.Write(Constant.AvailableSeats);
                                    ride.AvailableSeats = Helper.ValidInteger();
                                    if (carRecord.NoofSeat >= ride.AvailableSeats)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        Console.WriteLine(Constant.InvalidAvailableSeats);
                                    }
                                }
                                this.RideService.CreateRide(ride);
                                break;
                            }
                            else if (choice == 0)
                            {
                                break;
                            }
                            else
                            {
                                Console.WriteLine(Constant.InValidInput);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine(Constant.NoCarsAdded);
                        if (this.CarService.AddNewCar(UserInput.GetCarDetails()))
                        {
                            Console.WriteLine(Constant.AllowRide);
                        }
                    }
                    Console.ReadLine();
                    UserMainMenu();

                    break;

                case HomeMenu.BookARide:
                    SearchRideRequest bookingRequest = UserInput.GetBooking();
                    List <Ride>       rides          = this.RideService.GetRidesOffer(bookingRequest);
                    if (rides != null && rides.Count > 0)
                    {
                        foreach (var ride in rides)
                        {
                            Console.Write(rides.IndexOf(ride) + 1);
                            Display.OfferRide(ride);
                        }
                        Console.WriteLine(Constant.RideSelection);

                        while (true)
                        {
                            int choice = Helper.ValidInteger();
                            if (choice <= rides.Count && choice != 0)
                            {
                                Booking booking = new Booking
                                {
                                    From       = bookingRequest.From,
                                    To         = bookingRequest.To,
                                    TravelDate = bookingRequest.TravelDate
                                };
                                if (this.BookingService.CreateBooking(booking, rides[choice - 1].Id))
                                {
                                    Console.WriteLine(Constant.RequestSentToOwner);
                                }
                                else
                                {
                                    Console.WriteLine(Constant.InvalidBookingRequest);
                                }

                                break;
                            }
                            else if (choice == 0)
                            {
                                Console.WriteLine("Ok select another time");
                                break;
                            }
                            else
                            {
                                Console.WriteLine(Constant.CorrectSelection);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine(Constant.NoRequests);
                    }

                    Console.ReadKey();
                    UserMainMenu();

                    break;

                case HomeMenu.ViewStatus:
                    BookingStatus();
                    UserMainMenu();

                    break;

                case HomeMenu.AddNewCar:
                    if (this.CarService.AddNewCar(UserInput.GetCarDetails()))
                    {
                        Console.Write("Car added");
                    }
                    else
                    {
                        Console.WriteLine("Sorry car not added right now");
                    }

                    UserMainMenu();

                    break;

                case HomeMenu.ModifyRide:
                    rides = this.RideService.GetRides(this.Id);
                    foreach (var ride in rides)
                    {
                        Console.Write(rides.IndexOf(ride));
                        Display.OfferRide(ride);
                    }
                    Console.Write("Select ride offer or for exit press 0");

                    while (true)
                    {
                        int choice = Helper.ValidInteger();
                        if (choice <= rides.Count && choice != 0)
                        {
                            Display.OfferRide(rides[choice - 1]);
                            Ride newRide = UserInput.GetRideDetail();
                            if (UserInput.Confirmation() == ConfirmationResponse.Yes && this.BookingService.GetBookings(this.Id).Count == 0)
                            {
                                this.RideService.ModifyRide(newRide, rides[choice - 1].Id);
                                break;
                            }
                        }
                        else if (choice == 0)
                        {
                            break;
                        }
                    }

                    break;

                case HomeMenu.DeleteRide:
                    rides = this.RideService.GetRides(this.Id);
                    foreach (var ride in rides)
                    {
                        Console.Write(rides.IndexOf(ride) + 1);
                        Display.OfferRide(ride);
                    }
                    while (true)
                    {
                        int choice = Helper.ValidInteger();
                        Display.OfferRide(rides[choice - 1]);
                        if (choice <= rides.Count && choice != 0)
                        {
                            Console.WriteLine(Constant.Confirmation);
                            if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                            {
                                this.RideService.CancelRide(rides[choice - 1].Id);
                            }
                        }
                        else if (choice == 0)
                        {
                            break;
                        }
                    }
                    Console.ReadKey();
                    UserMainMenu();

                    break;

                case HomeMenu.UpdateAccountDetail:
                    UpdateMenu();

                    break;

                case HomeMenu.DeleteUserAccount:
                    Console.WriteLine(Constant.Confirmation);
                    if (UserInput.Confirmation() == ConfirmationResponse.Yes)
                    {
                        if (this.UserService.DeleteUser(this.Id))
                        {
                            Console.WriteLine(Constant.DeleteAccoutResponse);
                        }
                    }

                    break;

                case HomeMenu.SignOut:
                    Program.MainMenu();

                    break;

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

                    break;
                }
            }
        }