<?php

namespace Istlab\AdminCrud;

use Illuminate\Support\Str;

class AdminCrud
{
    /**
     * ルート名サフィックス ('crudcopy' 等) から完全なルート名を返す。
     */
    public static function routeName(string $suffix): string
    {
        return config('admin-crud.route_name_prefix', 'admin.') . $suffix;
    }

    /**
     * ルート名サフィックスからURLを生成する。
     */
    public static function route(string $suffix, array $params = []): string
    {
        return route(static::routeName($suffix), $params);
    }

    /**
     * テーブル名に対応するEloquentモデルのクラス名を返す。存在しなければ null。
     */
    public static function modelFor(string $tableName): ?string
    {
        $namespace = rtrim(config('admin-crud.model_namespace', 'App\\Models'), '\\');
        $class = $namespace . '\\' . Str::studly(Str::singular($tableName));

        return class_exists($class) ? $class : null;
    }
}
