package com.fs.provider.enums;

/**
 * 服务单审核状态
 *
 * @author xxx
 */
public enum ServiceOrderAuditStatus {

    /**
     * 待审核
     */
    PENDING(0, "待审核"),

    /**
     * 审核通过
     */
    APPROVED(1, "审核通过"),

    /**
     * 审核拒绝
     */
    REJECTED(2, "审核拒绝"),

    /**
     * 推送失败（技术状态）
     */
    PUSH_FAILED(-1, "推送失败"),

    /**
     * 无需审核（自动通过）
     */
    NO_AUDIT(3, "无需审核");

    private final Integer code;
    private final String desc;

    ServiceOrderAuditStatus(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public Integer getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 根据 code 获取枚举
     */
    public static ServiceOrderAuditStatus of(Integer code) {
        if (code == null) {
            return null;
        }
        for (ServiceOrderAuditStatus e : values()) {
            if (e.code.equals(code)) {
                return e;
            }
        }
        return null;
    }

    /**
     * 是否已通过审核（含无需审核）
     */
    public boolean isApproved() {
        return this == APPROVED || this == NO_AUDIT;
    }

    /**
     * 是否需要人工审核
     */
    public boolean needAudit() {
        return this == PENDING;
    }
}
