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"),


    gudguide("gud", 2300000L, 1L, 2, "상담가이드", "상담가이드", "0"),
    gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/admin/gud/guide/consultationRealtime/manage.do"),
    gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/admin/gud/guide/adminMonitoring/manage.do"),
    gudguidehistory("gud", 2300300L, 2300000L, 3, "상담이력관리", "상담이력관리", "0"),
    gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/admin/gud/guide/history/scrch/manage.do"),
    gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/admin/gud/guide/history/outbox/manage.do"),
    gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/admin/gud/guide/history/inbox/manage.do"),
    gudguidecontents("gud", 2300400L, 2300000L, 3, "상담컨텐츠", "상담컨텐츠", "0"),
    gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/admin/gud/guide/contents/list/manage.do"),
    gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/admin/gud/guide/contents/manager/manage.do"),
    gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/admin/gud/guide/contents/contentsAssessment/manage.do"),
    gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"),
    gudguideai("gud", 2300500L, 2300000L, 3, "NLP연동", "NLP연동", "0"),
    gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/admin/gud/guide/ai/nluIntentList/manage.do"),
    gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/admin/gud/guide/ai/nluEntityList/manage.do"),
    gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/admin/gud/guide/ai/nluLog/manage.do"),
    gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/admin/gud/guide/ai/nluTraining/manage.do"),
    gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/admin/gud/guide/ai/nluIntenttest/manage.do"),
    gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/admin/gud/guide/ai/synonymList/manage.do"),
    gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/admin/gud/guide/ai/nluRecommendedLearning/manage.do"),


    addraddrbot("addr", 2400000L, 1L, 2, "주소봇", "주소봇", "0"),
    addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/admin/addr/addrbot/manageAddrSection/manage.do"),
    addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/admin/addr/addrbot/manageBuildName/manage.do"),
    addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/admin/addr/addrbot/manageSynonym/manage.do"),
    addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/admin/addr/addrbot/manageBuildType/manage.do"),
    addraddrbotmanageJusoUploadmanage("addr", 2400500L, 2400000L, 3, "주소월별업데이트", "주소월별업데이트", "/admin/addr/addrbot/manageJusoUpload/manage.do"),
    addraddrbotmanageAddrProcessmanage("addr", 2400600L, 2400000L, 3, "주소봇처리내역", "주소봇처리내역", "/admin/addr/addrbot/manageAddrProcess/manage.do"),
    addraddrbotaddrRealtimeListmanage("addr", 2400700L, 2400000L, 3, "실시간처리리스트", "실시간처리리스트", "/admin/addr/addrbot/addrRealtimeList/manage.do"),


    botcom("botcom", 2500000L, 1L, 2, "BOT공통관리", "BOT공통관리", "0"),
    botcommanageMentmanage("botcom", 2500100L, 2500000L, 3, "멘트관리", "멘트관리", "/admin/botcom/manageMent/manage.do"),
    botcommanage("botcom", 2500200L, 2500000L, 3, "서비스별관리", "서비스별관리", "0"),
    botcommanagemanageGreetMentmanage("botcom", 2500201L, 2500200L, 4, "요일시간대별멘트관리", "요일시간대별멘트관리", "/admin/botcom/manage/manageGreetMent/manage.do"),
    botcommanagemanageHolidaymanage("botcom", 2500202L, 2500200L, 4, "휴무일관리", "휴무일관리", "/admin/botcom/manage/manageHoliday/manage.do"),
    botcommanagemanageNaturalmanage("botcom", 2500203L, 2500200L, 4, "자연어전처리관리", "자연어전처리관리", "/admin/botcom/manage/manageNatural/manage.do"),


    rcpv1("rcpv1", 2600000L, 1L, 2, "무인접수BOT", "무인접수BOT", "0"),
    rcpv1receiptListmanage("rcpv1", 2600100L, 2600000L, 3, "접수리스트", "접수리스트", "/admin/rcpv1/receiptList/manage.do"),
    rcpv1receiptRealtimeListmanage("rcpv1", 2600200L, 2600000L, 3, "실시간모니터링", "실시간모니터링", "/admin/rcpv1/receiptRealtimeList/manage.do"),
    rcpv1receiptOutRealtimeListmanage("rcpv1", 2600300L, 2600000L, 3, "아웃바운드모니터링", "아웃바운드모니터링", "/admin/rcpv1/receiptOutRealtimeList/manage.do"),
    rcpv1rcpReportmanage("rcpv1", 2600400L, 2600000L, 3, "일자별통계", "일자별통계", "/admin/rcpv1/rcpReport/manage.do"),
    rcpv1rcpTimeReportmanage("rcpv1", 2600500L, 2600000L, 3, "시간대별통계", "시간대별통계", "/admin/rcpv1/rcpTimeReport/manage.do"),


    vdo("vdo",2700000L,1L,2,"영상상담","영상상담","0"),
    vdoincomingManageCategorymanage("vdo",2700100L,2700000L,3,"컨텐츠등록관리","컨텐츠등록관리","/admin/vdo/incomingManageCategory/manage.do"),
    vdoincomingCounselingListmanage("vdo",2700200L,2700000L,3,"영상상담","영상상담","/admin/vdo/incomingCounselingList/manage.do"),
    vdoincomingCounselingHistorymanage("vdo",2700300L,2700000L,3,"상담이력조회","상담이력조회","/admin/vdo/incomingCounselingHistory/manage.do"),
    vdoincomingMvReportmanage("vdo",2700400L,2700000L,3,"사용통계","사용통계","/admin/vdo/incomingMvReport/manage.do"),


    botmoni("botmoni", 2800000L, 1L, 2, "봇모니터링(확대형)", "봇모니터링(확대형)", "0"),
    botmoniaddrRealtimeListExpansionmanage("botmoni", 2800100L, 2800000L, 3, "주소봇실시간처리리스트", "주소봇실시간처리리스트", "/admin/botmoni/addrRealtimeListExpansion/manage.do"),
    botmonireceiptRealtimeListExpansionmanage("botmoni", 2800200L, 2800000L, 3, "무인접수봇실시간모니터링", "무인접수봇실시간모니터링", "/admin/botmoni/receiptRealtimeListExpansion/manage.do"),
    botmoniguideRealtimeListExpansionmanage("botmoni", 2800300L, 2800000L, 3, "상담가이드실시간모니터링", "상담가이드실시간모니터링", "/admin/botmoni/guideRealtimeListExpansion/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,


            gudguide,
            gudguideconsultationRealtimemanage,
            gudguideadminMonitoringmanage,
            gudguidehistory,
            gudguidehistoryscrchmanage,
            gudguidehistoryoutboxmanage,
            gudguidehistoryinboxmanage,
            gudguidecontents,
            gudguidecontentslistmanage,
            gudguidecontentsmanagermanage,
            gudguidecontentscontentsAssessmentmanage,
            gudguidecontentscontentsAssessmentHistorymanage,
            gudguideai,
            gudguideainluIntentListmanage,
            gudguideainluEntityListmanage,
            gudguideainluLogmanage,
            gudguideainluTrainingmanage,
            gudguideainluIntenttestmanage,
            gudguideaisynonymListmanage,
            gudguideainluRecommendedLearningmanage,


            addraddrbot,
            addraddrbotmanageAddrSectionmanage,
            addraddrbotmanageBuildNamemanage,
            addraddrbotmanageSynonymmanage,
            addraddrbotmanageBuildTypemanage,
            addraddrbotmanageJusoUploadmanage,
            addraddrbotmanageAddrProcessmanage,
            addraddrbotaddrRealtimeListmanage,


            botcom,
            botcommanageMentmanage,
            botcommanage,
            botcommanagemanageGreetMentmanage,
            botcommanagemanageHolidaymanage,
            botcommanagemanageNaturalmanage,


            rcpv1,
            rcpv1receiptListmanage,
            rcpv1receiptRealtimeListmanage,
            rcpv1receiptOutRealtimeListmanage,
            rcpv1rcpReportmanage,
            rcpv1rcpTimeReportmanage,


            vdo,
            vdoincomingManageCategorymanage,
            vdoincomingCounselingListmanage,
            vdoincomingCounselingHistorymanage,
            vdoincomingMvReportmanage,


            botmoni,
            botmoniaddrRealtimeListExpansionmanage,
            botmonireceiptRealtimeListExpansionmanage,
            botmoniguideRealtimeListExpansionmanage,


            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

    );

}
