Skip to content

Commit

Permalink
Merge pull request #14786 from prefeiturasp/story/123291
Browse files Browse the repository at this point in the history
123291 - Ajustes mudança de situação plano aee/geração de pendencias …
  • Loading branch information
Jailsvs authored Jul 31, 2024
2 parents 325a2c9 + 7966c40 commit 3188183
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public AtribuirResponsavelPlanoAEECommandHandler(IMediator mediator, IRepositori

public async Task<bool> Handle(AtribuirResponsavelPlanoAEECommand request, CancellationToken cancellationToken)
{
request.PlanoAEE.Situacao = Dominio.Enumerados.SituacaoPlanoAEE.ParecerPAAI;
request.PlanoAEE.Situacao = request.PlanoAEE.ObterSituacaoAoAtribuirResponsavelPAAI();
request.PlanoAEE.ResponsavelPaaiId = await mediator.Send(new ObterUsuarioIdPorRfOuCriaQuery(request.ResponsavelRF));

return await SalvarGerarPendenciaPaai(request, request.PlanoAEE);
Expand Down Expand Up @@ -54,6 +54,9 @@ private async Task<bool> SalvarGerarPendenciaPaai(AtribuirResponsavelPlanoAEECom

private async Task VerificaGeracaoPendenciaPAAI(PlanoAEE planoAEE, Turma turma)
{
if (planoAEE.EhSituacaoExpiradoValidado())
return;

await ExcluirPendenciaCEFAI(planoAEE);

if (!await ParametroGeracaoPendenciaAtivo() || await AtribuidoAoMesmoUsuario(planoAEE))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,16 @@ public async Task<bool> Handle(RemoverResponsavelPlanoAEECommand request, Cancel
if (turma.EhNulo())
throw new NegocioException(MensagemNegocioTurma.TURMA_NAO_ENCONTRADA);

planoAee.Situacao = Dominio.Enumerados.SituacaoPlanoAEE.AtribuicaoPAAI;
planoAee.Situacao = planoAee.ObterSituacaoAoRemoverResponsavelPAAI();

planoAee.ResponsavelPaaiId = null;

var pendenciaPlanoAEE = await mediator.Send(new ObterUltimaPendenciaPlanoAEEQuery(planoAee.Id));


unitOfWork.IniciarTransacao();

try
{
await repositorioPlanoAee.SalvarAsync(planoAee);

if (pendenciaPlanoAEE.NaoEhNulo())
await mediator.Send(new ExcluirPendenciaPlanoAEECommand(planoAee.Id));

if (await ParametroGeracaoPendenciaAtivo())
await mediator.Send(new GerarPendenciaValidacaoPlanoAEECommand(planoAee.Id, PerfilUsuario.CEFAI));

await VerificaGeracaoPendenciaCEFAI(planoAee);
unitOfWork.PersistirTransacao();
}
catch
Expand All @@ -62,7 +54,21 @@ public async Task<bool> Handle(RemoverResponsavelPlanoAEECommand request, Cancel

return planoAee.Id != 0;
}


private async Task VerificaGeracaoPendenciaCEFAI(PlanoAEE planoAEE)
{
if (planoAEE.EhSituacaoExpiradoValidado())
return;

var pendenciaPlanoAEE = await mediator.Send(new ObterUltimaPendenciaPlanoAEEQuery(planoAEE.Id));
if (pendenciaPlanoAEE.NaoEhNulo())
await mediator.Send(new ExcluirPendenciaPlanoAEECommand(planoAEE.Id));

if (await ParametroGeracaoPendenciaAtivo())
await mediator.Send(new GerarPendenciaValidacaoPlanoAEECommand(planoAEE.Id, PerfilUsuario.CEFAI));
}


private async Task<bool> ParametroGeracaoPendenciaAtivo()
{
var parametro = await mediator.Send(new ObterParametroSistemaPorTipoEAnoQuery(TipoParametroSistema.GerarPendenciasPlanoAEE, DateTime.Today.Year));
Expand Down
14 changes: 14 additions & 0 deletions src/SME.SGP.Dominio/Entidades/PlanoAEE.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,19 @@ public bool SituacaoPodeDevolverPlanoAEE()
=> Situacao == SituacaoPlanoAEE.ParecerCP
|| Situacao == SituacaoPlanoAEE.ParecerPAAI
|| Situacao == SituacaoPlanoAEE.AtribuicaoPAAI;

public bool EhSituacaoExpiradoValidado()
=> Situacao.EhUmDosValores(SituacaoPlanoAEE.Expirado,
SituacaoPlanoAEE.Validado);

public SituacaoPlanoAEE ObterSituacaoAoRemoverResponsavelPAAI()
=> EhSituacaoExpiradoValidado()
? Situacao
: SituacaoPlanoAEE.AtribuicaoPAAI;

public SituacaoPlanoAEE ObterSituacaoAoAtribuirResponsavelPAAI()
=> EhSituacaoExpiradoValidado()
? Situacao
: SituacaoPlanoAEE.ParecerPAAI;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,43 @@ await CriarDadosBasicos(new FiltroPlanoAee()
pendencias.Count(x => x.Situacao == SituacaoPendencia.Pendente && x.Excluido).ShouldBeEquivalentTo(1);

}


[Fact(DisplayName = "Plano AEE - Com o Coordenador do CEFAI realizar atribuição do PAAI quando expirado/validado.")]
public async Task Realizar_atribuicao_paai_com_usuario_cefai_expirado_validado()
{
await CriarDadosBasicos(new FiltroPlanoAee()
{
Modalidade = Modalidade.Fundamental,
Perfil = ObterPerfilCoordenadorCefai(),
TipoCalendario = ModalidadeTipoCalendario.FundamentalMedio,
});

var idPlano1 = await CriarPlanoAeePorSituacao(SituacaoPlanoAEE.Expirado);
var idPlano2 = await CriarPlanoAeePorSituacao(SituacaoPlanoAEE.Validado);
const int qdadePendenciasOriginadasInclusao = 2;

var servicoAtribuicaoResponsavel = ObterServicoAtribuirResponsavelPlanoAEEUseCase();
var retornoAtribuicaoUsuarioPaai = await servicoAtribuicaoResponsavel.Executar(idPlano1, USUARIO_LOGIN_PAAI);
retornoAtribuicaoUsuarioPaai.ShouldBeTrue();
retornoAtribuicaoUsuarioPaai = await servicoAtribuicaoResponsavel.Executar(idPlano2, USUARIO_LOGIN_PAAI);
retornoAtribuicaoUsuarioPaai.ShouldBeTrue();

var retornoObterPlanoAlterado = ObterTodos<Dominio.PlanoAEE>();
var usuarios = ObterTodos<Usuario>();
retornoObterPlanoAlterado.ShouldNotBeNull();

var paaiAtribuido = usuarios.FirstOrDefault(x => x.CodigoRf == USUARIO_LOGIN_PAAI);
retornoObterPlanoAlterado.FirstOrDefault()!.ResponsavelPaaiId.ShouldBeEquivalentTo(paaiAtribuido!.Id);
retornoObterPlanoAlterado.FirstOrDefault()!.Situacao.Equals(SituacaoPlanoAEE.Expirado).ShouldBeTrue();
retornoObterPlanoAlterado.LastOrDefault()!.ResponsavelPaaiId.ShouldBeEquivalentTo(paaiAtribuido!.Id);
retornoObterPlanoAlterado.LastOrDefault()!.Situacao.Equals(SituacaoPlanoAEE.Validado).ShouldBeTrue();

var pendencias = ObterTodos<Pendencia>();
pendencias.ShouldNotBeNull();
pendencias.Count().ShouldBeEquivalentTo(qdadePendenciasOriginadasInclusao);

}

[Fact(DisplayName = "Plano AEE - Alterar o PAAI atribuído - A pendência deverá ser transferida para o novo PAAI")]
public async Task Alterar_o_paai_atribuído()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,40 @@ await CriarDadosBasicos(new FiltroPlanoAee()
pendencias.Count(x => x.Situacao == SituacaoPendencia.Pendente && !x.Excluido).ShouldBeEquivalentTo(1);
pendencias.Count(x => x.Situacao == SituacaoPendencia.Pendente && x.Excluido).ShouldBeEquivalentTo(1);
}


[Fact(DisplayName = "Plano AEE - Com o Coordenador do CEFAI remover atribuição do PAAI quando expirado/validado.")]
public async Task Remover_atribuicao_paai_com_usuario_cefai_situacao_expirado_validado()
{
await CriarDadosBasicos(new FiltroPlanoAee()
{
Modalidade = Modalidade.Fundamental,
Perfil = ObterPerfilCoordenadorCefai(),
TipoCalendario = ModalidadeTipoCalendario.FundamentalMedio,
});

var idPlano1 = await CriarPlanoAeePorSituacao(SituacaoPlanoAEE.Expirado);
var idPlano2 = await CriarPlanoAeePorSituacao(SituacaoPlanoAEE.Validado);
const int qdadePendenciasOriginadasInclusao = 2;


var servicoRemocaoAtribuicaoResponsavel = ObterServicoRemocaoAtribuirResponsavelPlanoAEEUseCase();
var retornoAtribuicaoUsuarioPaai = await servicoRemocaoAtribuicaoResponsavel.Executar(idPlano1);
retornoAtribuicaoUsuarioPaai.ShouldBeTrue();

retornoAtribuicaoUsuarioPaai = await servicoRemocaoAtribuicaoResponsavel.Executar(idPlano2);
retornoAtribuicaoUsuarioPaai.ShouldBeTrue();

var retornoObterPlanoAlterado = ObterTodos<Dominio.PlanoAEE>();
retornoObterPlanoAlterado.ShouldNotBeNull();
(retornoObterPlanoAlterado.FirstOrDefault().Situacao == SituacaoPlanoAEE.Expirado).ShouldBeTrue();
retornoObterPlanoAlterado.FirstOrDefault().ResponsavelPaaiId.ShouldBeNull();
(retornoObterPlanoAlterado.LastOrDefault().Situacao == SituacaoPlanoAEE.Validado).ShouldBeTrue();
retornoObterPlanoAlterado.LastOrDefault().ResponsavelPaaiId.ShouldBeNull();

var pendencias = ObterTodos<Pendencia>();
pendencias.Count().ShouldBeEquivalentTo(qdadePendenciasOriginadasInclusao);
}

private async Task<long> CriarPlanoAeePorSituacao(SituacaoPlanoAEE situacaoPlanoAee)
{
var salvarPlanoAeeUseCase = ObterServicoSalvarPlanoAEEUseCase();
Expand Down

0 comments on commit 3188183

Please sign in to comment.