<?php

namespace App\Livewire\LicenseTokens\Components;

use App\Models\Products\LicenseToken;
use Livewire\Component;

class LicenseSuccess extends Component
{
    public ?LicenseToken $licenseToken = null;
    public bool $showToken = false;

    public function mount($licenseTokenId = null, LicenseToken $licenseToken = null)
    {
        // Si se pasa el modelo directamente
        if ($licenseToken && $licenseToken->exists) {
            $this->licenseToken = $licenseToken;
        } 
        // Si se pasa el ID
        elseif ($licenseTokenId) {
            // Asegurarse de que sea un entero
            $id = is_numeric($licenseTokenId) ? (int)$licenseTokenId : $licenseTokenId;
            $this->licenseToken = LicenseToken::findOrFail($id);
        } 
        // Si no hay parámetros, error
        else {
            abort(404, 'No se proporcionó una licencia');
        }
        
        // Asegurarse de que el token esté cargado y refrescarlo desde la BD
        if (!$this->licenseToken) {
            abort(404, 'No se pudo cargar la licencia');
        }
        
        // Refrescar el modelo desde la base de datos para asegurar que tenga todos los datos
        $this->licenseToken->refresh();
    }

    public function toggleTokenVisibility()
    {
        $this->showToken = !$this->showToken;
    }

    public function copyToken()
    {
        $this->dispatch('copy-to-clipboard', $this->licenseToken->token);
    }

    public function render()
    {
        return view('livewire.license-tokens.components.license-success')->layout('layouts.clean');
    }
}

