58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Admin;
|
|
|
|
use App\Models\Client;
|
|
use App\Livewire\Forms\ClientForm; // 1. Importa seu Form Object
|
|
use Livewire\Component;
|
|
use Livewire\WithFileUploads;
|
|
use Livewire\Attributes\On;
|
|
|
|
class AddClient extends Component
|
|
{
|
|
use WithFileUploads;
|
|
|
|
// 1. Declara as propriedades principais
|
|
public ClientForm $form;
|
|
/**
|
|
* Método principal chamado pelo wire:submit="save".
|
|
*/
|
|
public function save()
|
|
{
|
|
|
|
|
|
// 2. Valida os dados usando as 'rules' do ClientForm.php
|
|
$this->form->validate();
|
|
|
|
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. 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
|
|
|
|
}
|
|
|
|
/**
|
|
* Renderiza a view do modal.
|
|
*/
|
|
public function render()
|
|
{
|
|
return view('livewire.admin.add-client');
|
|
}
|
|
}
|