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

import lombok.Getter;

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

@Getter
public enum PolicyResource {
    rootRead(MenuResource.root, "대쉬보드읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationRead(MenuResource.rcpconversation, "대화관리읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationintentmanageRead(MenuResource.rcpconversationintentmanage, "인텐트관리읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationscenariomanageRead(MenuResource.rcpconversationscenariomanage, "시나리오관리읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationsynonymmanageRead(MenuResource.rcpconversationsynonymmanage, "동의어관리읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationsystemEntitymanageRead(MenuResource.rcpconversationsystemEntitymanage, "시스템엔티티읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationapiNodemanageRead(MenuResource.rcpconversationapiNodemanage, "API노드관리읽기권한", "Y", 1, Arrays.asList()),
    rcpconversationcmmNodemanageRead(MenuResource.rcpconversationcmmNodemanage, "COMMON노드관리읽기권한", "Y", 1, Arrays.asList()),

    rcplearningTestRead(MenuResource.rcplearningTest, "학습및테스트읽기권한", "Y", 1, Arrays.asList()),
    rcplearningTestsimulatormanageRead(MenuResource.rcplearningTestsimulatormanage, "시뮬레이터읽기권한", "Y", 1, Arrays.asList()),
    rcplearningTestinferencemanageRead(MenuResource.rcplearningTestinferencemanage, "의도추론 테스트읽기권한", "Y", 1, Arrays.asList()),
    rcplearningTeststttestmanageRead(MenuResource.rcplearningTeststttestmanage, "STT 테스트읽기권한", "Y", 1, Arrays.asList()),
    rcplearningTestttstestmanageRead(MenuResource.rcplearningTestttstestmanage, "TTS 테스트읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringRead(MenuResource.rcpmonitoring, "모니터링읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringconsultingmanageRead(MenuResource.rcpmonitoringconsultingmanage, "상담이력관리읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringconversationMarkmanageRead(MenuResource.rcpmonitoringconversationMarkmanage, "대화책갈피관리읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringintentAnalysismanageRead(MenuResource.rcpmonitoringintentAnalysismanage, "인텐트분석관리읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringoutscenariomanageRead(MenuResource.rcpmonitoringoutscenariomanage, "시나리오이탈노드관리읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringworkhistorymanageRead(MenuResource.rcpmonitoringworkhistorymanage, "작업이력조회읽기권한", "Y", 1, Arrays.asList()),
    rcpmonitoringaienginemanageRead(MenuResource.rcpmonitoringaienginemanage, "AI엔진 트래픽모니터링읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsRead(MenuResource.rcpstatistics, "통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsintentRead(MenuResource.rcpstatisticsintent, "인텐트통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsintentdaymanageRead(MenuResource.rcpstatisticsintentdaymanage, "날짜별통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsintentitemmanageRead(MenuResource.rcpstatisticsintentitemmanage, "항목별통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsscenarioRead(MenuResource.rcpstatisticsscenario, "시나리오통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsscenariodaymanageRead(MenuResource.rcpstatisticsscenariodaymanage, "날짜별통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsscenarioitemmanageRead(MenuResource.rcpstatisticsscenarioitemmanage, "항목별통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticscallRead(MenuResource.rcpstatisticscall, "콜통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticscallinfomanageRead(MenuResource.rcpstatisticscallinfomanage, "콜통계읽기권한", "Y", 1, Arrays.asList()),
    rcpstatisticsaienginemanageRead(MenuResource.rcpstatisticsaienginemanage, "AI엔진통계읽기권한", "Y", 1, Arrays.asList()),
    rcpoprmanageRead(MenuResource.rcpoprmanage, "운영관리읽기권한", "Y", 1, Arrays.asList()),
    rcpoprmanagenlpSettingmanageRead(MenuResource.rcpoprmanagenlpSettingmanage, "NLP설정읽기권한", "Y", 1, Arrays.asList()),
    rcpoprmanagebgmmanageRead(MenuResource.rcpoprmanagebgmmanage, "배경음관리읽기권한", "Y", 1, Arrays.asList()),
    rcpoprmanagettstagmanageRead(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리읽기권한", "Y", 1, Arrays.asList()),


    commonsystemRead(MenuResource.commonsystem, "시스템관리읽기권한", "Y", 10000, Arrays.asList()),

    //    commonsystempolicyMenumanageRead(MenuResource.commonsystempolicyMenumanage, "정책별 메뉴 조회읽기권한", "Y", 1000000, Arrays.asList()),
    commonsystemcustmanageRead(MenuResource.commonsystemcustmanage, "고객사 관리읽기권한", "Y", 1000000, Arrays.asList()),
    commonsystemserviceGroupmanageRead(MenuResource.commonsystemserviceGroupmanage, "서비스그룹 관리읽기권한", "Y", 1000000, Arrays.asList()),
    commonsystemgroupAuthmanageRead(MenuResource.commonsystemgroupAuthmanage, "그룹별 권한관리읽기권한", "Y", 10000, Arrays.asList()),
    commonsystemuserAdminmanageRead(MenuResource.commonsystemuserAdminmanage, "운영자 관리읽기권한", "Y", 1000000, Arrays.asList()),
    commonsystemusermanageRead(MenuResource.commonsystemusermanage, "사용자 관리읽기권한", "Y", 10000, Arrays.asList()),
    commonsystemoprmngcodemanageRead(MenuResource.commonsystemoprmngcodemanage, "공통코드 관리읽기권한", "Y", 10000, Arrays.asList()),


    rcpconversationintentmanageFull(MenuResource.rcpconversationintentmanage, "인텐트관리전체권한", "Y", 1, Arrays.asList()),
    rcpconversationscenariomanageFull(MenuResource.rcpconversationscenariomanage, "시나리오관리전체권한", "Y", 1, Arrays.asList()),
    rcpconversationsynonymmanageFull(MenuResource.rcpconversationsynonymmanage, "동의어관리전체권한", "Y", 1, Arrays.asList()),
    rcpconversationsystemEntitymanageFull(MenuResource.rcpconversationsystemEntitymanage, "시스템엔티티전체권한", "Y", 1, Arrays.asList()),
    rcpconversationapiNodemanageFull(MenuResource.rcpconversationapiNodemanage, "API노드관리전체권한", "Y", 1, Arrays.asList()),
    rcpconversationcmmNodemanageFull(MenuResource.rcpconversationcmmNodemanage, "COMMON노드관리전체권한", "Y", 1, Arrays.asList()),
    rcplearningTestsimulatormanageFull(MenuResource.rcplearningTestsimulatormanage, "시뮬레이터전체권한", "Y", 1, Arrays.asList()),
    rcplearningTestinferencemanageFull(MenuResource.rcplearningTestinferencemanage, "의도추론 테스트전체권한", "Y", 1, Arrays.asList()),

    rcpmonitoringconsultingmanageFull(MenuResource.rcpmonitoringconsultingmanage, "상담이력관리전체권한", "Y", 1, Arrays.asList()),
    rcpmonitoringconversationMarkmanageFull(MenuResource.rcpmonitoringconversationMarkmanage, "대화책갈피관리전체권한", "Y", 1, Arrays.asList()),
    rcpmonitoringintentAnalysismanageFull(MenuResource.rcpmonitoringintentAnalysismanage, "인텐트분석관리전체권한", "Y", 1, Arrays.asList()),
    rcpmonitoringoutscenariomanageFull(MenuResource.rcpmonitoringoutscenariomanage, "시나리오이탈노드관리전체권한", "Y", 1, Arrays.asList()),
    rcpstatisticsdashboardmanageFull(MenuResource.rcpstatisticsdashboardmanage, "대쉬보드전체권한", "Y", 1, Arrays.asList()),


    rcpoprmanagenlpSettingmanageFull(MenuResource.rcpoprmanagenlpSettingmanage, "NLP설정전체권한", "Y", 1, Arrays.asList()),
    rcpoprmanagebgmmanageFull(MenuResource.rcpoprmanagebgmmanage, "배경음관리전체권한", "Y", 1, Arrays.asList()),
    rcpoprmanagettstagmanageFull(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리전체권한", "Y", 1, Arrays.asList()),


    commonsystemcustmanageFull(MenuResource.commonsystemcustmanage, "고객사 관리전체권한", "Y", 1000000, Arrays.asList()),
    commonsystemserviceGroupmanageFull(MenuResource.commonsystemserviceGroupmanage, "서비스그룹 관리전체권한", "Y", 1000000, Arrays.asList()),
    commonsystemgroupAuthmanageFull(MenuResource.commonsystemgroupAuthmanage, "그룹별 권한관리전체권한", "Y", 10000, Arrays.asList()),
    commonsystemuserAdminmanageFull(MenuResource.commonsystemuserAdminmanage, "운영자 관리전체권한", "Y", 1000000, Arrays.asList()),
    commonsystemusermanageFull(MenuResource.commonsystemusermanage, "사용자 관리전체권한", "Y", 10000, Arrays.asList()),
    commonsystemoprmngcodemanageFull(MenuResource.commonsystemoprmngcodemanage, "공통코드 관리전체권한", "Y", 10000, Arrays.asList()),


    //기타권한
    privacymasking(MenuResource.root, "마스킹해제", "N", 1, Arrays.asList()),
    rcpconversationscenariomanageRelease(MenuResource.root, "시나리오관리배포", "N", 1, Arrays.asList());


    private MenuResource menu;
    private String policyName;
    private String createYn;
    private int roleValSeq;
    private List<String> urlList;

    PolicyResource(MenuResource menu, String policyName, String createYn, int roleValSeq, List<String> urlList) {
        this.menu = menu;
        this.policyName = policyName;
        this.createYn = createYn;
        this.roleValSeq = roleValSeq;
        this.urlList = urlList;
    }

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

    public static final List<PolicyResource> ALL = Arrays.asList(
            rootRead,

            rcpconversationRead,
            rcpconversationintentmanageRead,
            rcpconversationscenariomanageRead,
            rcpconversationsynonymmanageRead,
            rcpconversationsystemEntitymanageRead,
            rcpconversationapiNodemanageRead,
            rcpconversationcmmNodemanageRead,

            rcplearningTestRead,
            rcplearningTestsimulatormanageRead,
            rcplearningTestinferencemanageRead,
            rcplearningTeststttestmanageRead,
            rcplearningTestttstestmanageRead,

            rcpmonitoringRead,
            rcpmonitoringconsultingmanageRead,
            rcpmonitoringconversationMarkmanageRead,
            rcpmonitoringintentAnalysismanageRead,
            rcpmonitoringoutscenariomanageRead,
            rcpmonitoringworkhistorymanageRead,
            rcpmonitoringaienginemanageRead,

            rcpstatisticsRead,
            rcpstatisticsintentRead,
            rcpstatisticsintentdaymanageRead,
            rcpstatisticsintentitemmanageRead,
            rcpstatisticsscenarioRead,
            rcpstatisticsscenariodaymanageRead,
            rcpstatisticsscenarioitemmanageRead,
            rcpstatisticscallRead,
            rcpstatisticscallinfomanageRead,
            rcpstatisticsaienginemanageRead,

            rcpoprmanageRead,
            rcpoprmanagenlpSettingmanageRead,
            rcpoprmanagebgmmanageRead,
            rcpoprmanagettstagmanageRead,

            commonsystemRead,
            commonsystemcustmanageRead,
            commonsystemserviceGroupmanageRead,
            commonsystemgroupAuthmanageRead,
            commonsystemuserAdminmanageRead,
            commonsystemusermanageRead,
            commonsystemoprmngcodemanageRead,

            rcpconversationintentmanageFull,
            rcpconversationscenariomanageFull,
            rcpconversationsynonymmanageFull,
            rcpconversationsystemEntitymanageFull,
            rcpconversationapiNodemanageFull,
            rcpconversationcmmNodemanageFull,

            rcplearningTestsimulatormanageFull,
            rcplearningTestinferencemanageFull,

            rcpmonitoringconsultingmanageFull,
            rcpmonitoringconversationMarkmanageFull,
            rcpmonitoringintentAnalysismanageFull,
            rcpmonitoringoutscenariomanageFull,
            rcpstatisticsdashboardmanageFull,

            rcpoprmanagenlpSettingmanageFull,
            rcpoprmanagebgmmanageFull,
            rcpoprmanagettstagmanageFull,

            commonsystemcustmanageFull,
            commonsystemserviceGroupmanageFull,
            commonsystemgroupAuthmanageFull,
            commonsystemuserAdminmanageFull,
            commonsystemusermanageFull,
            commonsystemoprmngcodemanageFull,

            //기타권한
            privacymasking,
            rcpconversationscenariomanageRelease

    );


}
