package jnpf.enums.cultivate;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 鉴定评分类型枚举
 * 0-等第制，1-等级制
 */
@Getter
@AllArgsConstructor
public enum IdentifyScoreTypeEnum {
    /**
     * 等第制
     */
    GRADE_SYSTEM(0, "等第制"),
    /**
     * 等级制
     */
    LEVEL_SYSTEM(1, "等级制");
    
    private final Integer code;
    private final String desc;
    
    /**
     * 根据code获取枚举
     *
     * @param code 评分类型编码
     * @return 对应的枚举值，未找到返回null
     */
    public static IdentifyScoreTypeEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(item -> item.getCode().equals(code))
                .findFirst()
                .orElse(null);
    }
    
    /**
     * 判断code是否有效
     *
     * @param code 评分类型编码
     * @return 是否有效
     */
    public static boolean isValid(Integer code) {
        return getByCode(code) != null;
    }
    
    /**
     * 获取所有枚举的code集合
     *
     * @return code集合
     */
    public static Map<Integer, String> getAllTypes() {
        return Arrays.stream(values())
                .collect(Collectors.toMap(IdentifyScoreTypeEnum::getCode, IdentifyScoreTypeEnum::getDesc));
    }
}
