package cokr.xit.ens.modules.kkoalimtalk.code;

import cokr.xit.ens.modules.common.code.IntgrnDtlStatCd;
import cokr.xit.ens.modules.common.code.IntgrnDtlStatMapperType;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public enum AlimtalkResultCd implements IntgrnDtlStatMapperType {
    UNKNOWN("알수없음", IntgrnDtlStatCd.UNKNOWN)
    , NULL("입력값 없음", IntgrnDtlStatCd.ACPT_CMPLT) 
    , SENT_FAIL("송신실패", IntgrnDtlStatCd.FAIL)  


   
    ,RQ_1000("비즈톡 G/W 접수 성공", IntgrnDtlStatCd.ACPT_OK)
    ,RQ_1001("문자 재처리 포함 카카오 메시지 발송 시 문자 제한건수 초과로 인해 카카오 메시지만 접수 성공", IntgrnDtlStatCd.FAIL)
    ,RQ_B199("인증 실패(Token 정보 인증 실패", IntgrnDtlStatCd.FAIL)
    ,RQ_B201("알 수 없는 벤더 코드 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B202("알 수 없는 메시지 코드 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B203("메시지 문법 오류(JSON형식 오류)", IntgrnDtlStatCd.FAIL)
    ,RQ_B206("빈 메시지 리스트 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B207("메시지 리스트 최대 요청 개수 초과", IntgrnDtlStatCd.FAIL)
    ,RQ_B208("내부 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B209("등록되지 않은 테스트 번호로 테스트 발송 요청", IntgrnDtlStatCd.FAIL)
    ,RQ_B210("bsid, passwd 불일치", IntgrnDtlStatCd.FAIL)
    ,RQ_B211("등록되지 않은 bsid", IntgrnDtlStatCd.FAIL)
    ,RQ_B212("등록되지 않은 회신번호", IntgrnDtlStatCd.FAIL)
    ,RQ_B213("비활성화 상태의 BSID", IntgrnDtlStatCd.FAIL)
    ,RQ_B214("파일 업로드 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B300("내부 오류", IntgrnDtlStatCd.FAIL)
    ,RQ_B301("메시지 여신건수 초과", IntgrnDtlStatCd.FAIL)
    ,RQ_B400("수신 번호 차단 리스트에 추가된 사용자", IntgrnDtlStatCd.FAIL)
    ,RQ_B401("이미 등록되어있는 차단 번호", IntgrnDtlStatCd.FAIL)
    ,RQ_B402("등록되어있지 않은 차단 번호", IntgrnDtlStatCd.FAIL)
    ,RQ_B403("등록된 차단 번호가 존재하지 않음", IntgrnDtlStatCd.FAIL)

   
    ,RS_B800("Http 요청 오류, JSON Parameter 오류 등 벤더사로 발송 요청 시 발생 한 오류", IntgrnDtlStatCd.FAIL)
    ,RS_B801("벤더사 오류", IntgrnDtlStatCd.FAIL)
    ,RS_1000("전송 성공", IntgrnDtlStatCd.SENT)
    ,RS_1001("Request Body가 Json형식이 아님", IntgrnDtlStatCd.FAIL)
    ,RS_1002("허브 파트너 키가 유효하지 않음", IntgrnDtlStatCd.FAIL)
    ,RS_1003("발신 프로필 키가 유효하지 않음", IntgrnDtlStatCd.FAIL)
    ,RS_1004("Request Body(Json)에서 name을 찾을 수 없음", IntgrnDtlStatCd.FAIL)
    ,RS_1006("삭제된 발신프로필.(메시지 사업 담당자에게 문의)", IntgrnDtlStatCd.FAIL)
    ,RS_1007("차단 상태의 발신프로필.(메시지 사업 담당자에게 문의)", IntgrnDtlStatCd.FAIL)
    ,RS_1011("계약정보를 찾을 수 없음.(메시지 사업 담당자에게 문의)", IntgrnDtlStatCd.FAIL)
    ,RS_1012("잘못된 형식의 유저키 요청", IntgrnDtlStatCd.FAIL)
    ,RS_1013("유효하지 않은 app연결", IntgrnDtlStatCd.FAIL)
    ,RS_1014("유효하지 않은 사업자번호", IntgrnDtlStatCd.FAIL)
    ,RS_1015("유효하지 않은 app user id 요청", IntgrnDtlStatCd.FAIL)
    ,RS_1020("전화번호 또는 유효하지 않은 app user id", IntgrnDtlStatCd.FAIL)
    ,RS_1021("차단 상태의 카카오톡 채널(카카오톡 채널 운영툴에서 확인)", IntgrnDtlStatCd.FAIL)
    ,RS_1022("닫힘 상태의 카카오톡 채널(카카오톡 채널 운영툴에서 확인)", IntgrnDtlStatCd.FAIL)
    ,RS_1023("삭제된 카카오톡 채널(카카오톡 채널 운영툴에서 확인)", IntgrnDtlStatCd.FAIL)
    ,RS_1024("삭제대기 상태의 카카오톡 채널(카카오톡 채널 운영툴에서 확인", IntgrnDtlStatCd.FAIL)
    ,RS_1025("메시지차단 상태의 카카오톡 채널(카카오톡 채널 운영툴에서 확인)", IntgrnDtlStatCd.FAIL)
    ,RS_1030("잘못된 파라메터 요청", IntgrnDtlStatCd.FAIL)
    ,RS_2003("메시지 전송 실패(테스트 서버에서 친구관계가 아닌 경우)", IntgrnDtlStatCd.FAIL)
    ,RS_2004("템플릿 일치 확인시 오류 발생(내부 오류 발생)", IntgrnDtlStatCd.FAIL)
    ,RS_2006("시리얼 넘버 형식 불일치", IntgrnDtlStatCd.FAIL)
    ,RS_3000("예기치 않은 오류 발생", IntgrnDtlStatCd.FAIL)
    ,RS_3005("메시지를 발송했으나 수신확인 안됨(성공불확실)-서버에는 암호화 되어 보관되며 3일 이내 수신 가능", IntgrnDtlStatCd.FAIL)
    ,RS_3006("내부 시스템 오류로 메시지 전송 실패", IntgrnDtlStatCd.FAIL)
    ,RS_3008("전화번호 오류", IntgrnDtlStatCd.FAIL)
    ,RS_3010("Json파싱 오류", IntgrnDtlStatCd.FAIL)
    ,RS_3011("메시지가 존재하지 않음", IntgrnDtlStatCd.FAIL)
    ,RS_3012("메시지 일련번호가 중복됨-메시지 일련번호는 CS처리를 위해 고유한 값이 부여되어야 함.", IntgrnDtlStatCd.FAIL)
    ,RS_3013("메시지가 비어 있음", IntgrnDtlStatCd.FAIL)
    ,RS_3014("메시지 길이 제한 오류(템플릿별 제한 길이 또는 1000자 초과)", IntgrnDtlStatCd.FAIL)
    ,RS_3015("템플릿을 찾을 수 없음", IntgrnDtlStatCd.FAIL)
    ,RS_3016("메시지 내용이 템플릿과 일치하지 않음/버튼 템플릿 사용시 버튼명 또는 버튼 내용이 템플릿 등록시 사용한 값과 다를 경우", IntgrnDtlStatCd.FAIL)
    ,RS_3018("메시지를 전송할 수 없음(카카오톡을 사용하지 않는 사용자/168시간 내에 카카오톡 사용이력이 없는 사용자/알림톡 차단을 선택한 사용자/친구톡의 경우 친구가 아닌경우/카카오톡 하위버전 사용자(android 6.0.0 미만/ios 6.0.0 미만)", IntgrnDtlStatCd.FAIL)
    ,RS_3022("메시지 발송 가능한 시간이 아님(친구톡/마케팅 메시지는 20시50분 부터 익일 08시까지 발송 제한)", IntgrnDtlStatCd.FAIL)
    ,RS_3024("메시지에 포함된 이미지를 전송할 수 없음", IntgrnDtlStatCd.FAIL)
    ,RS_3025("변수 글자수 제한 초과", IntgrnDtlStatCd.FAIL)
    ,RS_3026("상담/봇 전환버튼 extra, event 글자수 제한 초과", IntgrnDtlStatCd.FAIL)
    ,RS_3027("버튼내용 또는 바로연결 버튼이 등록한 템플릿과 일치 하지 않음", IntgrnDtlStatCd.FAIL)
    ,RS_3028("메시지 강조 표기 타이틀이 템플릿과 일치하지 않음", IntgrnDtlStatCd.FAIL)
    ,RS_3029("메시지 강조 표기 타이틀 길이 제한 초과(50자)", IntgrnDtlStatCd.FAIL)
    ,RS_3030("등록된 템플릿과 일치하지 않는 메시지 타입", IntgrnDtlStatCd.FAIL)
    ,RS_4000("메시지 전송 결과를 찾을 수 없음", IntgrnDtlStatCd.FAIL)
    ,RS_4001("알 수 없는 메시지 상태", IntgrnDtlStatCd.FAIL)
    ,RS_ME09("사용자에게 메시지를 발송했으나 수신여부 불투명", IntgrnDtlStatCd.FAIL)
    ,RS_9999("알 수 없는 오류", IntgrnDtlStatCd.FAIL);


    @Getter
    private final String codeNm;
    @Getter
    private final IntgrnDtlStatCd intgrnDtlStatCd;

    @Override
    public String getCode() {
        return this.name();
    }


    public static AlimtalkResultCd valueOfEnum(String statCd){
        if(statCd == null)
            return AlimtalkResultCd.UNKNOWN;

        AlimtalkResultCd KkoAlimtalkRsltCd = null;
        try {
            KkoAlimtalkRsltCd = KkoAlimtalkRsltCd.valueOf(statCd);
        } catch (IllegalArgumentException e){
            KkoAlimtalkRsltCd = KkoAlimtalkRsltCd.UNKNOWN;
        }
        return KkoAlimtalkRsltCd;
    }


}
