package jnpf.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

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

/**
 * 鉴定项分值类型枚举
 */
@Getter
@AllArgsConstructor
public enum AppraisalScoreTypeEnum {
    /**
     * 固定分值
     */
    FIXED(0, "固定"),
    /**
     * 浮动分值
     */
    FLOATING(1, "浮动");
    
    private final Integer code;
    private final String desc;
    
    /**
     * 根据code获取枚举
     *
     * @param code 分值类型编码
     * @return 对应的枚举值，未找到返回null
     */
    public static AppraisalScoreTypeEnum 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(AppraisalScoreTypeEnum::getCode, AppraisalScoreTypeEnum::getDesc));
    }
}
