package main;

import frames.AdminManagement;
import frames.SignInManagement;
import frames.StaffManagement;
import function.Function;
import java.sql.Connection;
import object.UserApp;

public class Main {

    public static Connection sqlServerConn;

    public static SignInManagement signIn;
    public static AdminManagement adminManagement;
    public static StaffManagement staffManagement;

    public static UserApp userApp;

    public static void main(String[] args) {
        //Tạo kết nối
        Main.sqlServerConn = function.database.Connection.buildSQLServerConnection();
        if (Main.sqlServerConn == null) {
            Function.alert("Không thể kết nối đến database!\nHãy kiểm tra lại!");
            Function.exit();
        }
        do {
            //form đăng nhập
            if (Main.signIn == null) {
                Main.signIn = new SignInManagement();
            }
            Main.signIn.clearForm();
            Main.signIn.setVisible(true);
            do {
                Function.sleep(100);
            } while (Main.signIn.isVisible());
            if (!Main.userApp.isStatus()) {
                Function.alert("Tài khoản hiện đang bỏ kích hoạt, liên hệ anh thiên dể mở!");
                continue;
            }
            //
            switch (Main.userApp.getRoles()) {
                case UserApp.USER_NO_ROLE:
                    Function.alert("Có lỗi sảy ra, vui lòng liên hệ anh thiên để sử lý!");
                    Function.exit();
                    break;
                case UserApp.USER_ROLE_STAFF:
                    if (Main.staffManagement == null) {
                        Main.staffManagement = new StaffManagement();
                    }
                    Main.staffManagement.setVisible(true);
                    do {
                        Function.sleep(100);
                    } while (Main.staffManagement.isVisible());
                    break;
                case UserApp.USER_ROLE_ADMIN:
                    if (Main.adminManagement == null) {
                        Main.adminManagement = new AdminManagement();
                    }
                    Main.adminManagement.setVisible(true);
                    do {
                        Function.sleep(100);
                    } while (Main.adminManagement.isVisible());
                    break;
                default:
                    Function.alert("Quyền trong tài khoản không hợp lệ!");
            }
        } while (true);
    }
}
