package com.yupi.project.model.enums;

import lombok.Getter;

/**
 * 充电会话状态枚举
 */
@Getter
public enum ChargingSessionStatusEnum {

    REQUESTED("REQUESTED", "已请求"), // 用户发起充电请求
    ROBOT_ASSIGNED("ROBOT_ASSIGNED", "机器人已分配"), // 系统已分配机器人
    ROBOT_EN_ROUTE("ROBOT_EN_ROUTE", "机器人前往中"), // 机器人正在前往车位 (MQTT: move ack)
    ROBOT_ARRIVED("ROBOT_ARRIVED", "机器人已到达"), // 机器人已到达指定车位 (MQTT: arrive ack)
    CHARGING_STARTED("CHARGING_STARTED", "充电进行中"), // 机器人开始充电 (MQTT: start_charge ack)
    CHARGING_COMPLETED("CHARGING_COMPLETED", "充电已完成"), // 机器人完成充电 (MQTT: stop_charge ack)
    PAYMENT_PENDING("PAYMENT_PENDING", "待支付"), // 充电完成，等待用户支付
    PAID("PAID", "已支付"), // 用户已支付
    CANCELLED_BY_USER("CANCELLED_BY_USER", "用户取消"), // 用户在特定阶段取消
    CANCELLED_BY_SYSTEM("CANCELLED_BY_SYSTEM", "系统取消"), // 例如，无可用机器人，机器人故障等
    ERROR("ERROR", "会话错误"); // 充电过程中发生未知错误

    private final String value;
    private final String description;

    ChargingSessionStatusEnum(String value, String description) {
        this.value = value;
        this.description = description;
    }

    /**
     * 根据 value 获取枚举
     *
     * @param value
     * @return
     */
    public static ChargingSessionStatusEnum getEnumByValue(String value) {
        if (value == null) {
            return null;
        }
        for (ChargingSessionStatusEnum anEnum : ChargingSessionStatusEnum.values()) {
            if (anEnum.value.equals(value)) {
                return anEnum;
            }
        }
        return null;
    }
} 