package kr.co.uplus.ez.common.data;

public enum ApiResponseCode {

	RESULT_CODE("resultCode"), RESULT_MSG("resultMsg")
	/** 성공. */
	,SUCCESS("0000", "성공")

	// 공통
	/** 미발급된 ApplicationID. */
	,CM_UNISSUED_APPLICATIONID("1001", "미발급된 ApplicationID")
	/** 파라미터 오류. */
	,CM_PARAMETER_ERROR("1002", "파라미터 오류")
	/** 필수값 누락. */
	,CM_MISSING_REQUIRED("1003", "필수값 누락")
	/** 조회결과 없음. */
	,CM_NOT_FOUND("1004", "조회 결과 없음")
	/** 데이터를 처리하는 동안 오류가 발생했습니다. */
	,CM_DB_QUERY_ERR("1009", "데이터를 처리하는 동안 오류가 발생했습니다.")

	// 어드민.
	/** 비밀번호 변경. */
	,LOGIN_UPDATE_PWD("1001", "비밀번호 변경")
	/** 인증토큰 만료. */
	,CE_AUTH_TOKEN_EXPIRE("4001", "인증토큰 만료")
	/** Refresh 토큰 만료. */
	,CE_REFRESH_AUTH_TOKEN_EXPIRE("4002", "Refresh 토큰 만료")
	/** 사용자 정보가 없습니다.. */
	,CE_ID_NOT_FOUND("4003", "사용자 정보가 없습니다.")
	/** ID/PWD 불일치. */
	,CE_ID_PWD("4004", "ID/PWD 불일치")
	/** ID/PWD 불일치 횟수초과. */
	,CE_TO_LOCK("4005", "ID/PWD 불일치 횟수초과")
	/** 비밀번호 변경 기간 초과. */
	,CE_PWD_EXPIRE("4006", "비밀번호 변경 기간 초과")
	/** 사용자 상태 오류. */
	,SS_NOT_USE("4007", "사용자 상태 오류")
	/** ID/HP 불일치. */
	,CE_ID_HP("4008", "ID/HP 불일치")
	/** 인증시간 초과. */
	,CE_AUTHNUM_EXPIRE("4009", "인증시간 초과")
	/** 인증번호 오류. */
	,CE_WRONG_AUTHNUM("4010", "인증번호 오류")
	/** 인증번호 불일치 횟수초과. */
	,CE_AUTHNUM_LOCK("4011", "인증번호 불일치 횟수초과")
	/** Access 토큰 발급 실패. */
	,CE_TOKEN_ISSUANCE_FAILED("4012", "Access 토큰 발급 실패")
	/** 사용자정보 변경 실패. */
	,CE_FAILED_TO_CHANGE_USER("4013", "사용자정보 변경 실패")
	/** 문자발송 실패. */
	,CE_FAILED_TO_SEND_SMS("4014", "문자발송 실패")
	/** 메일발송 실패. */
	,CE_FAILED_TO_SEND_EMAIL("4015", "메일발송 실패")
	/** 비밀번호변경 실패. */
	,CE_FAILED_TO_PW_CHANGE("4016", "비밀번호변경 실패")
	/** 권한코드가 유효하지않습니다. */
	,CE_SYSMGT_AUTHCODE_INVALID("4017", "권한코드가 유효하지않습니다.")
	/** 이미 사용중인 아이디 입니다. */
	,CE_DUPLICATE_ID("4018", "이미 사용중인 아이디 입니다.")
	/** 발송한도금액이 정액한도금액보다 작습니다. */
	,CE_SENDINGLIMT_ERROR("4019", "발송한도금액이 정액한도금액보다 작습니다.")
	/** 해당 권한코드에 해당하는 어드민 사용자가 존재함. */
	,CE_SYSMGT_AUTHCODE_EXISTS_USER("4020", "해당 권한코드에 해당하는 어드민 사용자가 존재함.")
	/** 이미 등록된 발신번호로 저장 불가. */
	,CE_SENDMGT_DUPLICATE_SENDNUM("4021", "이미 등록된 발신번호로 저장 불가.")
	/** 인증번호 발송 요청 임계값 초과 분당 10회 */
	,CE_AUTHNUM_STAT_LOCK("4022", "인증요청 제한")
	/** 토큰 인증 에러*/
	,CE_AUTH_ERROR("4023", "토큰 인증 에러")
	
	// 시스템
	/** 알 수 없는 에러. */
	,SE_UNKNOWN("9999", "알 수 없는 에러");

	private String resultCode;
	private String resultMsg;

	public String getResultCode() {
		return resultCode;
	}

	public void setResultCode(String resultCode) {
		this.resultCode = resultCode;
	}

	public String getResultMsg() {
		return resultMsg;
	}

	public void setResultMsg(String resultMsg) {
		this.resultMsg = resultMsg;
	}

	private ApiResponseCode(String resultCode) {
		this.resultCode = resultCode;
	}

	private ApiResponseCode(String resultCode, String resultMsg) {
		this.resultCode = resultCode;
		this.resultMsg = resultMsg;
	}

	public static boolean has(String key) {
		ApiResponseCode[] codes = values();
		for (ApiResponseCode code : codes)
			if (code.name().equals(key))
				return true;
		return false;
	}
}
