feat: adiciona novo cliente no banco de dados.

This commit is contained in:
lukibeg 2025-11-08 19:53:27 -03:00
parent 875f856660
commit b8dadb0292
1 changed files with 23 additions and 42 deletions

View File

@ -12,58 +12,39 @@ class AddClient extends Component
{ {
use WithFileUploads; use WithFileUploads;
// 2. Declara as propriedades principais // 1. Declara as propriedades principais
public ClientForm $form; 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". * Método principal chamado pelo wire:submit="save".
*/ */
public function 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(); $this->form->validate();
// 4. Pega todos os dados validados try {
$data = $this->form->all(); $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 // 5. Cria o cliente no banco de dados
if ($this->form->profile_image_path) { Client::create($data);
$path = $this->form->profile_image_path->store('client_logos', 'public'); // 6. Despacha um evento para atualizar outros componentes (ex: o grid de clientes)
$data['profile_image_path'] = $path; $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'); return view('livewire.admin.add-client');
} }
} }