From 6975cb6ad00b1ca0e09af4e1e5111585ae847b38 Mon Sep 17 00:00:00 2001 From: "fernando.groeler" Date: Tue, 19 Dec 2023 08:00:22 -0400 Subject: [PATCH] Implementado para obter a quantidade de respostas do aluno para prova TAI. --- .../AtualizarProvaAlunoCommandHandler.cs | 15 +++++++-------- .../ObterProvaAlunoPorProvaIdsRaQueryHandler.cs | 5 +++-- .../UseCase/ObterProvasAreaEstudanteUseCase.cs | 11 +++++++++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/SME.SERAp.Prova.Aplicacao/Commands/AtualizarProvaAluno/AtualizarProvaAlunoCommandHandler.cs b/src/SME.SERAp.Prova.Aplicacao/Commands/AtualizarProvaAluno/AtualizarProvaAlunoCommandHandler.cs index 48e05b3e..24037a10 100644 --- a/src/SME.SERAp.Prova.Aplicacao/Commands/AtualizarProvaAluno/AtualizarProvaAlunoCommandHandler.cs +++ b/src/SME.SERAp.Prova.Aplicacao/Commands/AtualizarProvaAluno/AtualizarProvaAlunoCommandHandler.cs @@ -15,21 +15,20 @@ public class AtualizarProvaAlunoCommandHandler : IRequestHandler Handle(AtualizarProvaAlunoCommand request, CancellationToken cancellationToken) { - if(request.ProvaAluno.Status == ProvaStatus.Finalizado) - { + if (request.ProvaAluno.Status == ProvaStatus.Finalizado) request.ProvaAluno.FinalizadoEmServidor = DateTime.Now; - } - string chaveProvaAluno = string.Format(CacheChave.AlunoProva, request.ProvaAluno.ProvaId, request.ProvaAluno.AlunoRA); - await mediator.Send(new PublicarFilaSerapEstudantesCommand(RotasRabbit.IncluirProvaAluno, request.ProvaAluno)); + var chaveProvaAluno = string.Format(CacheChave.AlunoProva, request.ProvaAluno.ProvaId, request.ProvaAluno.AlunoRA); + + await mediator.Send(new PublicarFilaSerapEstudantesCommand(RotasRabbit.IncluirProvaAluno, request.ProvaAluno), cancellationToken); await repositorioCache.SalvarRedisAsync(chaveProvaAluno, request.ProvaAluno); + return true; } } diff --git a/src/SME.SERAp.Prova.Aplicacao/Queries/ObterProvaAlunoPorProvaIdsRa/ObterProvaAlunoPorProvaIdsRaQueryHandler.cs b/src/SME.SERAp.Prova.Aplicacao/Queries/ObterProvaAlunoPorProvaIdsRa/ObterProvaAlunoPorProvaIdsRaQueryHandler.cs index d3ea144f..a1eac962 100644 --- a/src/SME.SERAp.Prova.Aplicacao/Queries/ObterProvaAlunoPorProvaIdsRa/ObterProvaAlunoPorProvaIdsRaQueryHandler.cs +++ b/src/SME.SERAp.Prova.Aplicacao/Queries/ObterProvaAlunoPorProvaIdsRa/ObterProvaAlunoPorProvaIdsRaQueryHandler.cs @@ -21,12 +21,13 @@ public ObterProvaAlunoPorProvaIdsRaQueryHandler(IRepositorioCache repositorioCac public async Task> Handle(ObterProvaAlunoPorProvaIdsRaQuery request, CancellationToken cancellationToken) { var lista = new List(); + foreach (var provaId in request.ProvaIds) { - string chaveProvaAluno = string.Format(CacheChave.AlunoProva, provaId, request.AlunoRa); + var chaveProvaAluno = string.Format(CacheChave.AlunoProva, provaId, request.AlunoRa); var provaAluno = await repositorioCache.ObterRedisAsync(chaveProvaAluno, () => repositorioProvaAluno.ObterPorProvaIdRaAsync(provaId , request.AlunoRa)); - if(provaAluno != null) + if (provaAluno != null) lista.Add(provaAluno); } diff --git a/src/SME.SERAp.Prova.Aplicacao/UseCase/ObterProvasAreaEstudanteUseCase.cs b/src/SME.SERAp.Prova.Aplicacao/UseCase/ObterProvasAreaEstudanteUseCase.cs index 6ec6d55e..39ddcdb9 100644 --- a/src/SME.SERAp.Prova.Aplicacao/UseCase/ObterProvasAreaEstudanteUseCase.cs +++ b/src/SME.SERAp.Prova.Aplicacao/UseCase/ObterProvasAreaEstudanteUseCase.cs @@ -114,11 +114,18 @@ private async Task> ObterProvasRetorno(int te } var provaAluno = provasDoAluno.FirstOrDefault(a => a.ProvaId == prova.Id); + var totalItens = prova.TotalItens; + + if (prova.FormatoTai) + { + var alunoRespostas = await mediator.Send(new ObterAlunoRespostasPorProvaIdRaQuery(prova.Id, long.Parse(alunoRa))); + totalItens = alunoRespostas.Count(); + } if (provaAluno is { Status: ProvaStatus.Finalizado or ProvaStatus.FinalizadoAutomaticamente }) { provasParaRetornar.Add(new ObterProvasRetornoDto(prova.Descricao, - prova.TotalItens, + totalItens, (int)provaAluno.Status, prova.ObterDataInicioDownloadMais3Horas(), prova.ObterDataInicioMais3Horas(), @@ -139,7 +146,7 @@ private async Task> ObterProvasRetorno(int te status = provaAluno.Status; provasParaRetornar.Add(new ObterProvasRetornoDto(prova.Descricao, - prova.TotalItens, + totalItens, (int)status, prova.ObterDataInicioDownloadMais3Horas(), prova.ObterDataInicioMais3Horas(),