package jnpf.enums.cultivate.task;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 任务分配规则枚举
 * 
 * @author AI Assistant
 */
@Getter
@AllArgsConstructor
public enum TaskAssignmentRuleEnum {
    /**
     * 指定成员
     */
    SPECIFIED_MEMBER(1, "指定成员"),
    
    /**
     * 指定组织
     */
    SPECIFIED_ORGANIZATION(2, "指定组织"),
    
    /**
     * 指定岗位
     */
    SPECIFIED_POSITION(3, "指定岗位"),
    
    /**
     * 自定义
     */
    CUSTOM(4, "自定义");

    private final Integer code;
    private final String label;

    /**
     * 根据 code 获取枚举
     *
     * @param code 规则编码
     * @return 任务分配规则枚举
     */
    public static TaskAssignmentRuleEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (TaskAssignmentRuleEnum rule : TaskAssignmentRuleEnum.values()) {
            if (rule.getCode().equals(code)) {
                return rule;
            }
        }
        throw new IllegalArgumentException("无效的任务分配规则编码：" + code);
    }

    /**
     * 根据 label 获取 code
     *
     * @param label 规则名称
     * @return 规则编码
     */
    public static Integer getCodeByLabel(String label) {
        if (label == null || label.trim().isEmpty()) {
            return null;
        }
        for (TaskAssignmentRuleEnum rule : TaskAssignmentRuleEnum.values()) {
            if (rule.getLabel().equals(label)) {
                return rule.getCode();
            }
        }
        return null;
    }

    /**
     * 判断 code 是否有效
     *
     * @param code 规则编码
     * @return true-有效，false-无效
     */
    public static boolean isValid(Integer code) {
        return getByCode(code) != null;
    }
}
