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