Files
zenithar/app/Livewire/Usuarios/Index.php

64 lines
1.6 KiB
PHP

<?php
namespace App\Livewire\Usuarios;
use App\Enums\RoleName;
use App\Models\User;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Computed;
use Livewire\Component;
use TallStackUi\Traits\Interactions;
class Index extends Component
{
use Interactions;
public function render(): View
{
return view('livewire.usuarios.index');
}
public function confirmDelete($id): void
{
$user = User::find($id);
$this->authorize('delete', $user);
if ($user->roles()->where('name', RoleName::SuperAdmin)->exists()) {
$this->toast()->error('Error', 'No se puede eliminar un super administrador')->send();
return;
}
$this->dialog()->question('¿Esta seguro de eliminar este usuario?', 'No podrá ser recuperado')
->confirm('Eliminar Usuario', method: 'doDelete', params: $id)
->cancel()
->send();
}
public function doDelete($id): void
{
$user = User::find($id);
$this->authorize('delete', $user);
$user->delete();
$this->toast()->success('Usuario eliminado correctamente')->send();
}
#[Computed]
public function headers(): array
{
return [
['index' => 'name', 'label' => 'Nombre'],
['index' => 'email', 'label' => 'Email'],
['index' => 'action', 'label' => 'Acciones'],
];
}
#[Computed]
public function rows(): LengthAwarePaginator
{
return User::paginate();
}
}