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); } } }
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))); }