Untitled
unknown
java
a year ago
7.5 kB
4
Indexable
package assignments.assignment3.systemCLI; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.List; import assignments.assignment1.OrderGenerator; import assignments.assignment3.Order; import assignments.assignment3.Restaurant; import assignments.assignment3.payment.CreditCardPayment; import assignments.assignment3.payment.DepeFoodPaymentSystem; public class CustomerSystemCLI extends UserSystemCLI { @Override boolean handleMenu(int choice) { switch (choice) { case 1 -> handleBuatPesanan(); case 2 -> handleCetakBill(); case 3 -> handleLihatMenu(); case 4 -> handleBayarBill(); case 5 -> handleCekSaldo(); case 6 -> { return false; } default -> System.out.println("Perintah tidak diketahui, silakan coba kembali"); } return true; } @Override void displayMenu() { System.out.println("\n--------------------------------------------"); System.out.println("Pilih menu:"); System.out.println("1. Buat Pesanan"); System.out.println("2. Cetak Bill"); System.out.println("3. Lihat Menu"); System.out.println("4. Bayar Bill"); System.out.println("5. Cek Saldo"); System.out.println("6. Keluar"); System.out.println("--------------------------------------------"); System.out.print("Pilihan menu: "); } private void handleBuatPesanan() { System.out.println("--------------Buat Pesanan----------------"); while (true) { System.out.print("Nama Restoran: "); String restaurantName = input.nextLine().trim(); Restaurant restaurant = getRestaurantByName(restaurantName); if (restaurant == null) { System.out.println("Restoran tidak terdaftar pada sistem.\n"); continue; } System.out.print("Tanggal Pemesanan (DD/MM/YYYY): "); String tanggalPemesanan = input.nextLine().trim(); if (!OrderGenerator.validateDate(tanggalPemesanan)) { System.out.println("Masukkan tanggal sesuai format (DD/MM/YYYY)"); System.out.println(); continue; } System.out.print("Jumlah Pesanan: "); int jumlahPesanan = Integer.parseInt(input.nextLine().trim()); System.out.println("Order: "); List<String> listMenuPesananRequest = new ArrayList<>(); for (int i = 0; i < jumlahPesanan; i++) { listMenuPesananRequest.add(input.nextLine().trim()); } if (!validateRequestPesanan(restaurant, listMenuPesananRequest)) { System.out.println("Mohon memesan menu yang tersedia di Restoran!"); continue; } Order order = new Order( OrderGenerator.generateOrderID(restaurantName, tanggalPemesanan, userLoggedIn.getNomorTelepon()), tanggalPemesanan, OrderGenerator.calculateDeliveryCost(userLoggedIn.getLokasi()), restaurant, getMenuRequest(restaurant, listMenuPesananRequest)); System.out.printf("Pesanan dengan ID %s diterima!", order.getOrderId()); userLoggedIn.addOrderHistory(order); return; } } private void handleCetakBill() { System.out.println("--------------Cetak Bill----------------"); while (true) { System.out.print("Masukkan Order ID: "); String orderId = input.nextLine().trim(); Order order = getOrderOrNull(orderId); if (order == null) { System.out.println("Order ID tidak dapat ditemukan.\n"); continue; } System.out.println(""); System.out.print(outputBillPesanan(order)); return; } } void handleLihatMenu() { System.out.println("--------------Lihat Menu----------------"); while (true) { System.out.print("Nama Restoran: "); String restaurantName = input.nextLine().trim(); Restaurant restaurant = getRestaurantByName(restaurantName); if (restaurant == null) { System.out.println("Restoran tidak terdaftar pada sistem.\n"); continue; } System.out.print(restaurant.printMenu()); return; } } void handleUpdateStatusPesanan(Order order) { order.setOrderFinished(true); } void handleBayarBill() { System.out.println("--------------Bayar Bill----------------"); while (true) { System.out.print("Masukkan Order ID: "); String orderId = input.nextLine().trim(); Order order = getOrderOrNull(orderId); if (order == null) { System.out.println("Order ID tidak dapat ditemukan.\n"); continue; } if (order.getOrderFinished()) { System.out.println("Pesanan dengan ID ini sudah lunas!\n"); return; } System.out.println(outputBillPesanan(order)); System.out.println("Opsi Pembayaran:"); System.out.println("1. Credit Card"); System.out.println("2. Debit"); System.out.print("Pilihan Metode Pembayaran: "); String paymentOption = input.nextLine().trim(); if (!paymentOption.equals("1") && !paymentOption.equals("2")) { System.out.println("Pilihan tidak valid, silakan coba kembali\n"); continue; } DepeFoodPaymentSystem paymentSystem = userLoggedIn.getPaymentSystem(); boolean isCreditCard = paymentSystem instanceof CreditCardPayment; if ((isCreditCard && paymentOption.equals("2")) || (!isCreditCard && paymentOption.equals("1"))) { System.out.println("User belum memiliki metode pembayaran ini!\n"); continue; } long amountToPay = 0; try { amountToPay = paymentSystem.processPayment(userLoggedIn.getSaldo(), (long) order.getTotalHarga()); } catch (Exception e) { System.out.println(e.getMessage()); System.out.println(); continue; } long saldoLeft = userLoggedIn.getSaldo() - amountToPay; userLoggedIn.setSaldo(saldoLeft); handleUpdateStatusPesanan(order); DecimalFormat decimalFormat = new DecimalFormat(); DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator('.'); decimalFormat.setDecimalFormatSymbols(symbols); System.out.printf("Berhasil Membayar Bill sebesar Rp %s", decimalFormat.format(amountToPay)); return; } } void handleCekSaldo() { System.out.println("--------------Cek Saldo----------------"); DecimalFormat decimalFormat = new DecimalFormat(); DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator('.'); decimalFormat.setDecimalFormatSymbols(symbols); System.out.printf("Sisa saldo sebesar Rp %s", decimalFormat.format(userLoggedIn.getSaldo())); } }
Editor is loading...
Leave a Comment