<?php

namespace App\Livewire\Tutorials;

use App\Models\Tutorials\TutorialVersion;
use App\Models\Products\Product;
use App\Livewire\Traits\HasVersionIndex;
use Livewire\Component;
use Illuminate\Database\Eloquent\Model;

class Index extends Component
{
    use HasVersionIndex;

    protected function getVersionModel(): string
    {
        return TutorialVersion::class;
    }

    protected function getCountRelation(): string
    {
        return 'tutorials';
    }

    protected function getCreateSuccessMessage(string $version): string
    {
        return "Nueva versión de Tutoriales creada: {$version}";
    }

    protected function getVersionShowRoute(Product $product, Model $version): string
    {
        return route('products.tutorials.version.show', [$product, $version]);
    }

    protected function getDuplicateParameterName(): string
    {
        return 'tutorialVersionId';
    }

    protected function getVersionWritePermission(): string
    {
        return 'admin.tutorials.version.create';
    }

    /**
     * Los textos y las rutas que distinguen esta pantalla de las otras cinco.
     *
     * Ver el docblock de `HasVersionIndex::ficha()`: la vista es una sola y esto es
     * lo único que cambia entre los seis tipos de contenido.
     */
    protected function ficha(): array
    {
        return [
            'clave' => 'tutorials',
            'elemento' => 'tutorial',
            'elementos' => 'tutoriales',
            'rutaVer' => 'products.tutorials.version.show',
            'rutaEditar' => 'products.tutorials.version.edit',
            'explicacion' => 'Vídeos de YouTube o Vimeo que explican el producto dentro de la plataforma del cliente. Aquí se guarda la plataforma del vídeo y su identificador, y la API calcula el enlace y la versión para incrustar. Solo se envían los publicados.',
        ];
    }
}
