package cokr.xit.ens.modules.ktsigntalk.direct.code;

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

/**
 * <ul>
 * <li>업무 그룹명: 진행상태코드</li>
 * <li>설 명: </li>
 * <li>작성일: 2021. 11. 23. 오후 5:10:35
 * </ul>
 *
 * @author 박민규
 */
@RequiredArgsConstructor
public enum KtSigntalkStatusCd implements IntgrnDtlStatMapperType {
    UNKNOWN("알수없음", IntgrnDtlStatCd.UNKNOWN)
    , NULL("입력값 없음", IntgrnDtlStatCd.ACPT_CMPLT) 

   
//    , E2001("invalid hdr", IntgrnDtlStatCd.INVALID_VALUE)  
//    , E2003("데이터 항목 오류", IntgrnDtlStatCd.INVALID_VALUE)
//    , E2004("HDR 누락", IntgrnDtlStatCd.INVALID_VALUE)
//    , E2005("sam file 생성 실패", IntgrnDtlStatCd.INTERNAL_ERROR)
//    , E2006("최대 건수 초과", IntgrnDtlStatCd.INVALID_REQUEST)
//    , E2007("배치 요청건수 초과", IntgrnDtlStatCd.INVALID_REQUEST)
    , E9000("src_key 오류", IntgrnDtlStatCd.INVALID_VALUE)   
    , E9001("필수 항목 누락", IntgrnDtlStatCd.INVALID_VALUE)
    , E9002("항목 길이 오류", IntgrnDtlStatCd.INVALID_VALUE)  
    , SENT_FAIL("송신실패", IntgrnDtlStatCd.FAIL)  
    , SENT("송신", IntgrnDtlStatCd.SENT)
//    , UNIDENTIFIED_USER("비회원", IntgrnDtlStatCd.UNIDENTIFIED_USER)         
//    , FORBIDDEN("수신거부", IntgrnDtlStatCd.FORBIDDEN)               
//    , INVALID_VALUE("파라미터 오류", IntgrnDtlStatCd.INVALID_VALUE)       
//    , INTERNAL_ERROR("카카오페이 서버 오류", IntgrnDtlStatCd.INTERNAL_ERROR)
//    , INVALID_REQUEST("유효하지 않은 요청", IntgrnDtlStatCd.INVALID_REQUEST) 
//    , SENT_FAIL("송신실패", IntgrnDtlStatCd.FAIL)  

   
    , E40("발송성공", IntgrnDtlStatCd.SENT)
    , E41("메시지 내용 스팸", IntgrnDtlStatCd.INVALID_REQUEST)
    , E42("착신자 스팸", IntgrnDtlStatCd.FORBIDDEN_USER)
    , E43("레포트 수신 시간 만료", IntgrnDtlStatCd.FAIL)
    , E47("비가입자, 결번, 서비스정지", IntgrnDtlStatCd.UNIDENTIFIED_USER)
    , E48("단말기 전원 꺼짐", IntgrnDtlStatCd.FAIL)
    , E49("기타", IntgrnDtlStatCd.FAIL)
    , E4A("UNKNOWN/단말기형식오류(스팸설정)", IntgrnDtlStatCd.FAIL)
    , E4D("전송 실패(무선망), 단말기 일시정지", IntgrnDtlStatCd.INTERNAL_ERROR)
    , E4J("비가용폰 오류", IntgrnDtlStatCd.FAIL)
    , E4N("수신거부", IntgrnDtlStatCd.FORBIDDEN)
    , E4O("LMS발송오류(시간초과)", IntgrnDtlStatCd.INTERNAL_ERROR)
    , E4P("LMS발송오류(기타)", IntgrnDtlStatCd.INTERNAL_ERROR)
    , E4T("가입자미존재(미동의포함)", IntgrnDtlStatCd.UNIDENTIFIED_USER)
    , E4Q("수신대기", IntgrnDtlStatCd.RECEIVED)
    , E50("수신확인", IntgrnDtlStatCd.READ)
    , E51("수신미확인", IntgrnDtlStatCd.EXPIRED)
    ;


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

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


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

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


    public static KtSigntalkStatusCd getEnum(String value) {
        for(KtSigntalkStatusCd v : values())
            if(v.getCode().equalsIgnoreCase(value)) return v;
        throw new IllegalArgumentException();
    }
}
