<?php

namespace App\Livewire\Roles;

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

class Index extends Component
{
    use WithPagination;

    public string $search = '';

    protected $queryString = ['search'];

    public function updatingSearch()
    {
        $this->resetPage();
    }

    public function delete($id)
    {
        $this->authorize('admin.roles.destroy');
        
        $role = Role::findOrFail($id);

        if ($role->name === 'admin') {
            session()->flash('error', 'No se puede borrar el rol administrador.');
            return;
        }

        $role->delete();

        session()->flash('success', 'Rol eliminado correctamente.');
    }

    public function render()
    {
        $roles = Role::query()
            ->when($this->search, function ($query) {
                $query->where('name', 'like', "%{$this->search}%")
                    ->orWhere('fullname', 'like', "%{$this->search}%");
            })
            ->orderBy('id')
            ->paginate(10);

        return view('livewire.roles.index', [
            'roles' => $roles,
        ])->layout('layouts.app');
    }
}

