This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user