package com.haha.common.enums;

import com.haha.common.vo.StatusLabel;

/**
 * 邀请记录状态枚举
 */
public enum InviteStatusEnum {

    /**
     * 待激活 - 新用户注册但未完成首单
     */
    PENDING(0, "待激活", "info"),

    /**
     * 已激活 - 已完成首单，等待发放奖励
     */
    ACTIVATED(1, "已激活", "success"),

    /**
     * 奖励已发放 - 奖励已成功发放
     */
    REWARDED(2, "奖励已发放", "primary"),

    /**
     * 发放失败 - 奖励发放失败
     */
    FAILED(3, "发放失败", "danger"),

    /**
     * 已取消 - 已取消（如活动结束）
     */
    CANCELLED(4, "已取消", "warning");

    private final int code;
    private final String label;
    private final String color;

    InviteStatusEnum(int code, String label, String color) {
        this.code = code;
        this.label = label;
        this.color = color;
    }

    public int getCode() {
        return code;
    }

    public String getLabel() {
        return label;
    }

    public String getColor() {
        return color;
    }

    public StatusLabel getStatusLabel() {
        return new StatusLabel(label, color);
    }

    /**
     * 根据code获取状态标签
     *
     * @param code 状态码
     * @return 状态标签
     */
    public static StatusLabel getLabelByCode(Integer code) {
        if (code == null) {
            return StatusLabel.info("未知");
        }
        for (InviteStatusEnum status : values()) {
            if (status.code == code) {
                return status.getStatusLabel();
            }
        }
        return StatusLabel.info("未知");
    }

    /**
     * 根据code获取枚举对象
     *
     * @param code 状态码
     * @return 枚举对象，如果不存在返回null
     */
    public static InviteStatusEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (InviteStatusEnum status : values()) {
            if (status.code == code) {
                return status;
            }
        }
        return null;
    }
}
