package com.aegis.emergency.alert.constant;

import org.apache.commons.lang3.StringUtils;
import lombok.Getter;

/**
 * 转事件审核状态枚举
 *
 * none -> 无需审核
 * pending -> 待审核
 * approved -> 已审核
 * rejected -> 已驳回
 *
 * 对应 duty_alert_convert.review_status 字段
 *
 * @author aegis
 */
@Getter
public enum AlertConvertReviewStatus {

    /** 无需审核 */
    NONE("none", "无需审核"),

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

    /** 已审核通过 */
    APPROVED("approved", "已审核"),

    /** 已驳回 */
    REJECTED("rejected", "已驳回");

    private final String code;
    private final String label;

    AlertConvertReviewStatus(String code, String label) {
        this.code = code;
        this.label = label;
    }

    /**
     * 根据代码获取枚举值
     *
     * @param code 状态代码
     * @return 对应的枚举，找不到则返回 null
     */
    public static AlertConvertReviewStatus fromCode(String code) {
        if (StringUtils.isBlank(code)) {
            return null;
        }
        for (AlertConvertReviewStatus status : values()) {
            if (status.code.equals(code)) {
                return status;
            }
        }
        return null;
    }

    /**
     * 是否需要进一步审核
     */
    public boolean needReview() {
        return this == PENDING;
    }
}