Пример #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);
        }
        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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
                }
            }
        }
Пример #6
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);
        }
Пример #7
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);
                }
            }
        }
Пример #8
0
        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);
        }