File manager - Edit - /var/www/html/portal/app/Http/Requests/Empresas/EmpresaRequest.php
Back
<?php namespace App\Http\Requests\Empresas; use Illuminate\Foundation\Http\FormRequest; class EmpresaRequest extends FormRequest { /** * Autoriza o uso do request. */ public function authorize(): bool { return true; } /** * Regras de validação. */ public function rules(): array { $routeName = $this->route()?->getName(); $empresa = $this->route('empresa'); // Listagem (filtro) if ($routeName === 'admin.empresas.index') { return [ 'q' => 'nullable|string|max:255', ]; } // Verificação de CNPJ if ($routeName === 'admin.empresas.verify') { if ($this->isMethod('post')) { return [ 'cnpj' => 'required|string|max:18|regex:/^\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}-\\d{2}$/', ]; } return []; } // Status (toggle) if ($routeName === 'admin.empresas.status') { return [ 'checkStatus' => 'required|in:ATIVADO,DESATIVADO', 'page' => 'nullable|integer|min:1', 'q' => 'nullable|string|max:255', ]; } // Destroy if ($routeName === 'admin.empresas.destroy') { return [ 'page' => 'nullable|integer|min:1', 'q' => 'nullable|string|max:255', ]; } $rules = [ 'q' => 'nullable|string|max:255', 'page' => 'nullable|integer|min:1', // Dados da empresa 'razaoSocial' => 'required|string|max:255', 'nomeFantasia' => 'required|string|max:255', 'numeroInscricaoMunicipal' => 'required|numeric|unique:empresas,numeroInscricaoMunicipal,' . ($empresa ? $empresa->id : null), 'cnpj' => 'required|string|regex:/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/|unique:empresas,cnpj,' . ($empresa ? $empresa->id : null), 'telefone' => 'required|string|max:20', 'celular' => 'required|string|max:20', 'email' => 'required|email|max:100|unique:empresas,email,' . ($empresa ? $empresa->id : null), 'site' => 'nullable|url|max:255', // Responsável legal "fullNameResponsavelEmpresa" => "required|string|max:100|regex:/^[A-Za-zÀ-ÿ\s]+$/", "cpfResponsavelEmpresa" => "required|string|max:14|regex:/^\d{3}\.\d{3}\.\d{3}-\d{2}$/", "emailResponsavelEmpresa" => "required|email|max:100", "phoneNumberResponsavelEmpresa" => 'required|string|max:20', "photoResponsavelEmpresa" => "nullable|image|mimes:jpeg,jpg,png,gif|mimetypes:image/jpeg,image/png,image/gif|max:2048", // Preposto (só se checkbox marcado) 'fullNamePrepostoEmpresa' => 'nullable|string|max:100|regex:/^[A-Za-zÀ-ÿ\s]+$/', 'cpfPrepostoEmpresa' => 'nullable|string|regex:/^\d{3}\.\d{3}\.\d{3}-\d{2}$/', 'emailPrepostoEmpresa' => 'nullable|email|max:100', 'phoneNumberPrepostoEmpresa' => 'nullable|string|max:20', 'photoPrepostoEmpresa' => 'nullable|image|mimes:jpeg,jpg,png,gif|mimetypes:image/jpeg,image/png,image/gif', // Endereço 'cep' => 'required|string|max:10', 'logradouro' => 'required|string|max:255', 'numero' => 'nullable|string|max:20', 'complemento' => 'nullable|string|max:255', 'bairro' => 'required|string|max:255', 'cidade' => 'required|string|max:255', 'uf' => 'required|string|size:2', 'latitude' => 'nullable|numeric|between:-90,90', 'longitude' => 'nullable|numeric|between:-180,180', // Documentos "comprovante" => "nullable|file|mimes:jpeg,jpg,png,gif,pdf|mimetypes:image/jpeg,image/png,image/gif,application/pdf|max:2048", 'contratoSocial' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', 'cartaoCNPJ' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', 'registroJuntaComercial' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', 'alvaraDeFuncionamento' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', 'inscricaoEstadual' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', 'inscricaoMunicipal' => 'nullable|file|mimes:pdf,jpeg,png|mimetypes:application/pdf,image/jpeg,image/png|max:102400', // Status "status" => 'required|in:ATIVADO,DESATIVADO', ]; if ($this->has('checkPrepostoEmpresa') && $this->checkPrepostoEmpresa) { $rules['fullNamePrepostoEmpresa'] = 'required|string|max:100|regex:/^[A-Za-zÀ-ÿ\s]+$/'; $rules['cpfPrepostoEmpresa'] = 'required|string|regex:/^\d{3}\.\d{3}\.\d{3}-\d{2}$/|different:cpfResponsavelEmpresa'; $rules['emailPrepostoEmpresa'] = 'required|email|max:100'; $rules['phoneNumberPrepostoEmpresa'] = 'required|string|max:20'; } return $rules; } /** * Mensagens personalizadas de erro. */ public function messages(): array { return [ // Listagem 'q.string' => __('O termo de busca deve ser texto.'), 'q.max' => __('O termo de busca deve ter no máximo 255 caracteres.'), // Verificação 'cnpj.required' => __('O CNPJ é obrigatório.'), 'cnpj.string' => __('Formato de CNPJ inválido.'), 'cnpj.max' => __('O CNPJ deve possuir 18 caracteres (com pontos, barra e traço).'), 'cnpj.regex' => __('Informe um CNPJ válido no formato 00.000.000/0000-00.'), // Status/Destroy 'checkStatus.required' => __('O status é obrigatório.'), 'checkStatus.in' => __('O status deve ser ATIVADO ou DESATIVADO.'), 'page.integer' => __('O número da página deve ser um inteiro.'), 'page.min' => __('O número da página deve ser maior ou igual a 1.'), // Empresa 'razaoSocial.required' => __('A razão social é obrigatória.'), 'nomeFantasia.required' => __('O nome fantasia é obrigatório.'), 'numeroInscricaoMunicipal.required' => __('O número de inscrição municipal é obrigatório.'), 'numeroInscricaoMunicipal.numeric' => __('A inscrição municipal deve conter apenas números.'), 'numeroInscricaoMunicipal.unique' => __('A inscrição municipal já está cadastrada.'), 'cnpj.unique' => __('O CNPJ já está cadastrado.'), 'telefone.required' => __('O telefone é obrigatório.'), 'celular.required' => __('O celular é obrigatório.'), 'email.required' => __('O e-mail da empresa é obrigatório.'), 'email.email' => __('Informe um e-mail válido para a empresa.'), 'site.url' => __('O site deve ser uma URL válida.'), // Responsável 'fullNameResponsavelEmpresa.required' => __('O nome completo do responsável é obrigatório.'), 'fullNameResponsavelEmpresa.regex' => __('O nome do responsável deve conter apenas letras e espaços.'), 'fullNameResponsavelEmpresa.string' => __('O nome completo do responsável é obrigatório.'), 'cpfResponsavelEmpresa.required' => __('O CPF do responsável é obrigatório.'), 'cpfResponsavelEmpresa.regex' => __('O CPF do responsável deve estar no formato 000.000.000-00.'), 'cpfResponsavelEmpresa.string' => __('O CPF do responsável deve estar no formato 000.000.000-00.'), 'emailResponsavelEmpresa.required' => __('O e-mail do responsável é obrigatório.'), 'emailResponsavelEmpresa.email' => __('Informe um e-mail válido para o responsável.'), 'phoneNumberResponsavelEmpresa.required' => __('O telefone do responsável é obrigatório.'), 'photoResponsavelEmpresa.image' => __('A foto do responsável deve ser uma imagem válida.'), // Preposto 'fullNamePrepostoEmpresa.required' => __('O nome completo do preposto é obrigatório quando autorizado.'), 'fullNamePrepostoEmpresa.regex' => __('O nome do preposto deve conter apenas letras e espaços.'), 'fullNamePrepostoEmpresa.string' => __('O nome do preposto deve ser preenchido.'), 'cpfPrepostoEmpresa.required' => __('O CPF do preposto é obrigatório quando autorizado.'), 'cpfPrepostoEmpresa.regex' => __('O CPF do preposto deve estar no formato 000.000.000-00.'), 'cpfPrepostoEmpresa.string' => __('O CPF do preposto deve estar no formato 000.000.000-00.'), 'emailPrepostoEmpresa.required' => __('O e-mail do preposto é obrigatório quando autorizado.'), 'emailPrepostoEmpresa.email' => __('Informe um e-mail válido para o preposto.'), 'phoneNumberPrepostoEmpresa.required' => __('O telefone do preposto é obrigatório quando autorizado.'), 'phoneNumberPrepostoEmpresa.string' => __('O telefone do preposto é obrigatório.'), 'photoPrepostoEmpresa.image' => __('A foto do preposto deve ser uma imagem válida.'), 'cpfPrepostoEmpresa.different_responsavel' => __('O CPF do preposto deve ser diferente do CPF do responsável.'), // Endereço 'cep.required' => __('O CEP é obrigatório.'), 'logradouro.required' => __('O logradouro é obrigatório.'), 'bairro.required' => __('O bairro é obrigatório.'), 'cidade.required' => __('A cidade é obrigatória.'), 'uf.required' => __('O estado (UF) é obrigatório.'), 'uf.size' => __('A UF deve conter exatamente 2 caracteres.'), // Documentos 'comprovante.mimes' => __('O comprovante deve ser nos formatos: jpeg, jpg, png, gif ou pdf.'), 'comprovante.mimetypes' => __('O comprovante deve ser nos formatos: jpeg, jpg, png, gif ou pdf.'), 'contratoSocial.mimes' => __('O contrato social deve ser PDF ou imagem.'), 'contratoSocial.mimetypes' => __('O contrato social deve ser PDF ou imagem.'), 'cartaoCNPJ.mimes' => __('O cartão do CNPJ deve ser PDF ou imagem.'), 'cartaoCNPJ.mimetypes' => __('O cartão do CNPJ deve ser PDF ou imagem.'), 'registroJuntaComercial.mimes' => __('O registro da junta comercial deve ser PDF ou imagem.'), 'registroJuntaComercial.mimetypes' => __('O registro da junta comercial deve ser PDF ou imagem.'), 'alvaraDeFuncionamento.mimes' => __('O alvará deve ser PDF ou imagem.'), 'alvaraDeFuncionamento.mimetypes' => __('O alvará deve ser PDF ou imagem.'), 'inscricaoEstadual.mimes' => __('A inscrição estadual deve ser PDF ou imagem.'), 'inscricaoEstadual.mimetypes' => __('A inscrição estadual deve ser PDF ou imagem.'), 'inscricaoMunicipal.mimes' => __('A inscrição municipal deve ser PDF ou imagem.'), 'inscricaoMunicipal.mimetypes' => __('A inscrição municipal deve ser PDF ou imagem.'), // Status 'status.required' => __('O status da empresa é obrigatório.'), 'status.in' => __('O status deve ser ATIVADO ou DESATIVADO.'), ]; } /** * Regras adicionais após validação básica. */ public function withValidator($validator) { $validator->after(function ($validator) { $prepostoAtivo = $this->has('checkPrepostoEmpresa') && $this->checkPrepostoEmpresa; if ($prepostoAtivo) { $cpfResp = $this->onlyDigits($this->cpfResponsavelEmpresa); $cpfPrep = $this->onlyDigits($this->cpfPrepostoEmpresa); if ($cpfResp && $cpfPrep && $cpfResp === $cpfPrep) { $validator->errors()->add('cpfPrepostoEmpresa', __('O CPF do preposto deve ser diferente do CPF do responsável.')); } } }); } private function onlyDigits(?string $value): ?string { if ($value === null) { return null; } return preg_replace('/\D/', '', $value); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings