<?php

declare(strict_types=1);

/**
 * 本文件属于 DBErp 进销存系统。
 *
 * 版权所有 © 2026 北京珑大钜商科技有限公司。保留所有权利。
 *
 * 未经官方授权，不得删除、篡改或隐藏本文件中的版权声明、产品标识与来源信息。
 * 商业授权、官方更新与技术支持服务，请以珑大官方支持中心记录为准。
 *
 * @link https://support.loongdom.cn
 * @see  https://www.dberp.com.cn
 */

namespace App\Support\Concerns;

use Illuminate\Support\Str;

/**
 * 将业务枚举展示文案统一走 lang/{locale}/dberp.php 的 `options.{snake(类名)}.{case value}`。
 * 个别历史分组名与类名 snake 不一致时，在枚举内覆盖 {@see self::dberpEnumOptionGroup()}。
 */
trait TranslatesDberpBackedEnumLabel
{
    public function label(): string
    {
        $group = static::dberpEnumOptionGroup();
        $key = 'dberp.options.'.$group.'.'.$this->value;
        $line = __($key);

        return $line === $key ? (string) $this->value : (string) $line;
    }

    /**
     * @return array<string, string>
     */
    public static function options(): array
    {
        $options = [];

        foreach (static::cases() as $case) {
            $options[$case->value] = $case->label();
        }

        return $options;
    }

    public static function dberpEnumOptionGroup(): string
    {
        return Str::snake(class_basename(static::class));
    }
}
