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),
    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),
    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),
    ;



    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;
    }
}
