package org.example.Enums;

/**
 * 任务类型枚举
 * 对应原C#的 TaskType 枚举，保留所有枚举值、注释和数值映射
 */
public enum TaskType {
    /**
     * 待办
     */
    DB(0),

    /**
     * 已办
     */
    YB(1),

    /**
     * 发起
     */
    FQ(2),

    /**
     * 抄送
     */
    CS(3);

    // 枚举对应的数值（对应C#枚举的赋值，如 DB=0）
    private final int value;

    /**
     * 构造方法：绑定枚举值和对应的数字
     *
     * @param value 枚举对应的数值
     */
    TaskType(int value) {
        this.value = value;
    }

    /**
     * 获取枚举对应的数值（如 DB 返回 0，YB 返回 1）
     * 对应C#直接访问枚举值的功能
     *
     * @return 枚举的数值
     */
    public int getValue() {
        return this.value;
    }

    /**
     * 从数值反向获取枚举（可选扩展，方便根据数据库/接口返回的数字解析枚举）
     *
     * @param value 枚举数值
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 无匹配值时抛出异常
     */
    public static TaskType fromValue(int value) {
        for (TaskType type : TaskType.values()) {
            if (type.value == value) {
                return type;
            }
        }
        throw new IllegalArgumentException("无效的任务类型数值：" + value);
    }
}