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); }
private void GerarGraficos(RelatorioSondagemComponentesMatematicaNumerosAutoralConsolidadoDto relatorio) { relatorio.GraficosBarras = new List <GraficoBarrasVerticalDto>(); foreach (var pergunta in relatorio.PerguntasRespostas) { string chave = String.Empty; int chaveIndex = 0; var grafico = new GraficoBarrasVerticalDto(420, $"{pergunta.Pergunta}"); var legendas = new List <GraficoBarrasLegendaDto>(); 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(decimal.Parse(resposta.AlunosQuantidade.ToString()), 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); } }
private void GerarGraficoParaNumeros(RelatorioSondagemComponentesPorTurmaRelatorioDto relatorio) { foreach (var pergunta in relatorio.Cabecalho.Perguntas) { var legendas = new List <GraficoBarrasLegendaDto>(); var grafico = new GraficoBarrasVerticalDto(420, pergunta.Nome); var respostas = relatorio.Planilha.Linhas .SelectMany(l => l.OrdensRespostas.Where(or => or.PerguntaId == pergunta?.Id && !string.IsNullOrEmpty(or.Resposta))).GroupBy(b => b.Resposta).OrderByDescending(a => a.Key.StartsWith("Escreve")); int chaveIndex = 0; string chave = String.Empty; foreach (var resposta in respostas.Where(a => !string.IsNullOrEmpty(a.Key))) { chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = resposta.Key }); var qntRespostas = resposta.Count(); grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(qntRespostas, chave)); } var respostasNulasOuVazias = relatorio.Planilha.Linhas.SelectMany(l => l.OrdensRespostas.Where(or => or.PerguntaId == pergunta?.Id && string.IsNullOrEmpty(or.Resposta))).GroupBy(b => b.Resposta); if (respostasNulasOuVazias.Any()) { var qntSemRespostas = 0; foreach (var item in respostasNulasOuVazias) { qntSemRespostas += item.Count(); } if (qntSemRespostas > 0) { chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = "Sem preenchimento" }); grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(qntSemRespostas, chave)); } } var valorMaximoEixo = grafico.EixosX.Max(a => int.Parse(a.Valor.ToString())); grafico.EixoYConfiguracao = new GraficoBarrasVerticalEixoYDto(350, "Quantidade Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10); grafico.Legendas = legendas; relatorio.GraficosBarras.Add(grafico); } }
private void GerarGrafico(RelatorioSondagemComponentesMatematicaAditMulConsolidadoDto relatorio, int qtdAlunos) { var ordens = relatorio.PerguntasRespostas.Select(o => o.Ordem); foreach (var ordem in ordens) { foreach (var pergunta in relatorio.Perguntas) { var legendas = new List <GraficoBarrasLegendaDto>(); var grafico = new GraficoBarrasVerticalDto(420, $"{ordem} - {pergunta.Descricao}"); var respostas = relatorio.PerguntasRespostas .FirstOrDefault(o => o.Ordem == ordem).Respostas.Where(p => p.PerguntaId == pergunta.Id && !string.IsNullOrEmpty(p.Resposta)) .GroupBy(b => b.Resposta).OrderBy(a => a.Key); int chaveIndex = 0; string chave = String.Empty; int qtdSemPreenchimento = 0; foreach (var resposta in respostas.Where(a => !string.IsNullOrEmpty(a.Key))) { chave = lstChaves[chaveIndex++].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = resposta.Key }); var qntRespostas = resposta.Sum(r => r.AlunosQuantidade); grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto((decimal)qntRespostas, chave)); } var totalRespostas = (int)grafico.EixosX.Sum(e => e.Valor); qtdSemPreenchimento = qtdAlunos - totalRespostas; if (qtdSemPreenchimento > 0) { chave = lstChaves[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); } } }
private void GerarGrafico(RelatorioSondagemPortuguesCapacidadeLeituraPorTurmaDto relatorio, int qtdAlunos) { foreach (var ordem in relatorio.Cabecalho.Ordens) { foreach (var pergunta in relatorio.Cabecalho.Perguntas) { var legendas = new List <GraficoBarrasLegendaDto>(); var grafico = new GraficoBarrasVerticalDto(420, $"{ordem.Descricao} - {pergunta.Nome}"); var respostas = relatorio.Planilha.Linhas .SelectMany(l => l.OrdensRespostas.Where(or => or.OrdemId == ordem?.Id && or.PerguntaId == pergunta?.Id && !string.IsNullOrEmpty(or.Resposta))) .GroupBy(b => b.Resposta).OrderByDescending(a => a.Key.StartsWith("Adequada")); int chaveIndex = 0; string chave = String.Empty; int qtdSemPreenchimento = 0; foreach (var resposta in respostas.Where(a => !string.IsNullOrEmpty(a.Key))) { chave = lstChaves[chaveIndex++].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = resposta.Key }); var qntRespostas = resposta.Count(); grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(qntRespostas, chave)); } var totalRespostas = (int)grafico.EixosX.Sum(e => e.Valor); qtdSemPreenchimento = qtdAlunos - totalRespostas; if (qtdSemPreenchimento > 0) { chave = lstChaves[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); } } }
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); }
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); } } }
private void GerarGraficoAutoral(RelatorioSondagemComponentesPorTurmaRelatorioDto relatorio) { relatorio.GraficosBarras = new List <GraficoBarrasVerticalDto>(); foreach (var pergunta in relatorio.Cabecalho.Perguntas) { var respostasPorPergunta = new List <RepostaTotalDto>(); var grafico = new GraficoBarrasVerticalDto(420, pergunta.Nome); var legendas = new List <GraficoBarrasLegendaDto>(); int chaveIndex = 0; foreach (var linha in relatorio.Planilha.Linhas) { var resposta = linha.OrdensRespostas.FirstOrDefault(r => r.PerguntaId == pergunta.Id); if (resposta != null) { var perguntaResposta = respostasPorPergunta.FirstOrDefault(pr => pr.Resposta == resposta.Resposta); if (perguntaResposta != null) { perguntaResposta.Quantidade++; } else { respostasPorPergunta.Add(new RepostaTotalDto() { OrdenacaoResposta = string.IsNullOrEmpty(resposta.Resposta) ? 99 : resposta.OrdenacaoResposta, Quantidade = 1, Resposta = resposta.Resposta }); } } } foreach (var resposta in respostasPorPergunta.OrderBy(r => r.OrdenacaoResposta)) { var chave = Constantes.ListaChavesGraficos[chaveIndex++].ToString(); legendas.Add(new GraficoBarrasLegendaDto() { Chave = chave, Valor = string.IsNullOrEmpty(resposta.Resposta) ? "Sem Preenchimento" : resposta.Resposta }); grafico.EixosX.Add(new GraficoBarrasVerticalEixoXDto(resposta.Quantidade, 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); } }
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); }