method()) { case 'POST': { return $this->getPostPutRules(); } case 'PUT': { return $this->getPostPutRules(); } default: { return []; } } } private function getPostPutRules() { $cidadaoRules = array_merge([ 'cidadao.id' => [ 'nullable', 'integer', 'unique:\App\Models\Cadastro\SujeitoAtencao\Usuario,cidadao_id,' . ($this->route('usuario') ?? 'NULL') . ',id,deleted_at,NULL', ], ], CidadaoRequest::getPostPutRules($this)); $rules = array_merge($cidadaoRules, [ 'documentos' => [ 'nullable', 'array', ], 'documentos.conselho_profissional' => [ 'nullable', 'array', ], 'documentos.conselho_profissional.registro_tipo_id' => [ 'nullable', 'integer', ], 'documentos.conselho_profissional.registro_tipo_outro' => [ 'nullable', 'string', 'max:50', ], 'documentos.conselho_profissional.registro_numero' => [ 'nullable', 'required_with:documentos.conselho_profissional.registro_tipo_id', 'string', 'max:25', Rule::unique('\App\Models\Cadastro\SujeitoAtencao\Usuario', 'registro_numero') ->where(function ($query) { return $query ->where( 'registro_tipo_id', $this->documentos['conselho_profissional']['registro_tipo_id'] ?? null ) ->whereNull('deleted_at'); }) ->ignore($this->route('usuario') ?? null) ], 'documentos.conselho_profissional.registro_estado_id' => [ 'bail', 'nullable', 'integer', ], 'email' => [ 'nullable', 'string', 'between:5,180', 'regex:/(.+)@(.+)\.(.+)/i', 'unique:\App\Models\Cadastro\SujeitoAtencao\Usuario,email,' . ($this->route('usuario') ?? 'NULL') . ',id,deleted_at,NULL', ], 'usuario' => [ 'nullable', 'string', 'between:3,100', 'unique:\App\Models\Cadastro\SujeitoAtencao\Usuario,usuario,' . ($this->route('usuario') ?? 'NULL') . ',id,deleted_at,NULL', ], 'lotacoes' => [ 'array' ], 'lotacoes.*.id' => [ 'nullable', 'integer' ], 'lotacoes.*.ocupacao_id' => [ 'required', 'integer' ], 'lotacoes.*.realiza_atendimento' => [ 'required', 'boolean' ], 'lotacoes.*.principal' => [ 'required', 'boolean' ], ]); return $rules; } public function messages() { return array_merge(CidadaoRequest::getMessages(), [ 'email.regex' => 'Informe um email válido.', 'email.unique' => 'O Email já está vinculado a outro usuário.', 'usuario.unique' => 'O Nome de usuário (Login) já está vinculado a outro usuário.', 'documentos.conselho_profissional.registro_numero.unique' => 'O número do Conselho profissional já está vinculado a outro usuário.', ]); } }