Beispiel #1
0
        private void GerarGrafico(RelatorioSondagemPortuguesConsolidadoLeituraRelatorioDto relatorio, int qtdAlunos)
        {
            relatorio.GraficosBarras = new List <GraficoBarrasVerticalDto>();
            foreach (var ordem in relatorio.Planilhas)
            {
                foreach (var pergunta in ordem.Perguntas)
                {
                    var legendas = new List <GraficoBarrasLegendaDto>();
                    var grafico  = new GraficoBarrasVerticalDto(420, $"{ordem.Ordem} - {pergunta.Pergunta}");

                    int    chaveIndex          = 0;
                    string chave               = String.Empty;
                    int    qtdSemPreenchimento = 0;

                    foreach (var resposta in pergunta.Respostas)
                    {
                        chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString();

                        legendas.Add(new GraficoBarrasLegendaDto()
                        {
                            Chave = chave,
                            Valor = resposta.Resposta
                        });

                        grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(resposta.Quantidade, chave));
                    }

                    var totalRespostas = (int)grafico.EixosX.Sum(e => e.Valor);
                    qtdSemPreenchimento = qtdAlunos - totalRespostas;

                    if (qtdSemPreenchimento > 0)
                    {
                        chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString();

                        legendas.Add(new GraficoBarrasLegendaDto()
                        {
                            Chave = chave,
                            Valor = "Sem preenchimento"
                        });

                        grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(qtdSemPreenchimento, chave));
                    }

                    var valorMaximoEixo = grafico.EixosX.Count() > 0 ? grafico.EixosX.Max(a => int.Parse(a.Valor.ToString())) : 0;

                    grafico.EixoYConfiguracao = new GraficoBarrasVerticalEixoYDto(350, "Quantidade Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
                    grafico.Legendas          = legendas;

                    relatorio.GraficosBarras.Add(grafico);
                }
            }
        }
Beispiel #2
0
        public async Task <string> Executar(FiltroRelatorioSincronoDto request)
        {
            var filtros = request.ObterObjetoFiltro <RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto>();

            if (filtros.GrupoId != GrupoSondagemEnum.CapacidadeLeitura.Name())
            {
                throw new NegocioException($"{ filtros.GrupoId } fora do esperado.");
            }

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

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

            int alunosPorAno = await mediator.Send(new ObterTotalAlunosPorUeAnoSondagemQuery(
                                                       filtros.Ano.ToString(),
                                                       filtros.UeCodigo,
                                                       filtros.AnoLetivo,
                                                       dataReferencia,
                                                       Convert.ToInt64(filtros.DreCodigo)
                                                       ));

            RelatorioSondagemPortuguesConsolidadoLeituraRelatorioDto relatorio = new RelatorioSondagemPortuguesConsolidadoLeituraRelatorioDto()
            {
                Cabecalho = await ObterCabecalho(filtros),
                Planilhas = await ObterPlanilhas(filtros, alunosPorAno)
            };

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

            GerarGrafico(relatorio, 0);

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