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; } } }