package com.kym.entity.awoara;

import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 * 石斑鱼上报事件枚举
 *
 * @author skyline
 */

@Getter
public enum Event {
    boot("boot", DeviceStateObject.class), // 设备启动事件,设备上电启动
    device_state("device_state", DeviceStateObject.class),  // 设备状态更新事件
    order_create("order_create", OrderInfoObject.class),  // 收到订单时上传，包含订单信息
    order_update("order_update", OrderInfoObject.class),  // 订单状态更新事件
    order_close("order_close", OrderInfoObject.class),  // 订单关闭事件
    user_login("user_login", UserLoginObject.class),  // ⽤户登录事件
    card_event("card_event", CardEventObject.class), // ⽤户刷卡事件
    device_status("device_status", DeviceStatusObject.class); // 设备上下线状态变更


    public String eventName;
    public Class<?> clazz;


    Event(String eventName, Class<?> clazz) {
        this.eventName = eventName;
        this.clazz = clazz;
    }

    private static List<String> getNames() {
        // 获取所有的method
        return Arrays.stream(values()).map(Event::getEventName).toList();
    }

    public static Class<?> getClazz(String eventName) {
        // 通过对应的方法名获取对应的类
        if (Objects.isNull(eventName) || !getNames().contains(eventName)) {
            return null;
        }
        return Arrays.stream(values()).filter(m -> m.getEventName().equals(eventName)).findFirst().get().getClazz();
    }
}
