refactor|fix: Ajustes em algumas linhas e inclusão de componentes
This commit is contained in:
parent
607d6c3e25
commit
b3ac0826aa
|
|
@ -1,85 +0,0 @@
|
||||||
<?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.',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<livewire:admin.create-user />
|
<livewire:admin.create-user />
|
||||||
|
<livewire:admin.add-client />
|
||||||
|
|
||||||
<div class="container grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
<div class="container grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||||
|
|
||||||
|
|
@ -114,280 +114,6 @@ class="w-32 h-32 rounded-full object-cover">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="client-card">
|
|
||||||
<div class="client-card-header">
|
|
||||||
<div class="client-avatar">
|
|
||||||
<img src="{{ Vite::asset('resources/images/logo.png') }}" alt="Avatar do Cliente"
|
|
||||||
class="w-32 h-32 rounded-full object-cover">
|
|
||||||
</div>
|
|
||||||
<div x-data="{ open: false }" @click.outside="open = false" class="client-options-menu">
|
|
||||||
<button @click="open = !open" class="client-options-button">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-gray-400 hover:text-gray-700"
|
|
||||||
viewBox="0 0 20 20" fill="currentColor">
|
|
||||||
<path
|
|
||||||
d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<ul x-show="open" class="client-options-list" x-transition>
|
|
||||||
<li><a href="#" class="client-option-item">Ver Detalhes</a></li>
|
|
||||||
<li><a href="#" class="client-option-item">Editar Cliente</a></li>
|
|
||||||
<li><a href="#" class="client-option-item text-red-600">Excluir Cliente</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="client-card-name">
|
|
||||||
Cliente 4
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<livewire:admin.add-client />
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
Loading…
Reference in New Issue