<?php

namespace App\Livewire\Configurations\Permissions;

use Livewire\Component;
use Spatie\Permission\Models\Permission;

class Edit extends Component
{
    public Permission $permission;
    public ?string $description = null;

    public function mount(Permission $permission)
    {
        // Protección opcional
        if ($permission->name === 'admin.users.index') {
            session()->flash('error', 'Este permiso no se puede editar.');
            return $this->redirect(route('configurations.permissions.index'), navigate: true);
        }

        $this->permission = $permission;
        $this->description = $permission->description;
    }

    protected function rules()
    {
        return [
            'description' => 'nullable|string',
        ];
    }

    public function update()
    {
        $this->authorize('admin.permissions.edit');
        
        if ($this->permission->name === 'admin.users.index') {
            session()->flash('error', 'Este permiso no se puede editar.');
            return;
        }

        $validated = $this->validate();

        $this->permission->update([
            'description' => $validated['description'],
        ]);

        session()->flash('success', 'Permiso actualizado correctamente.');
    }

    public function render()
    {
        return view('livewire.configurations.permissions.edit')
            ->layout('layouts.clean');
    }
}
