package com.fs.company.enums;

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

/**
 * 业务类型枚举
 *
 * @author ZhuanZ
 */
public enum BusinessTypeEnum {

    /**
     * 外呼
     */
    CALL("CALL", "外呼"),

    /**
     * 加微
     */
    ADD_WX("ADD_WX", "加微"),

    /**
     * 短信
     */
    SMS("SMS", "短信");

    private final String code;
    private final String desc;

    BusinessTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 根据 code 获取枚举
     */
    public static BusinessTypeEnum fromCode(String code) {
        if (code == null) {
            return null;
        }
        for (BusinessTypeEnum item : values()) {
            if (item.code.equalsIgnoreCase(code)) {
                return item;
            }
        }
        return null;
    }

    /**
     * 校验是否为合法业务类型
     */
    public static boolean isValid(String code) {
        return fromCode(code) != null;
    }

    /**
     * 获取所有 code 列表
     */
    public static List<String> getCodes() {
        return Arrays.stream(values())
                .map(BusinessTypeEnum::getCode)
                .collect(Collectors.toList());
    }

    /**
     * 判断是否相等（忽略大小写）
     */
    public boolean equalsCode(String code) {
        return this.code.equalsIgnoreCase(code);
    }

}