package egovframework.constant;

/**
 * packageName    : go.kr.project.common.constant
 * fileName       : MessageConstants
 * author         : 개발자
 * date           : 2025-05-22
 * description    : 시스템에서 사용되는 메시지 상수를 정의하는 클래스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-05-22        개발자       최초 생성
 */
public class MessageConstants {

    /**
     * 로그인 관련 메시지
     */
    public static class Login {
        // 성공 메시지
        public static final String SUCCESS = "로그인에 성공하였습니다.";

        // 오류 메시지
        public static final String ERROR_INVALID_CREDENTIALS = "아이디 또는 비밀번호가 일치하지 않습니다.";
        public static final String ERROR_INACTIVE_ACCOUNT = "비활성화 계정입니다. 관리자에 문의하세요.";
        public static final String ERROR_PROCESS = "로그인 처리 중 오류가 발생했습니다.";
    }

    /**
     * 로그인 실패 관련 메시지
     */
    public static class LoginFailure {
        public static final String ABNORMAL_PATTERN_PREFIX = "비정상적인 로그인 패턴: ";
        public static final String USER_NOT_FOUND = "사용자 계정 없음";
        public static final String ACCOUNT_LOCKED = "계정 잠김";
        public static final String PASSWORD_MISMATCH = "비밀번호 불일치";
        public static final String ACCOUNT_INACTIVE = "계정 비활성화";

        public static final String MESSAGE_ACCOUNT_LOCKED = "사용자 계정이 잠겼습니다.";
    }

    /**
     * 로그아웃 관련 메시지
     */
    public static class Logout {
        // 성공 메시지
        public static final String SUCCESS = "로그아웃 되었습니다.";

        // 오류 메시지
        public static final String ERROR_PROCESS = "로그아웃 처리 중 오류가 발생했습니다.";
    }

    /**
     * 계정 관련 메시지
     */
    public static class Account {
        // 계정 잠금 관련 메시지
        public static final String UNLOCK_SUCCESS = "계정 잠금이 해제되었습니다.";
        public static final String UNLOCK_FAIL = "계정 잠금 해제에 실패했습니다.";
        public static final String UNLOCK_ERROR = "계정 잠금 해제 중 오류가 발생했습니다.";
    }

    /**
     * 로그인 로그 관련 메시지
     */
    public static class LoginLog {
        // 목록 조회 관련 메시지
        public static final String LIST_SUCCESS = "로그인 로그 목록을 조회하였습니다.";
        public static final String LIST_ERROR = "로그인 로그 목록 조회 중 오류가 발생했습니다.";

        // 상세 조회 관련 메시지
        public static final String DETAIL_SUCCESS = "로그인 로그 상세 정보를 조회하였습니다.";
        public static final String DETAIL_ERROR = "로그인 로그 상세 조회 중 오류가 발생했습니다.";
        public static final String NOT_EXIST = "존재하지 않는 로그입니다.";
    }

    /**
     * 통계 관련 메시지
     */
    public static class Stats {
        // 디바이스 유형별 통계
        public static final String DEVICE_SUCCESS = "디바이스 유형별 로그인 통계를 조회하였습니다.";
        public static final String DEVICE_ERROR = "디바이스 유형별 로그인 통계 조회 중 오류가 발생했습니다.";

        // 성공/실패 비율 통계
        public static final String SUCCESS_FAIL_SUCCESS = "로그인 성공/실패 비율 통계를 조회하였습니다.";
        public static final String SUCCESS_FAIL_ERROR = "로그인 성공/실패 비율 통계 조회 중 오류가 발생했습니다.";

        // 시간대별 통계
        public static final String HOURLY_SUCCESS = "시간대별 로그인 시도 통계를 조회하였습니다.";
        public static final String HOURLY_ERROR = "시간대별 로그인 시도 통계 조회 중 오류가 발생했습니다.";
    }

    /**
     * 권한 관련 메시지
     */
    public static class Auth {
        // 메뉴-역할 관련 메시지
        public static final String MENU_ROLE_ASSIGN_SUCCESS = "메뉴가 역할에 성공적으로 할당되었습니다.";
        public static final String MENU_ROLE_REMOVE_SUCCESS = "메뉴가 역할에서 성공적으로 제거되었습니다.";

        // 역할-그룹 관련 메시지
        public static final String ROLE_GROUP_ASSIGN_SUCCESS = "역할이 그룹에 성공적으로 할당되었습니다.";
        public static final String ROLE_GROUP_REMOVE_SUCCESS = "역할이 그룹에서 성공적으로 제거되었습니다.";
    }

    /**
     * 코드 관련 메시지
     */
    public static class Code {
        // 코드 상세 관련 메시지
        public static final String DETAIL_SAVE_SUCCESS = "코드 상세 정보가 성공적으로 저장되었습니다.";

        // 그룹코드 관련 메시지
        public static final String GROUP_SAVE_SUCCESS = "그룹코드 정보가 성공적으로 저장되었습니다.";
    }

    /**
     * 그룹 관련 메시지
     */
    public static class Group {
        // 그룹 저장 관련 메시지
        public static final String SAVE_SUCCESS = "그룹이 성공적으로 저장되었습니다.";
    }

    /**
     * 메뉴 관련 메시지
     */
    public static class Menu {
        // 성공 메시지
        public static final String REGISTER_SUCCESS = "메뉴가 성공적으로 등록되었습니다.";
        public static final String EDIT_SUCCESS = "메뉴 정보가 성공적으로 수정되었습니다.";
        public static final String DELETE_SUCCESS = "메뉴가 성공적으로 삭제되었습니다.";

        // 오류 메시지
        public static final String ROOT_REGISTER_ERROR = "ROOT 메뉴 ID로 새 메뉴를 등록할 수 없습니다.";
        public static final String UPPER_MENU_REQUIRED = "상위 메뉴를 선택해주세요.";
        public static final String REGISTER_ERROR = "메뉴 등록에 실패했습니다.";
        public static final String ROOT_EDIT_ERROR = "ROOT 메뉴는 수정할 수 없습니다.";
        public static final String EDIT_ERROR = "메뉴 정보 수정에 실패했습니다.";
        public static final String ROOT_DELETE_ERROR = "ROOT 메뉴는 삭제할 수 없습니다.";
        public static final String CHILD_EXISTS_ERROR = "하위 메뉴가 존재하여 삭제할 수 없습니다.";
        public static final String DELETE_ERROR = "메뉴 삭제에 실패했습니다.";
    }

    /**
     * 역할 관련 메시지
     */
    public static class Role {
        // 성공 메시지
        public static final String SAVE_SUCCESS = "역할이 성공적으로 저장되었습니다.";

        // 오류 메시지
        public static final String SAVE_ERROR = "역할 저장에 실패했습니다.";
    }

    /**
     * 사용자 관련 메시지
     */
    public static class User {
        // 성공 메시지
        public static final String REGISTER_SUCCESS = "사용자가 성공적으로 등록되었습니다.";
        public static final String EDIT_SUCCESS = "사용자 정보가 성공적으로 수정되었습니다.";
        public static final String PASSWORD_RESET_SUCCESS = "비밀번호가 성공적으로 초기화되었습니다.";
        public static final String UNLOCK_SUCCESS = "사용자 잠금이 성공적으로 해제되었습니다.";

        // 오류 메시지
        public static final String REGISTER_ERROR = "사용자 등록에 실패했습니다.";
        public static final String EDIT_ERROR = "사용자 정보 수정에 실패했습니다.";
        public static final String NOT_FOUND = "사용자 정보를 찾을 수 없습니다.";
        public static final String PASSWORD_RESET_ERROR = "비밀번호 초기화에 실패했습니다.";
        public static final String UNLOCK_ERROR = "사용자 잠금 해제에 실패했습니다.";
    }

    /**
     * 사용자 그룹 관련 메시지
     */
    public static class UserGroup {
        // 성공 메시지
        public static final String GROUP_LIST_SUCCESS = "그룹 목록을 성공적으로 조회했습니다.";
        public static final String ROLE_LIST_SUCCESS = "역할 목록을 성공적으로 조회했습니다.";
        public static final String MENU_LIST_SUCCESS = "메뉴 목록을 성공적으로 조회했습니다.";

        // 오류 메시지
        public static final String GROUP_LIST_ERROR = "그룹 목록 조회 중 오류가 발생했습니다: ";
        public static final String ROLE_LIST_ERROR = "역할 목록 조회 중 오류가 발생했습니다: ";
        public static final String MENU_LIST_ERROR = "메뉴 목록 조회 중 오류가 발생했습니다: ";
    }

    /**
     * 공통 메시지
     */
    public static class Common {
        // 성공 메시지
        public static final String SAVE_SUCCESS = "저장되었습니다.";
        public static final String UPDATE_SUCCESS = "수정되었습니다.";
        public static final String DELETE_SUCCESS = "삭제되었습니다.";

        // 오류 메시지
        public static final String SAVE_ERROR = "저장 중 오류가 발생했습니다.";
        public static final String UPDATE_ERROR = "수정 중 오류가 발생했습니다.";
        public static final String DELETE_ERROR = "삭제 중 오류가 발생했습니다.";
        public static final String SYSTEM_ERROR = "시스템 오류가 발생했습니다.";
    }
}
