Nexus-InglineSystems/app/Livewire/Admin/ClientForm.php

86 lines
2.8 KiB
PHP

<?php
namespace App\Livewire\Forms;
use Livewire\Form;
use App\Models\Client;
class ClientForm extends Form
{
// 2. ATRIBUTOS REMOVIDOS: Os #[Rule(...)] foram removidos daqui
public $name = '';
public $legal_name = '';
public $cnpj = '';
public $profile_image_path;
public $pbx_hosting = '';
public $activation_date;
public $carrier = '';
public $access_type = '';
public $server_ip = '';
public $root_password = '';
public $has_call_center = false;
public $has_voice_gateway = false;
public $has_fop2 = false;
public $modules = '';
public $whatsapp_number = '';
public $whatsapp_activation_date;
// Método para preencher o formulário (para edição futura)
public function addClient(Client $client)
{
$data = $client->toArray();
$data['has_call_center'] = (bool) $client->has_call_center;
$data['has_voice_gateway'] = (bool) $client->has_voice_gateway;
$data['has_fop2'] = (bool) $client->has_fop2;
$this->fill($data);
}
// 4. ADICIONADO: Método de Regras
/**
* Define as regras de validação para o formulário.
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'legal_name' => 'nullable|string|max:255',
'cnpj' => 'nullable|string|max:20',
'profile_image_path' => 'nullable|image|max:2048', // 2MB Max
'pbx_hosting' => 'nullable|string|max:255',
'activation_date' => 'nullable|date',
'carrier' => 'nullable|string|max:255',
'access_type' => 'nullable|string|max:255',
'server_ip' => 'nullable|ip',
'root_password' => 'nullable|string',
'has_call_center' => 'boolean',
'has_voice_gateway' => 'boolean',
'has_fop2' => 'boolean',
'modules' => 'nullable|json',
'whatsapp_number' => 'nullable|string|max:20',
'whatsapp_activation_date' => 'nullable|date',
];
}
// 5. ADICIONADO: Método de Mensagens Customizadas
/**
* Define as mensagens de erro customizadas.
*/
public function messages()
{
return [
'name.required' => 'O campo Nome Fantasia é obrigatório.',
'name.max' => 'O Nome Fantasia não pode ter mais que 255 caracteres.',
'profile_image_path.image' => 'O arquivo deve ser uma imagem válida (jpg, png, etc.).',
'profile_image_path.max' => 'A imagem não pode ser maior que 2MB.',
'server_ip.ip' => 'Por favor, insira um endereço de IP válido.',
'modules.json' => 'O campo módulos deve conter um formato JSON válido.',
'*.date' => 'Por favor, insira uma data válida.',
'*.boolean' => 'Este campo deve ser verdadeiro ou falso.',
];
}
}