mainmnu

 avatar
unknown
java
a year ago
5.4 kB
4
Indexable
package assignments.assignment3;

import java.util.ArrayList;
import java.util.NoSuchElementException;
import java.util.Scanner;
import assignments.assignment3.payment.DebitPayment;
import assignments.assignment3.payment.CreditCardPayment;
import assignments.assignment3.systemCLI.AdminSystemCLI;
import assignments.assignment3.systemCLI.CustomerSystemCLI;
import assignments.assignment3.systemCLI.UserSystemCLI;

public class MainMenu {
    private static final Scanner input = new Scanner(System.in); // Keep this scanner open
    private final LoginManager loginManager;
    private static ArrayList<Restaurant> restaurants = new ArrayList<>();
    private static ArrayList<User> users = new ArrayList<>();

    public MainMenu(LoginManager loginManager) {
        this.loginManager = loginManager;
        initUsers();
    }

    public static void main(String[] args) {
        AdminSystemCLI adminCLI = new AdminSystemCLI(restaurants);
        CustomerSystemCLI customerCLI = new CustomerSystemCLI(restaurants, null);
        LoginManager loginManager = new LoginManager(adminCLI, customerCLI);
        new MainMenu(loginManager).run();
    }

    public void run() {
        try {
            printHeader();
            boolean exit = false;
            while (!exit) {
                startMenu();
                try {
                    int choice = Integer.parseInt(input.nextLine().trim());
                    switch (choice) {
                        case 1:
                            login();
                            break;
                        case 2:
                            exit = true;
                            System.out.println("Terima kasih telah menggunakan DepeFood!");
                            break;
                        default:
                            System.out.println("Pilihan tidak valid, silakan coba lagi.");
                    }
                } catch (NumberFormatException e) {
                    System.out.println("Silakan masukkan angka yang valid.");
                } catch (NoSuchElementException e) {
                    System.out.println("No further input available.");
                    exit = true; // Exit if no more input is available
                }
            }
        } finally {
            input.close(); // Ensure the scanner is closed only once when all operations are done
        }
    }

    private void login() {
        System.out.println("\nSilakan Login:");
        System.out.print("Nama: ");
        String name = input.nextLine();
        System.out.print("Nomor Telepon: ");
        String phone = input.nextLine();

        User user = getUser(name, phone);
        if (user != null) {
            System.out.println("Selamat Datang " + user.getNama() + "!");
            UserSystemCLI userSystem = loginManager.getSystem(user.getRole());
            if (userSystem instanceof CustomerSystemCLI) {
                ((CustomerSystemCLI) userSystem).setUser(user);
            }
            userSystem.run();
        } else {
            System.out.println("Pengguna tidak ditemukan atau data salah.");
        }
    }

    private User getUser(String name, String phone) {
        return users.stream()
                    .filter(u -> u.getNama().equalsIgnoreCase(name) && u.getNomorTelepon().equals(phone))
                    .findFirst()
                    .orElse(null);
    }

    private static void printHeader() {
        System.out.println("\n>>=======================================<<");
        System.out.println("|| ___                 ___             _ ||");
        System.out.println("||| . \\ ___  ___  ___ | __>___  ___  _| |||");
        System.out.println("||| | |/ ._>| . \\/ ._>| _>/ . \\/ . \\/ . |||");
        System.out.println("|||___/\\___.|  _/\\___.|_| \\___/\\___/\\___|||");
        System.out.println("||          |_|                          ||");
        System.out.println(">>=======================================<<");
    }

    private void startMenu() {
        System.out.println("Selamat datang di DepeFood!");
        System.out.println("--------------------------------------------");
        System.out.println("Pilih menu:");
        System.out.println("1. Login");
        System.out.println("2. Keluar");
        System.out.println("--------------------------------------------");
        System.out.print("Pilihan menu: ");
    }

    private static void initUsers() {
        users.add(new User("Thomas N", "9928765403", "thomas.n@gmail.com", "P", "Customer", new DebitPayment(), 500000));
        users.add(new User("Sekar Andita", "089877658190", "dita.sekar@gmail.com", "B", "Customer", new CreditCardPayment(), 2000000));
        users.add(new User("Sofita Yasusa", "084789607222", "sofita.susa@gmail.com", "T", "Customer", new DebitPayment(), 750000));
        users.add(new User("Dekdepe G", "080811236789", "ddp2.gampang@gmail.com", "S", "Customer", new CreditCardPayment(), 1800000));
        users.add(new User("Aurora Anum", "087788129043", "a.anum@gmail.com", "U", "Customer", new DebitPayment(), 650000));
        users.add(new User("Admin", "123456789", "admin@gmail.com", "-", "Admin", new CreditCardPayment(), 0));
        users.add(new User("Admin Baik", "9123912308", "admin.b@gmail.com", "-", "Admin", new CreditCardPayment(), 0));
    }
}
Editor is loading...
Leave a Comment