Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

135 lines
4.1 KiB
PHP

<?php
namespace App\Http\Requests\Cadastro\SujeitoAtencao;
use App\Http\Requests\FormRequest;
use Illuminate\Validation\Rule;
class UsuarioRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
switch ($this->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.',
]);
}
}