56 lines
1.5 KiB
PHP
56 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Admin\User;
|
|
|
|
use App\Livewire\Forms\UserForm;
|
|
use App\Models\User;
|
|
use Livewire\Component;
|
|
use Livewire\Attributes\On;
|
|
use App\Services\UserService;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class EditUser extends Component
|
|
{
|
|
|
|
|
|
public UserService $userService;
|
|
public User $user;
|
|
public UserForm $userForm;
|
|
#[On('update-user')]
|
|
public function loadUser($id)
|
|
{
|
|
try {
|
|
$this->user = User::find($id);
|
|
|
|
|
|
if ($this->user) {
|
|
$this->userForm->editUser($this->user);
|
|
}
|
|
} catch (\Exception $e) {
|
|
$this->dispatch('notify', message: 'Ocorreu um erro inesperado ao editar o usuário. ' . $e);
|
|
}
|
|
}
|
|
public function editUser(UserService $userService)
|
|
{
|
|
|
|
try {
|
|
$this->authorize('editUser', Auth::user());
|
|
$data = $this->userForm->validate();
|
|
|
|
if (!$userService->updateUser($this->user, $data)) {
|
|
throw new \Exception('O serviço não confirmou a atualização.');
|
|
}
|
|
|
|
$this->dispatch('user-updated');
|
|
$this->dispatch('notify', message: $this->userForm->name . ' atualizado com sucesso!');
|
|
} catch (\Exception $e) {
|
|
$this->dispatch('notify', message: 'Falha na edição: ' . $e->getMessage(), type: 'error');
|
|
// $this->addError('general', $e->getMessage());
|
|
}
|
|
}
|
|
public function render()
|
|
{
|
|
return view('livewire.admin.users.edit-user');
|
|
}
|
|
}
|