public async Task <string> Executar(FiltroRelatorioSincronoDto request) { var filtros = request.ObterObjetoFiltro <RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto>(); var respostas = !String.IsNullOrEmpty(filtros.GrupoId) ? await ObterRespostasGrupo(filtros) : await ObterRespostasProficiencia(filtros); RelatorioSondagemPortuguesConsolidadoRelatorioDto relatorio = new RelatorioSondagemPortuguesConsolidadoRelatorioDto() { Cabecalho = await ObterCabecalho(filtros), Respostas = respostas }; if (relatorio == null) { throw new NegocioException("Não foi possível localizar dados com os filtros informados."); } var tipoRelatorio = !string.IsNullOrEmpty(filtros.GrupoId) ? (filtros.GrupoId == GrupoSondagemEnum.ProducaoTexto.Name() ? "Produção de texto" : "Leitura em voz alta") : (filtros.ProficienciaId == ProficienciaSondagemEnum.Leitura ? "Leitura" : "Escrita"); GerarGrafico(relatorio, tipoRelatorio); return(await mediator.Send(new GerarRelatorioHtmlParaPdfCommand("RelatorioSondagemPortuguesConsolidado", relatorio, Guid.NewGuid(), envioPorRabbit : false))); }
private void GerarGrafico(RelatorioSondagemPortuguesConsolidadoRelatorioDto relatorio, string tipoRelatorio) { relatorio.GraficosBarras = new List <GraficoBarrasVerticalDto>(); var grafico = new GraficoBarrasVerticalDto(800, $"Língua Portuguesa - {tipoRelatorio}"); int chaveIndex = 0; var legendas = new List <GraficoBarrasLegendaDto>(); foreach (var resposta in relatorio.Respostas) { var chave = Constantes.ListaChavesGraficos[chaveIndex].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = resposta.Resposta }); chaveIndex++; 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); }