From b8dadb02925be997b46e53be7b8a374c356e06b2 Mon Sep 17 00:00:00 2001 From: lukibeg Date: Sat, 8 Nov 2025 19:53:27 -0300 Subject: [PATCH] feat: adiciona novo cliente no banco de dados. --- app/Livewire/Admin/AddClient.php | 65 +++++++++++--------------------- 1 file changed, 23 insertions(+), 42 deletions(-) diff --git a/app/Livewire/Admin/AddClient.php b/app/Livewire/Admin/AddClient.php index ebb3bf5..7b5e395 100644 --- a/app/Livewire/Admin/AddClient.php +++ b/app/Livewire/Admin/AddClient.php @@ -12,58 +12,39 @@ class AddClient extends Component { use WithFileUploads; - // 2. Declara as propriedades principais + // 1. Declara as propriedades principais public ClientForm $form; - public $showModal = false; - - /** - * Ouve o evento para abrir o modal. - * Disparado por: wire:click="$dispatch('openAddClientModal')" - */ - #[On('openAddClientModal')] - public function openModal() - { - $this->form->reset(); // Limpa o formulário de dados antigos - $this->showModal = true; - } - - /** - * Fecha e limpa o modal. - */ - public function closeModal() - { - $this->showModal = false; - $this->form->reset(); - } - /** * Método principal chamado pelo wire:submit="save". */ public function save() { - // 3. Valida os dados usando as 'rules' do ClientForm.php + + + // 2. Valida os dados usando as 'rules' do ClientForm.php $this->form->validate(); - // 4. Pega todos os dados validados - $data = $this->form->all(); + try { + $data = $this->form->all(); + $data['name'] = $data['client_name']; + // 4. Lida com o upload do arquivo de imagem + if ($this->form->profile_image_path) { + $path = $this->form->profile_image_path->store('client_logos', 'public'); + $data['profile_image_path'] = $path; + } - // 5. Lida com o upload do arquivo de imagem - if ($this->form->profile_image_path) { - $path = $this->form->profile_image_path->store('client_logos', 'public'); - $data['profile_image_path'] = $path; + // 5. Cria o cliente no banco de dados + Client::create($data); + // 6. Despacha um evento para atualizar outros componentes (ex: o grid de clientes) + $this->dispatch('client-added'); + // (Opcional) Envia uma notificação de sucesso + $this->dispatch('notify', message: 'Cliente adicionado com sucesso!'); + } catch (\Exception $e) { + dd($e); + $this->dispatch('notify', message: 'Ocorreu um erro inesperado ao salvar.', type: 'error'); } + // 3. Pega todos os dados validados - // 6. Cria o cliente no banco de dados - Client::create($data); - - // 7. Fecha o modal - $this->closeModal(); - - // 8. Despacha um evento para atualizar outros componentes (ex: o grid de clientes) - $this->dispatch('clientAdded'); - - // (Opcional) Envia uma notificação de sucesso - // $this->dispatch('notify', 'Cliente adicionado com sucesso!'); } /** @@ -73,4 +54,4 @@ public function render() { return view('livewire.admin.add-client'); } -} \ No newline at end of file +}