From 692378d0cd8eb92a8e93c9bee02c5bb761cb247a Mon Sep 17 00:00:00 2001 From: lukibeg Date: Wed, 19 Nov 2025 19:49:43 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20Edi=C3=A7=C3=A3o=20de=20clientes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Livewire/Admin/AddClient.php | 2 +- app/Livewire/Admin/CreateUser.php | 12 +++-------- app/Livewire/Admin/EditClient.php | 18 ++++++++++++----- app/Livewire/Forms/ClientForm.php | 20 ++++++++----------- app/Services/ClientService.php | 6 +++++- .../livewire/admin/create-user.blade.php | 18 ++++++++--------- .../livewire/admin/edit-client.blade.php | 14 ++++++------- 7 files changed, 46 insertions(+), 44 deletions(-) diff --git a/app/Livewire/Admin/AddClient.php b/app/Livewire/Admin/AddClient.php index 22cf03f..7295d54 100644 --- a/app/Livewire/Admin/AddClient.php +++ b/app/Livewire/Admin/AddClient.php @@ -34,7 +34,7 @@ public function save(ClientService $clientService) $client = $clientService->addClient($data); $this->dispatch('client-added'); - $this->dispatch('notify', message: $client->name . ' Cliente adicionado com sucesso!'); + $this->dispatch('notify', message: $client->name . ' adicionado com sucesso!'); } catch (\Exception $e) { $this->dispatch('notify', message: 'Ocorreu um erro inesperado ao salvar.', type: 'error'); } diff --git a/app/Livewire/Admin/CreateUser.php b/app/Livewire/Admin/CreateUser.php index c8bc9a4..02e7b00 100644 --- a/app/Livewire/Admin/CreateUser.php +++ b/app/Livewire/Admin/CreateUser.php @@ -12,14 +12,14 @@ class CreateUser extends Component public string $email = ''; public string $password = ''; public string $password_confirm = ''; - public bool $permissions = false; + public string $permissions = ''; protected $rules = [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8', 'password_confirm' => 'required|string|same:password', - 'permissions' => 'required|boolean' + 'permissions' => 'required|string|in:user,admin' ]; protected $messages = [ @@ -28,7 +28,7 @@ class CreateUser extends Component 'email.unique' => 'O email informado já foi cadastrado anteriormente.', 'password' => 'A senha precisa ter 8 ou mais caracteres.', 'password_confirm' => 'As senhas não coincidem.', - 'permissions' => 'Defina o nível de autorização do usuário.', + 'permissions' => 'Escolha o nível de autorização do usuário.' ]; public function createUser(UserService $userService) @@ -36,12 +36,6 @@ public function createUser(UserService $userService) $validated = $this->validate($this->rules, $this->messages); - if ($validated['permissions'] === true) { - $validated['permissions'] = array('admin'); - } else { - $validated['permissions'] = array('user'); - } - try { $this->authorize('createUser', Auth::user()); diff --git a/app/Livewire/Admin/EditClient.php b/app/Livewire/Admin/EditClient.php index 0ac03ad..963a8bd 100644 --- a/app/Livewire/Admin/EditClient.php +++ b/app/Livewire/Admin/EditClient.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\ClientForm; use App\Models\Client; +use App\Services\ClientService; use Livewire\Attributes\On; use Livewire\Component; use Exception; @@ -13,8 +14,11 @@ class EditClient extends Component public Client $client; public ClientForm $clientForm; + // public ClientService $clientService; #[On('update-client')] + + public function loadClient($id) { try { @@ -27,15 +31,19 @@ public function loadClient($id) $this->dispatch('notify', message: 'Ocorreu um erro inesperado ao editar o cliente. ' + $e); } } - public function edit($clientId) + public function edit(ClientService $clientService) { - $this->clientForm->validate(); + $data = $this->clientForm->validate(); try { - $this->clientForm->updateClient($this->client); - $this->dispatch('notify', message: $this->client->client_name + ' atualizado com sucesso!'); + if (!$clientService->updateClient($this->client, $data)) { + throw new Exception('O serviço não confirmou a atualização.'); + } + + $this->dispatch('client-updated'); + $this->dispatch('notify', message: $this->clientForm->client_name . ' atualizado com sucesso!'); } catch (Exception $e) { - $this->dispatch('notify', message: 'Ocorreu um erro inesperado ao tentar confirmar edição do cliente. ' + $e); + $this->dispatch('notify', message: 'Falha na edição: ' . $e->getMessage(), type: 'error'); } } public function render() diff --git a/app/Livewire/Forms/ClientForm.php b/app/Livewire/Forms/ClientForm.php index 416241e..19850f3 100644 --- a/app/Livewire/Forms/ClientForm.php +++ b/app/Livewire/Forms/ClientForm.php @@ -2,7 +2,6 @@ namespace App\Livewire\Forms; -use App\Services\ClientService; use Exception; use Livewire\Attributes\Validate; use Livewire\Form; @@ -26,8 +25,6 @@ class ClientForm extends Form public $modules = ''; public $whatsapp_number = ''; public $whatsapp_activation_date; - public ClientService $clientService; - // Método para preencher o formulário (para edição futura) public function addClient(Client $client) { @@ -40,14 +37,6 @@ public function addClient(Client $client) $this->fill($data); } - public function updateClient(Client $client) - { - if(!$this->clientService->updateClient($client)){ - throw new Exception('Ocorreu um erro.'); - } - - - } // 4. ADICIONADO: Método de Regras /** * Define as regras de validação para o formulário. @@ -57,7 +46,11 @@ public function rules() return [ 'client_name' => 'required|string|max:255', 'legal_name' => 'required|string|max:255', - 'cnpj' => 'required|string|max:20|unique:clients,cnpj', + 'cnpj' => [ + 'required', + 'string', + 'max:18', + ], 'profile_image_path' => 'nullable|file|mimes:jpeg,png,bmp,gif,svg,webp|max:2048', 'activation_date' => 'nullable|date', 'carrier' => 'nullable|string|max:255', @@ -83,6 +76,9 @@ public function messages() 'client_name.required' => 'O campo Nome Fantasia é obrigatório.', 'client_name.max' => 'O Nome Fantasia não pode ter mais que 255 caracteres.', + 'cnpj.required' => 'O CNPJ é obrigatório.', + 'cnpj.max' => 'O CNPJ deve ter no máximo 18 caracteres (incluindo pontuação).', + 'cnpj.min' => 'O CNPJ está muito curto. Por favor, insira um CNPJ válido.', 'cnpj.unique' => 'Este CNPJ já está cadastrado em outro cliente.', 'profile_image_path.image' => 'O arquivo deve ser uma imagem válida (jpg, png, etc.).', diff --git a/app/Services/ClientService.php b/app/Services/ClientService.php index 2d713af..11d53c8 100644 --- a/app/Services/ClientService.php +++ b/app/Services/ClientService.php @@ -20,5 +20,9 @@ public function addClient(array $client) return Client::create($client); } - public function updateClient($client) {} + public function updateClient(Client $client, $data) + { + $data['name'] = $data['client_name']; + return $client->update($data); + } } diff --git a/resources/views/livewire/admin/create-user.blade.php b/resources/views/livewire/admin/create-user.blade.php index 2ab5030..64736d1 100644 --- a/resources/views/livewire/admin/create-user.blade.php +++ b/resources/views/livewire/admin/create-user.blade.php @@ -47,7 +47,7 @@
@@ -105,7 +105,7 @@ class.="form-input" placeholder="Ex: SSH, AnyDesk, VPN"> - @error('form.server_ip') {{ $message }} @enderror
@@ -159,7 +159,7 @@ class="form-checkbox"> - @error('form.modules') {{ $message }} + @error('clientForm.modules') {{ $message }} @enderror