package jnpf.enums.cultivate;

import lombok.AllArgsConstructor;
import lombok.Getter;

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

/**
 * 是否系统内置枚举
 *
 * @author lingma
 * @since 2026-04-11
 */
@Getter
@AllArgsConstructor
public enum CultivateIsSystemEnum {
    
    /**
     * 否（非系统内置）
     */
    NO(0, "否"),
    
    /**
     * 是（系统内置）
     */
    YES(1, "是");
    
    private final Integer code;
    private final String desc;
    
    /**
     * 根据code获取枚举
     *
     * @param code 编码
     * @return 对应的枚举值，未找到返回null
     */
    public static CultivateIsSystemEnum 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(CultivateIsSystemEnum::getCode, CultivateIsSystemEnum::getDesc));
    }
}
