package com.icomsys.main_vm.common.code.enumresource;

import lombok.Getter;

import java.util.Arrays;
import java.util.List;

@Getter
public enum MenuResource {

    root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "/admin/common/dashboard/manage.do"),
//    root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "0"),
    rcpconversation("rcp", 1800000L, 1L, 2, "대화관리", "대화관리", "0"),
    rcpconversationintentmanage("rcp", 1800001L, 1800000L, 3, "인텐트관리", "인텐트관리", "/admin/rcp/conversation/intent/manage.do"),
    rcpconversationscenariomanage("rcp", 1800002L, 1800000L, 3, "시나리오관리", "시나리오관리", "/admin/rcp/conversation/scenario/manage.do"),
    rcpconversationsynonymmanage("rcp", 1800003L, 1800000L, 3, "동의어관리", "동의어관리", "/admin/rcp/conversation/synonym/manage.do"),
    rcpconversationsystemEntitymanage("rcp", 1800004L, 1800000L, 3, "시스템엔티티", "시스템엔티티", "/admin/rcp/conversation/systemEntity/manage.do"),
    rcpconversationapiNodemanage("rcp", 1800005L, 1800000L, 3, "API노드관리", "API노드관리", "/admin/rcp/conversation/apiNode/manage.do"),
    rcpconversationcmmNodemanage("rcp", 1800006L, 1800000L, 3, "COMMON노드관리", "COMMON노드관리", "/admin/rcp/conversation/cmmNode/manage.do"),
    rcplearningTest("rcp", 1900000L, 1L, 2, "학습및테스트", "학습및테스트", "0"),
    rcplearningTestsimulatormanage("rcp", 1900001L, 1900000L, 3, "시뮬레이터", "시뮬레이터", "/admin/rcp/learningTest/simulator/manage.do"),
    rcplearningTestinferencemanage("rcp", 1900002L, 1900000L, 3, "의도추론 테스트", "의도추론 테스트", "/admin/rcp/learningTest/inference/manage.do"),
    rcplearningTeststttestmanage("rcp", 1900003L, 1900000L, 3, "STT 테스트", "STT 테스트", "/admin/rcp/learningTest/stttest/manage.do"),
    rcplearningTestttstestmanage("rcp", 1900004L, 1900000L, 3, "TTS 테스트", "TTS 테스트", "/admin/rcp/learningTest/ttstest/manage.do"),
    rcpmonitoring("rcp", 2000000L, 1L, 2, "모니터링", "모니터링", "0"),
    rcpmonitoringconsultingmanage("rcp", 2000001L, 2000000L, 3, "응대이력", "응대이력", "/admin/rcp/statistics/monitoring/consulting/manage.do"),
    rcpmonitoringconversationMarkmanage("rcp", 2000002L, 2000000L, 3, "대화책갈피", "대화책갈피", "/admin/rcp/statistics/monitoring/conversationMark/manage.do"),
    rcpmonitoringintentAnalysismanage("rcp", 2000003L, 2000000L, 3, "인텐트분석관리", "인텐트분석관리", "/admin/rcp/statistics/monitoring/intentAnalysis/manage.do"),
    rcpmonitoringoutscenariomanage("rcp", 2000004L, 2000000L, 3, "시나리오이탈노드관리", "시나리오이탈노드관리", "/admin/rcp/statistics/monitoring/outscenario/manage.do"),
    rcpmonitoringworkhistorymanage("rcp", 2000005L, 2000000L, 3, "작업이력조회", "작업이력조회", "/admin/rcp/statistics/monitoring/workhistory/manage.do"),
    rcpmonitoringaienginemanage("rcp", 2000006L, 2000000L, 3, "AI엔진 트래픽모니터링", "AI엔진 트래픽모니터링", "/admin/rcp/statistics/monitoring/aiengine/manage.do"),

    rcpstatistics("rcp", 2100000L, 1L, 2, "통계", "통계", "0"),
    rcpstatisticsintent("rcp", 2100100L, 2100000L, 3, "인텐트통계", "인텐트통계", "0"),
    rcpstatisticsintentdaymanage("rcp", 2100101L, 2100100L, 4, "날짜별통계", "인텐트날짜별통계", "/admin/rcp/statistics/intent/day/manage.do"),
    rcpstatisticsintentitemmanage("rcp", 2100102L, 2100100L, 4, "항목별통계", "인텐트항목별통계", "/admin/rcp/statistics/intent/item/manage.do"),
    rcpstatisticsscenario("rcp", 2100200L, 2100000L, 3, "시나리오통계", "시나리오통계", "0"),
    rcpstatisticsscenariodaymanage("rcp", 2100201L, 2100200L, 4, "날짜별통계", "시나리오날짜별통계", "/admin/rcp/statistics/scenario/day/manage.do"),
    rcpstatisticsscenarioitemmanage("rcp", 2100202L, 2100200L, 4, "항목별통계", "시나리오항목별통계", "/admin/rcp/statistics/scenario/item/manage.do"),
    rcpstatisticscall("rcp", 2100300L, 2100000L, 3, "콜통계", "콜통계", "0"),
    rcpstatisticscallinfomanage("rcp", 2100301L, 2100300L, 4, "콜통계", "콜통계", "/admin/rcp/statistics/call/info/manage.do"),
    rcpstatisticsaienginemanage("rcp", 2100302L, 2100300L, 4, "AI엔진통계", "AI엔진통계", "/admin/rcp/statistics/call/aiengine/manage.do"),
    rcpstatisticsdashboardmanage("rcp", 2100400L, 2100000L, 3, "대쉬보드", "대쉬보드", "/admin/common/dashboard/manage.do"),

    rcpoprmanage("rcp", 2200000L, 1L, 2, "운영관리", "운영관리", "0"),
    rcpoprmanagenlpSettingmanage("rcp", 2200001L, 2200000L, 3, "NLP설정", "NLP설정", "/admin/rcp/oprmanage/nlpSetting/manage.do"),
    rcpoprmanagebgmmanage("rcp", 2200002L, 2200000L, 3, "배경음관리", "배경음관리", "/admin/rcp/oprmanage/bgm/manage.do"),
    rcpoprmanagettstagmanage("rcp",2200003L,2200000L,3,"TTS태그관리","TTS태그관리","/admin/rcp/oprmanage/ttstag/manage.do"),


    commonsystem("common", 9000000L, 1L, 2, "시스템관리", "시스템관리", "0"),
    commonsystempolicyMenumanage("common", 9000001L, 9000000L, 3, "정책별 메뉴 조회", "정책별 메뉴 조회", "/admin/common/system/policyMenu/manage.do"),
    commonsystemcustmanage("common", 9000002L, 9000000L, 3, "고객사 관리", "고객사 관리", "/admin/common/system/cust/manage.do"),
    commonsystemserviceGroupmanage("common", 9000003L, 9000000L, 3, "서비스그룹 관리", "서비스그룹 관리", "/admin/common/system/serviceGroup/manage.do"),
    commonsystemgroupAuthmanage("common", 9000004L, 9000000L, 3, "그룹별 권한관리", "그룹별 권한관리", "/admin/common/system/groupAuth/manage.do"),
    commonsystemuserAdminmanage("common", 9000005L, 9000000L, 3, "운영자 관리(사용안함)", "운영자 관리", "/admin/common/system/userAdmin/manage.do"),
    commonsystemusermanage("common", 9000006L, 9000000L, 3, "사용자 관리", "사용자 관리", "/admin/common/system/user/manage.do"),
    commonsystemoprmngcodemanage("common", 9000007L, 9000000L, 3, "공통코드 관리", "공통코드 관리", "/admin/common/system/oprmngcode/manage.do");


    private String solVal;
    private Long menuSeq;
    private Long menuSeqUpper;
    private int level;
    private String menuName;
    private String menuDesc;
    private String menuUrl;

    MenuResource(String solVal, Long menuSeq, Long menuSeqUpper, int level, String menuName, String menuDesc, String menuUrl) {
        this.solVal = solVal;
        this.menuSeq = menuSeq;
        this.menuSeqUpper = menuSeqUpper;
        this.level = level;
        this.menuName = menuName;
        this.menuDesc = menuDesc;
        this.menuUrl = menuUrl;
    }

    public String getName() {
        return name();
    }

    public static List<MenuResource> ALL = Arrays.asList(
            root,

            rcpconversation,
            rcpconversationintentmanage,
            rcpconversationscenariomanage,
            rcpconversationsynonymmanage,
            rcpconversationsystemEntitymanage,
            rcpconversationapiNodemanage,
            rcpconversationcmmNodemanage,

            rcplearningTest,
            rcplearningTestsimulatormanage,
            rcplearningTestinferencemanage,
            rcplearningTeststttestmanage,
            rcplearningTestttstestmanage,

            rcpmonitoring,
            rcpmonitoringconsultingmanage,
            rcpmonitoringconversationMarkmanage,
            rcpmonitoringintentAnalysismanage,
            rcpmonitoringoutscenariomanage,
            rcpmonitoringworkhistorymanage,
            rcpmonitoringaienginemanage,

            rcpstatistics,
            rcpstatisticsintent,
            rcpstatisticsintentdaymanage,
            rcpstatisticsintentitemmanage,
            rcpstatisticsscenario,
            rcpstatisticsscenariodaymanage,
            rcpstatisticsscenarioitemmanage,
            rcpstatisticscall,
            rcpstatisticscallinfomanage,
            rcpstatisticsaienginemanage,

            rcpoprmanage,
            rcpoprmanagenlpSettingmanage,
            rcpoprmanagebgmmanage,
            rcpoprmanagettstagmanage,

            commonsystem,
            commonsystemcustmanage,
            commonsystemserviceGroupmanage,
            commonsystemgroupAuthmanage,
            commonsystemuserAdminmanage,
            commonsystemusermanage,
            commonsystemoprmngcodemanage


    );


    public static List<MenuResource> LOGLIST = Arrays.asList(
            rcpconversationintentmanage,
            rcpconversationscenariomanage,
            rcpconversationsynonymmanage,
            rcpconversationapiNodemanage,
            rcpconversationcmmNodemanage,
            rcplearningTestsimulatormanage,
            rcplearningTestinferencemanage,
            rcpmonitoringconsultingmanage,
            rcpmonitoringconversationMarkmanage,
            rcpmonitoringintentAnalysismanage,
            rcpmonitoringoutscenariomanage,
            rcpstatisticsintentdaymanage,
            rcpstatisticsintentitemmanage,
            rcpstatisticsscenariodaymanage,
            rcpstatisticsscenarioitemmanage,
            rcpstatisticscallinfomanage

    );

}
