64 lines
1.6 KiB
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();
|
|
}
|
|
}
|