<?php

namespace app\enum;

enum RechargeStatus: int
{
    /**
     * 失败
     */
    case FAIL = -2;
    
    /**
     * 取消
     */
    case CANCEL = -1;
    
    /**
     * 等待支付
     */
    case CREATED = 0;
    
    /**
     * 支付完成
     */
    case PAID = 1;
    
    /**
     * 完成
     */
    case COMPLETE = 2;

    /**
     * 获取所有状态映射数组
     */
    public static function toArray(): array
    {
        return [
            self::FAIL->value => __('失败'),
            self::CANCEL->value => __('取消'),
            self::CREATED->value => __('等待支付'),
            self::COMPLETE->value => __('完成'),
        ];
    }

    /**
     * 获取当前状态的描述文本
     */
    public function getDescription(): string
    {
        return self::toArray()[$this->value];
    }

    /**
     * 安全地从值创建枚举实例
     */
    public static function tryFromValue(int $value): ?self
    {
        return self::tryFrom($value);
    }
}