package com.zcloud.zcGbsServicer.domain.enums;

import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

@Getter
public enum PersonTypeEnum {

    //救援队
    RESCUE_TEAM(1, "救援队"),
    //控制室
    CONTROL_ROOM(2, "控制室"),
    //泵房
    PUMP_ROOM(3, "泵房"),
    //水源
    WATER_SOURCE(4, "水源"),;

    private final Integer code;
    private final String description;

    PersonTypeEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据 Code 获取枚举对象
     * 通常用于 Mybatis/JPA 的类型转换，或处理前端传来的参数
     *
     * @param code 状态码
     * @return 对应的枚举，如果找不到则返回 null (或抛出异常)
     */
    public static PersonTypeEnum getByCode(Integer code) {
        return Arrays.stream(PersonTypeEnum.values())
                .filter(e -> e.getCode().equals(code))
                .findFirst()
                .orElse(null); // 或者 .orElseThrow(() -> new IllegalArgumentException("未知的人员类型"));
    }

    /**
     * 根据 Code 获取描述信息（空指针安全）
     */
    public static String getDescByCode(Integer code) {
        return Optional.ofNullable(getByCode(code))
                .map(PersonTypeEnum::getDescription)
                .orElse("未知类型");
    }

    /**
     * 判断某个 code 是否合法
     */
    public static boolean isValid(Integer code) {
        return getByCode(code) != null;
    }


}
