Beispiel #1
0
 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);
        }