public async Task <IEnumerable <SondagemAutoralDto> > Handle(ObterRespostasPorFiltrosQuery request, CancellationToken cancellationToken) { return(await sondagemAutoralRepository.ObterPorFiltros(request.DreCodigo, request.UeCodigo, request.GrupoId, request.PeriodoId, request.TurmaAno, request.AnoLetivo, request.ComponenteCurricular)); }
public async Task <RelatorioSondagemComponentesMatematicaNumerosAutoralConsolidadoDto> Handle(ObterSondagemMatNumAutoralConsolidadoQuery request, CancellationToken cancellationToken) { var relatorio = new RelatorioSondagemComponentesMatematicaNumerosAutoralConsolidadoDto(); var perguntas = new List <RelatorioSondagemComponentesMatematicaNumerosAutoralConsolidadoPerguntasRespostasDto>(); MontarCabecalho(relatorio, request.Dre, request.Ue, request.TurmaAno.ToString(), request.AnoLetivo, request.Semestre, request.Usuario.CodigoRf, request.Usuario.Nome); if (request.TurmaAno > 3) { var listaPerguntas = await perguntasAutoralRepository.ObterPerguntasPorComponenteAnoTurma(request.TurmaAno, ComponenteCurricularSondagemEnum.Matematica); var listaAlunos = await sondagemAutoralRepository.ObterPorFiltros(request.Dre?.Codigo, request.Ue?.Codigo, string.Empty, string.Empty, request.TurmaAno, request.AnoLetivo, ComponenteCurricularSondagemEnum.Matematica); if (listaPerguntas != null && listaPerguntas.Any()) { var perguntasAgrupado = listaPerguntas.GroupBy(g => g.PerguntaId); var respostasAgrupado = listaAlunos.GroupBy(g => g.PerguntaId); foreach (var pergunta in perguntasAgrupado) { var respostas = respostasAgrupado.FirstOrDefault(a => a.Key == pergunta.Key); AdicionarPergunta(pergunta, pergunta.Key, respostas, perguntas, request.QuantidadeTotalAlunos); } } } else { var listaAlunos = await mathPoolNumbersRepository.ObterPorFiltros(request.Dre?.Codigo, request.Ue?.Codigo, request.TurmaAno, request.AnoLetivo, request.Semestre); var familiaresAgrupados = listaAlunos.GroupBy(fu => fu.Familiares); var opacosAgrupados = listaAlunos.GroupBy(fu => fu.Opacos); var transparentesAgrupados = listaAlunos.GroupBy(fu => fu.Transparentes); var terminamZeroAgrupados = listaAlunos.GroupBy(fu => fu.TerminamZero); var algarismosAgrupados = listaAlunos.GroupBy(fu => fu.Algarismos); var processoAgrupados = listaAlunos.GroupBy(fu => fu.Processo); var zeroIntercaladosAgrupados = listaAlunos.GroupBy(fu => fu.ZeroIntercalados); AdicionarPergunta(familiaresAgrupados, grupo: "Familiares/Frequentes", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(opacosAgrupados, grupo: "Opacos", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(transparentesAgrupados, grupo: "Transparentes", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(terminamZeroAgrupados, grupo: "Terminam em zero", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(algarismosAgrupados, grupo: "Algarismos iguais", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(processoAgrupados, grupo: "Processo de generalização", perguntas, request.QuantidadeTotalAlunos); AdicionarPergunta(zeroIntercaladosAgrupados, grupo: "Zero intercalado", perguntas, request.QuantidadeTotalAlunos); } if (perguntas.Any()) { perguntas.ForEach(pergunta => pergunta.Respostas = pergunta.Respostas.OrderBy(r => r.Resposta).ToList()); relatorio.PerguntasRespostas = perguntas; } TrataAlunosQueNaoResponderam(relatorio, request.QuantidadeTotalAlunos); GerarGraficos(relatorio); return(relatorio); }