package com.aegis.emergency.alert.constant;

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

/**
 * 转警状态枚举
 *
 * pending_review -> 待审核
 * pending_feedback -> 待反馈
 * feedback_received -> 已反馈
 * processed -> 已处理
 * rejected -> 已驳回
 *
 * 专用于 duty_alert_transfer 表
 *
 * @author aegis
 */
@Getter
public enum AlertTransferStatus {

    /** 待审核 */
    PENDING_REVIEW("pending_review", "待审核"),

    /** 待反馈（审核通过后等待外部单位反馈） */
    PENDING_FEEDBACK("pending_feedback", "待反馈"),

    /** 已反馈（收到外部单位反馈） */
    FEEDBACK_RECEIVED("feedback_received", "已反馈"),

    /** 已处理（流程结束） */
    PROCESSED("processed", "已处理"),

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

    private final String code;
    private final String label;

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

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

    /**
     * 是否属于已完成状态（反馈已收到或流程处理完毕）
     *
     * @return 是否完成
     */
    public boolean isCompleted() {
        return this == FEEDBACK_RECEIVED || this == PROCESSED;
    }
}