<?php

namespace App\Livewire\Forms;

use Exception;
use Livewire\Attributes\Validate;
use Livewire\Form;
use App\Models\Client;

class ClientForm extends Form
{
    public $client_name = '';
    public $legal_name = '';
    public $cnpj = '';
    public $profile_image_path = null;
    public $pbx_hosting = '';
    public $activation_date;
    public $carrier = '';
    public $access_type = '';
    public $server_ip = '';
    public $ddr_out = '';
    public $ddr_key = '';
    public $root_password = '';
    public $has_call_center = false;
    public $has_voice_gateway = false;
    public $has_fop2 = false;
    public $observation = '';
    public $modules = '';
    public $whatsapp_number = '';
    public $whatsapp_activation_date;
    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;
        $data['client_name'] = $data['name'];
        unset($data['profile_image_path']);

        $this->fill($data);
    }

    public function rules()
    {
        return [
            'client_name' => 'required|string|max:255',
            'legal_name' => 'required|string|max:255',
            'cnpj' => [
                'required',
                'string',
                'max:18',
            ],
            'profile_image_path' => 'nullable|file|mimes:jpeg,png,bmp,gif,svg,webp|max:2048',
            'activation_date' => 'nullable|date',
            'carrier' => 'nullable|string|max:255',
            'access_type' => 'nullable|string|max:255',
            'server_ip' => 'nullable|ip',
            'root_password' => 'nullable|string',
            'ddr_key' => 'nullable|string',
            'ddr_out' => 'nullable|string',
            'observation' => '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',
        ];
    }

    public function messages()
    {
        return [
            'client_name.required' => 'O campo Nome Fantasia é obrigatório.',
            'client_name.max' => 'O Nome Fantasia não pode ter mais que 255 caracteres.',

            'cnpj.required' => 'O CNPJ é obrigatório.',
            'cnpj.max' => 'O CNPJ deve ter no máximo 18 caracteres (incluindo pontuação).',
            'cnpj.min' => 'O CNPJ está muito curto. Por favor, insira um CNPJ válido.',
            'cnpj.unique' => 'Este CNPJ já está cadastrado em outro cliente.',

            '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.',
        ];
    }
}
