Example #1
0
        private void GerarGraficoLeituraEscrita(RelatorioSondagemPortuguesPorTurmaRelatorioDto relatorio, string tipoRelatorio)
        {
            var grafico               = new GraficoBarrasVerticalDto(800, $"Língua Portuguesa - {tipoRelatorio}");
            int chaveIndex            = 0;
            var legendas              = new List <GraficoBarrasLegendaDto>();
            var respostasAgrupadas    = new List <RepostaTotalDto>();
            var totalSemPreenchimento = 0;

            foreach (var aluno in relatorio.Planilha.Linhas)
            {
                var resposta = aluno.Respostas[0].Resposta;
                if (!string.IsNullOrEmpty(resposta))
                {
                    var respostaAgrupada = respostasAgrupadas.FirstOrDefault(r => r.Resposta == resposta);
                    if (respostaAgrupada != null)
                    {
                        respostaAgrupada.Quantidade++;
                    }
                    else
                    {
                        respostasAgrupadas.Add(new RepostaTotalDto()
                        {
                            Resposta   = resposta,
                            Quantidade = 1,
                        });
                    }
                }
                else
                {
                    totalSemPreenchimento++;
                }
            }

            respostasAgrupadas = respostasAgrupadas.OrderBy(r => r.Resposta).ToList();

            if (totalSemPreenchimento > 0)
            {
                respostasAgrupadas.Add(new RepostaTotalDto()
                {
                    Resposta   = "Sem Preenchimento",
                    Quantidade = totalSemPreenchimento
                });
            }

            foreach (var resposta in respostasAgrupadas)
            {
                var chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString();
                legendas.Add(new GraficoBarrasLegendaDto()
                {
                    Chave = chave,
                    Valor = resposta.Resposta
                });
                grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(resposta.Quantidade, chave));
            }
            var valorMaximoEixo = grafico.EixosX.Max(a => int.Parse(a.Valor.ToString()));

            grafico.Legendas          = legendas;
            grafico.EixoYConfiguracao = new GraficoBarrasVerticalEixoYDto(350, "Quantidade Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
            relatorio.GraficosBarras.Add(grafico);
        }
Example #2
0
        private void GerarGraficoLeituraEmVozAltaProducaoTexto(RelatorioSondagemPortuguesPorTurmaRelatorioDto relatorio, string tipoRelatorio)
        {
            var grafico    = new GraficoBarrasVerticalDto(800, $"Língua Portuguesa - {tipoRelatorio}");
            int chaveIndex = 0;
            var legendas   = new List <GraficoBarrasLegendaDto>();

            foreach (var pergunta in relatorio.Cabecalho.Perguntas)
            {
                var chave = Constantes.ListaChavesGraficos[chaveIndex].ToString();
                legendas.Add(new GraficoBarrasLegendaDto()
                {
                    Chave = chave,
                    Valor = pergunta.Nome
                });
                grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(0, chave));
                chaveIndex++;
            }

            var chaveLegendaSemPreenchimento = Constantes.ListaChavesGraficos[chaveIndex].ToString();

            legendas.Add(new GraficoBarrasLegendaDto()
            {
                Chave = chaveLegendaSemPreenchimento,
                Valor = "Sem preenchimento"
            });
            grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(0, chaveLegendaSemPreenchimento));

            foreach (var aluno in relatorio.Planilha.Linhas)
            {
                var totalRespostas = 0;
                foreach (var pergunta in relatorio.Cabecalho.Perguntas)
                {
                    var respostaAluno = aluno.Respostas.FirstOrDefault(r => r.PerguntaId == pergunta.Id && !string.IsNullOrEmpty(r.Resposta));
                    if (respostaAluno != null)
                    {
                        var legenda    = legendas.FirstOrDefault(l => l.Valor == pergunta.Nome);
                        var valorEixoX = grafico.EixosX.FirstOrDefault(e => e.Titulo == legenda.Chave);
                        valorEixoX.Valor++;
                        totalRespostas++;
                    }
                }
                if (totalRespostas == 0)
                {
                    var valorEixoX = grafico.EixosX.FirstOrDefault(e => e.Titulo == chaveLegendaSemPreenchimento);
                    valorEixoX.Valor++;
                }
            }
            var valorMaximoEixo = grafico.EixosX.Max(a => int.Parse(a.Valor.ToString()));

            grafico.Legendas          = legendas;
            grafico.EixoYConfiguracao = new GraficoBarrasVerticalEixoYDto(320, "Quantidade Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
            relatorio.GraficosBarras.Add(grafico);
        }
Example #3
0
        public async Task <string> Executar(FiltroRelatorioSincronoDto request)
        {
            var filtros = request.ObterObjetoFiltro <RelatorioSondagemPortuguesPorTurmaFiltroDto>();

            if (filtros.ProficienciaId == ProficienciaSondagemEnum.Autoral && filtros.GrupoId == GrupoSondagemEnum.CapacidadeLeitura.Name())
            {
                throw new NegocioException("Grupo fora do esperado.");
            }

            var semestre = (filtros.Bimestre <= 2) ? 1 : 2;

            var dataDoPeriodo = await mediator.Send(new ObterDataPeriodoFimSondagemPorSemestreAnoLetivoQuery(semestre, filtros.AnoLetivo));

            var alunosDaTurma = await mediator.Send(new ObterAlunosPorTurmaDataSituacaoMatriculaQuery(Int32.Parse(filtros.TurmaCodigo), dataDoPeriodo));

            if (alunosDaTurma == null || !alunosDaTurma.Any())
            {
                throw new NegocioException("Não foi possível localizar os alunos da turma.");
            }

            var relatorioPerguntas = await ObterPerguntas(filtros);

            RelatorioSondagemPortuguesPorTurmaRelatorioDto relatorio = new RelatorioSondagemPortuguesPorTurmaRelatorioDto()
            {
                Cabecalho = await ObterCabecalho(filtros, relatorioPerguntas, dataDoPeriodo),
                Planilha  = new RelatorioSondagemPortuguesPorTurmaPlanilhaDto()
                {
                    Linhas = await ObterLinhas(filtros, alunosDaTurma)
                }
            };

            if (relatorio == null)
            {
                throw new NegocioException("Não foi possível localizar dados com os filtros informados.");
            }

            relatorio.GraficosBarras = new List <GraficoBarrasVerticalDto>();

            if (filtros.ProficienciaId == ProficienciaSondagemEnum.Leitura || filtros.ProficienciaId == ProficienciaSondagemEnum.Escrita)
            {
                var tipoRelatorio = filtros.ProficienciaId == ProficienciaSondagemEnum.Leitura ? "Leitura" : "Escrita";
                GerarGraficoLeituraEscrita(relatorio, tipoRelatorio);
            }
            if (filtros.ProficienciaId == ProficienciaSondagemEnum.Autoral && (filtros.GrupoId == GrupoSondagemEnum.LeituraVozAlta.Name() ||
                                                                               filtros.GrupoId == GrupoSondagemEnum.ProducaoTexto.Name()))
            {
                var tipoRelatorio = filtros.GrupoId == GrupoSondagemEnum.LeituraVozAlta.Name() ? "Leitura em voz alta" : "Produção de texto";
                GerarGraficoLeituraEmVozAltaProducaoTexto(relatorio, tipoRelatorio);
            }

            return(await mediator.Send(new GerarRelatorioHtmlParaPdfCommand("RelatorioSondagemPortuguesPorTurma", relatorio, Guid.NewGuid(), envioPorRabbit : false)));
        }