package com.oqpo.api.enums;

import lombok.Getter;
import org.springframework.http.HttpStatus;

@Getter
public enum SystemMessageCode {
    SIGNIN_FAIL (40000, "로그인 할 수 없습니다.<br>관리자에게 문의하여 주세요!", HttpStatus.BAD_REQUEST),
    NEED_AUTH (40010, "세션종료 입니다.<br>로그인 해주세요!", HttpStatus.UNAUTHORIZED),
    NOT_AUTH(40020, "실행할 권한이 없습니다.", HttpStatus.UNAUTHORIZED),
    SERVER_ERR (50000, "시스템에 문제가 발생하였습니다.<br>관리자에게 문의하여 주세요!", HttpStatus.INTERNAL_SERVER_ERROR),
    FILE_ERR (50010, "업로드에 실패하였습니다.", HttpStatus.BAD_REQUEST),
    FILE_CAPACITY_FAIL (50020, "업로드 파일 용량을 초과하였습니다.", HttpStatus.BAD_REQUEST),
    FILE_DOWN_ERR (50030, "다운로드에 실패하였습니다.", HttpStatus.BAD_REQUEST),
    BATCH_RUN_ERR (50040, "배치 실행은 대기중 상태에서만 가능합니다.", HttpStatus.BAD_REQUEST),
    EMPTY_OK (20000, "", HttpStatus.OK),
    LOGOUT_OK (20010, "로그아웃 되었습니다.", HttpStatus.OK),
    SAVE_OK (20020, "저장 되었습니다.", HttpStatus.OK),
    CREATE_OK (20021, "생성 되었습니다.", HttpStatus.OK),
    REQ_OK (20022, "구매요청 되었습니다.", HttpStatus.OK),
    UPDATE_OK (20030, "수정 되었습니다.", HttpStatus.OK),
    DELETE_OK (20040, "삭제 되었습니다.", HttpStatus.OK),
    INIT_PW_OK (20050, "비밀번호 초기화 되었습니다.", HttpStatus.OK),
    START_OK (20060, "가동 되었습니다.", HttpStatus.OK),
    STOP_OK (20061, "중지 되었습니다.", HttpStatus.OK),
    RUN_OK (20062, "실행 요청하였습니다.", HttpStatus.OK),
    BATCH_OK (90000, "배치 성공", HttpStatus.OK),
    REJECT_OK (20022, "반려 되었습니다.", HttpStatus.OK),
    RTN_REQ_OK (20023, "반품요청 되었습니다.", HttpStatus.OK),
    CANCEL_OK (20024, "취소 되었습니다.", HttpStatus.OK),
    COL_OK (20025, "수거지시 처리되었습니다.", HttpStatus.OK),
    RTN_PROC_OK (20026, "반품처리 되었습니다.", HttpStatus.OK),
    BO_IF_OK (21000, "정상처리 되었습니다.", HttpStatus.OK),
    BO_IF_PART_FAIL (21001, "일부 미등록 처리 되었습니다.", HttpStatus.INTERNAL_SERVER_ERROR),
    BO_IF_ALL_FAIL (21002, "전체 미등록 처리 되었습니다.", HttpStatus.INTERNAL_SERVER_ERROR),
    ERR_PW(40001, "현재의 비밀번호가 틀립니다. ", HttpStatus.BAD_REQUEST),
    ERR_FIND_ID(40002, "입력하신  정보로 등록된 아이디가 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_FIND_PW(40003, "입력하신  정보로 등록된 아이디가 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_ITEMCLASS (40004, "품목분류 중복발생하였습니다.!", HttpStatus.BAD_REQUEST),
    ERR_PCHREQAMTOVER (40005, "구매가능금액을 초과하였습니다.!", HttpStatus.BAD_REQUEST),
    ERR_NONSTOREID (40006, "매장정보가 없습니다.!", HttpStatus.BAD_REQUEST),
    ERR_NEQWHSID (40007, "동일한 납품장소로 발주를 진행해야 합니다.!", HttpStatus.BAD_REQUEST),
    ERR_NEQSPPLY (40008, "동일한 공급사로 발주를 진행해야 합니다.!", HttpStatus.BAD_REQUEST),
    ERR_NEQDLVDT (40009, "동일한 납품요청일로 발주를 진행해야 합니다.!", HttpStatus.BAD_REQUEST),
    ERR_NONSPPLY (40010, "공급업체정보가 없습니다.!", HttpStatus.BAD_REQUEST),
    ERR_NONSTORE (40011, "본사배송은 납품장소가 매장이어야만 합니다.", HttpStatus.BAD_REQUEST),
    ERR_NOEQSTORE (40012, "구매요청건의 납품매장과 발주요청은 납품매장이 서로 다릅니다.", HttpStatus.BAD_REQUEST),
    ERR_NOEQSPPLY (40013, "구매요청건의 납품공급업체와 발주요청한 공급업체가 서로 다릅니다.", HttpStatus.BAD_REQUEST),
    ERR_DLV001 (40014, "배송구분은 공급사 배송이되야 합니다.", HttpStatus.BAD_REQUEST),
    ERR_OUTWHS (40015, "출고창고 정보가 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_POSHNONQTY (40016, "발주 수량보다 출고 수량이 많습니다.", HttpStatus.BAD_REQUEST),
    ERR_NONEXPRY (40017, "유통기한을 입력해주세요!", HttpStatus.BAD_REQUEST),
    ERR_NOTWAREHOUSE (40018, "입고수량은 납품수량보다 적거나 같아야 합니다.", HttpStatus.BAD_REQUEST),
    ERR_NONEXISTBRAND (40019, "브랜드에 소속된 사용자가 아닙니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTEQWRITE (40020, "생성자만 수정 가능합니다.", HttpStatus.BAD_REQUEST),
    ERR_EXISTUNIT (40021, "진행중인 단가계약가 있습니다.", HttpStatus.BAD_REQUEST),
    ERR_CHGDTOPP (40022, "시작일과 종료일이 잘 못되어져 있습니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTCHGDT (40023, "시작일은 변경 불가 합니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTBRANDBELONG (40024, "소속 브랜드 정보가 틀립니다.!", HttpStatus.BAD_REQUEST),
    ERR_NOTSTOREBELONG (40024, "소속 매장 정보가 틀립니다.!", HttpStatus.BAD_REQUEST),
    ERR_NOTUSEDAUTH (40025, "사용권한이 없습니다.!", HttpStatus.BAD_REQUEST),
    ERR_NEQRTNWHSID (40026, "동일한 수거장소 반품발주를 진행해야 합니다.!", HttpStatus.BAD_REQUEST),
    ERR_NONRTNSTORE (40027, "본사수거는 수거장소가 매장이어야만 합니다.", HttpStatus.BAD_REQUEST),
    ERR_NEQRTNSPPLY (40028, "동일한 공급사로 수거 발주를 진행해야 합니다.!", HttpStatus.BAD_REQUEST),
    ERR_INWHS (40029, "입고창고 정보가 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTITEM (40030, "대상품목이 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTSPPLY (40031, "공급사 정보가 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_INGPOCNT (40032, "발주 진행중인건이 있어서 반품 반려 처리를 할 수 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_INGCOLCNT (40033, "발주 진행중인건이 있어서 반품 취소처리를 할 수 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_POPICKQTY (40034, "반품 발주 수량보다 수거 수량이 많습니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTRTNQTY (40035, "반품입고수량은 수거수량보다 적거나 같아야 합니다.", HttpStatus.BAD_REQUEST),
    ERR_NOTRTNINWHS (40036, "반품입고창고가 수거서 반품입고창고와 상이합니다.", HttpStatus.BAD_REQUEST),
    ERR_AUTHSTORE (40037, "매장소속 담당자가 아닙니다.", HttpStatus.BAD_REQUEST),
    ERR_CODE_NM (40038, "정의되지 않은 코드명을 사용하였습니다.", HttpStatus.BAD_REQUEST),
    ERR_BO_STORE (40039, "매장정보를 찿을 수 없습니다.", HttpStatus.BAD_REQUEST),
    ERR_PG_FAIL (40040, "PG 결제 처리중 에러가 발생하였습니다.", HttpStatus.BAD_REQUEST),
    ERR_PCH_JOB_FAIL (40041, "임시저장 상태가 아닙니다.", HttpStatus.BAD_REQUEST),
    ERR_NON_BASE_WHS (40042, "창고관리에서 기본창고를 지정해주세요!", HttpStatus.BAD_REQUEST),
    ;

    private int id;
    private String message;
    private HttpStatus httpStatus;

    SystemMessageCode(int id, String message, HttpStatus httpStatus) {
        this.id = id;
        this.message = message;
        this.httpStatus = httpStatus;
    }

    public static SystemMessageCode valueOf(Integer id) {
        for (SystemMessageCode e : SystemMessageCode.values()) {
            if (id == e.getId()) {
                return e;
            }
        }
        return null;
    }
}
