Admin

mail@pastecode.io avatar
unknown
java
2 months ago
4.5 kB
2
Indexable
Never
package assignments.assignment3.systemCLI;

import java.util.ArrayList;
import java.util.Scanner;
import assignments.assignment3.Restaurant;
import assignments.assignment3.Menu;

//Memungkinkan admin untuk menambah dan menghapus restoran
public class AdminSystemCLI extends UserSystemCLI {
    private ArrayList<Restaurant> restaurants; // Daftar yang menyimpan semua restoran
    private Scanner scanner; // Scanner untuk membaca input dari pengguna

    public AdminSystemCLI(ArrayList<Restaurant> restaurants) {
        this.restaurants = restaurants;
        this.scanner = new Scanner(System.in);
    }

    public void closeScanner() {
        if (scanner != null) {
            scanner.close();
            scanner = null;  // Help GC
        }
    }

    //Menangani menu utama admin berdasarkan perintah yang dimasukkan
    @Override
    public boolean handleMenu(int command) {
        switch (command) {
            case 1 -> handleTambahRestoran();
            case 2 -> handleHapusRestoran();
            case 3 -> {
                closeScanner();
                return false;
            }
            default -> System.out.println("Perintah tidak diketahui, silakan coba kembali");
        }
        return true;
    }

    // Menampilkan menu admin.
    @Override
    public void displayMenu() {
        System.out.println("\n--------------------------------------------");
        System.out.println("Pilih menu:");
        System.out.println("1. Tambah Restoran");
        System.out.println("2. Hapus Restoran");
        System.out.println("3. Keluar");
        System.out.println("--------------------------------------------");
        System.out.print("Pilihan menu: ");
    }

    // Menangani penambahan restoran baru
    protected void handleTambahRestoran() {
        System.out.print("Masukkan nama restoran: ");
        String namaRestoran = scanner.nextLine().trim();
    
        // Validasi panjang nama restoran minimal 4 karakter
        if (namaRestoran.length() < 4) {
            System.out.println("Nama Restoran tidak valid! Masukkan nama yang memiliki minimal 4 karakter.");
            return; // Kembali ke menu utama jika nama tidak valid
        }
    
        // Cek apakah restoran sudah terdaftar
        if (checkIfRestaurantExists(namaRestoran)) {
            System.out.println("Restoran dengan nama tersebut sudah terdaftar.");
            return;
        }
        System.out.print("Jumlah Makanan: ");
        int menuCount = Integer.parseInt(scanner.nextLine()); // Mengambil jumlah item menu
    
        ArrayList<Menu> menuList = new ArrayList<>();
        for (int i = 0; i < menuCount; i++) {
            System.out.print("Masukkan nama makanan: ");
            String namaMakanan = scanner.nextLine();
            System.out.print("Masukkan harga: ");
            double harga;
            try {
                harga = Double.parseDouble(scanner.nextLine());
            } catch (NumberFormatException e) {
                System.out.println("Harga harus berupa angka. Silakan masukkan kembali nama dan harga makanan.");
                i--; // Mengulang input untuk item menu ini
                continue;
            }
            menuList.add(new Menu(namaMakanan, harga));
        }
        // Menambahkan restoran ke daftar dengan lokasi default
        restaurants.add(new Restaurant(namaRestoran, menuList, "Default Location")); // Menetapkan lokasi default atau modifikasi sesuai kebutuhan
        System.out.println("Restaurant " + namaRestoran + " berhasil terdaftar.");
    }

    // Menangani penghapusan restoran yang ada
    protected void handleHapusRestoran() {
        System.out.print("Masukkan nama restoran yang akan dihapus: ");
        String namaRestoran = scanner.nextLine().trim();

        if (removeRestaurant(namaRestoran)) {
            System.out.println("Restoran berhasil dihapus.");
        } else {
            System.out.println("Restoran tidak ditemukan.");
        }
    }

    //Mengecek apakah restoran sudah terdaftar
    private boolean checkIfRestaurantExists(String namaRestoran) {
        return restaurants.stream().anyMatch(restaurant -> restaurant.getNama().equalsIgnoreCase(namaRestoran));
    }

    // Menghapus restoran berdasarkan nama
    private boolean removeRestaurant(String namaRestoran) {
        return restaurants.removeIf(restaurant -> restaurant.getNama().equalsIgnoreCase(namaRestoran));
    }
}
Leave a Comment