init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
<?php
namespace App\Rules\AtencaoBasica\Exportacao;
use App\Enums\AtencaoBasica\CadastroDomiciliar\ImovelTipo;
use App\Enums\AtencaoBasica\VisitaDomiciliar\MotivoVisita;
use App\Enums\Cadastro\SujeitoAtencao\Sexo;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\DB;
class MotivoVisitaIsValid implements Rule
{
public function passes($attribute, $value)
{
return self::isValid($value);
}
public static function isValid($value)
{
$motivoVisita = DB::table('atencao_basica_visita_domiciliar_motivo_visita')
->where('visita_domiciliar_id', $value->id)
->whereNotIn('motivo_visita_id', [
MotivoVisita::CADASTRAMENTO_ATUALIZACAO,
MotivoVisita::ACAO_EDUCATIVA,
MotivoVisita::IMOVEL_COM_FOCO,
MotivoVisita::ACAO_MECANICA,
MotivoVisita::TRATAMENTO_FOCAL,
MotivoVisita::CONVITE_PARA_ATIVIDADES_COLETIVAS_CAMPANHA_DE_SAUDE,
MotivoVisita::ORIENTACAO_PREVENCAO,
MotivoVisita::OUTROS,
])
->get();
if ($motivoVisita->isNotEmpty()) {
return self::getTipoImovelValido($value->imovel_tipo_codigo_esus) ? true : false;
}
$motivoVisita = DB::table('atencao_basica_visita_domiciliar_motivo_visita')
->where('visita_domiciliar_id', $value->id)
->whereIn('motivo_visita_id', [
MotivoVisita::GESTANTE,
MotivoVisita::PUERPERA,
])
->get();
if ($motivoVisita->isNotEmpty()) {
return $value->paciente_sexo_id === Sexo::FEMININO ? true : false;
}
return true;
}
public function message()
{
return 'Motivo inválido.';
}
private static function getTipoImovelValido($tipoImovelId) {
return $tipoImovelId == ImovelTipo::DOMICILIO
|| $tipoImovelId == ImovelTipo::ABRIGO
|| $tipoImovelId == ImovelTipo::INSTITUICAO_LONGA_PERMANENCIA_IDOSOS
|| $tipoImovelId == ImovelTipo::UNIDADE_PRISIONAL
|| $tipoImovelId == ImovelTipo::UNIDADE_MEDIDA_SOCIO_EDUCATIVA
|| $tipoImovelId == ImovelTipo::DELEGACIA
|| $tipoImovelId == ImovelTipo::OUTROS;
}
}