private void AdicionarTotalEstudantes(ResumoPAPTotalEstudantesDto totalEstudantes, List <ResumoPAPGraficoDto> graficos)
        {
            var grafico    = new ResumoPAPGraficoDto();
            var legendas   = new List <GraficoBarrasLegendaDto>();
            int chaveIndex = 0;

            grafico.Titulo = "Total Estudantes";

            var graficoAno = new ResumoPAPGraficoAnoDto(420, "Total Estudante");

            foreach (var ano in totalEstudantes.Anos)
            {
                string chave = lstChaves[chaveIndex++].ToString();

                legendas.Add(new GraficoBarrasLegendaDto()
                {
                    Chave = chave,
                    Valor = $"{ano.AnoDescricao}"
                });

                graficoAno.EixosX.Add(new GraficoBarrasPAPVerticalEixoXDto(ano.Quantidade, (decimal)Math.Round(ano.Porcentagem, 0), chave));
            }

            var valorMaximoEixo = graficoAno.EixosX.Max(a => int.Parse(a.Valor.ToString()));

            graficoAno.EixoYConfiguracao = new GraficoBarrasPAPVerticalEixoYDto(350, "Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
            graficoAno.Legendas          = legendas;

            grafico.Graficos.Add(graficoAno);

            graficos.Add(grafico);
        }
        private void AdicionarTotalFrequencia(ResumoPAPTotalEstudantePorFrequenciaDto totalFrequencia, List <ResumoPAPGraficoDto> graficos)
        {
            var grafico = new ResumoPAPGraficoDto();

            grafico.Titulo = "Frequência";

            var anos = totalFrequencia.Frequencia.SelectMany(f => f.Linhas)
                       .SelectMany(f => f.Anos).Select(f => new { f.CodigoAno, f.DescricaoAno })
                       .DistinctBy(f => f.CodigoAno);

            foreach (var ano in anos)
            {
                var graficoAno = new ResumoPAPGraficoAnoDto(420, $"{ano.DescricaoAno} ANO");
                var legendas   = new List <GraficoBarrasLegendaDto>();
                int chaveIndex = 0;

                foreach (var frequencia in totalFrequencia.Frequencia)
                {
                    if (frequencia.FrequenciaDescricao.ToLower() != "total")
                    {
                        string chave = lstChaves[chaveIndex++].ToString();

                        legendas.Add(new GraficoBarrasLegendaDto()
                        {
                            Chave = chave,
                            Valor = $"{frequencia.FrequenciaDescricao}"
                        });

                        var itemFrequencia = frequencia.Linhas.FirstOrDefault().Anos.FirstOrDefault(d => d.CodigoAno == ano.CodigoAno);

                        if (itemFrequencia == null)
                        {
                            itemFrequencia = new ResumoPAPTotalFrequenciaAnoDto()
                            {
                                Quantidade = 0, Porcentagem = 0
                            }
                        }
                        ;

                        graficoAno.EixosX.Add(new GraficoBarrasPAPVerticalEixoXDto(itemFrequencia.Quantidade, (decimal)Math.Round(itemFrequencia.Porcentagem, 0), chave));
                    }
                }

                var valorMaximoEixo = graficoAno.EixosX.Max(a => int.Parse(a.Valor.ToString()));

                graficoAno.EixoYConfiguracao = new GraficoBarrasPAPVerticalEixoYDto(350, "Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
                graficoAno.Legendas          = legendas;

                grafico.Graficos.Add(graficoAno);
            }

            graficos.Add(grafico);
        }
        private void AdicionarResultado(IEnumerable <ResumoPAPTotalResultadoDto> resultados, List <ResumoPAPGraficoDto> graficos)
        {
            foreach (var resultado in resultados)
            {
                foreach (var objetivo in resultado.Objetivos)
                {
                    var grafico = new ResumoPAPGraficoDto();

                    grafico.Titulo = $"{resultado.EixoDescricao} - {objetivo.ObjetivoDescricao}";

                    foreach (var ano in objetivo.Anos)
                    {
                        var graficoAno = new ResumoPAPGraficoAnoDto(420, $"{ano.AnoDescricao} ANO");
                        var legendas   = new List <GraficoBarrasLegendaDto>();
                        int chaveIndex = 0;

                        foreach (var resposta in ano.Respostas.Where(r => r.Quantidade > 0)?.OrderBy(o => o.Ordem))
                        {
                            string chave = lstChaves[chaveIndex++].ToString();

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

                            graficoAno.EixosX.Add(new GraficoBarrasPAPVerticalEixoXDto(resposta.Quantidade, (decimal)Math.Round(resposta.Porcentagem, 0), chave));
                        }

                        if (graficoAno.EixosX.Any())
                        {
                            var valorMaximoEixo = graficoAno.EixosX.Max(a => int.Parse(a.Valor.ToString()));

                            graficoAno.EixoYConfiguracao = new GraficoBarrasPAPVerticalEixoYDto(350, "Alunos", valorMaximoEixo.ArredondaParaProximaDezena(), 10);
                            graficoAno.Legendas          = legendas;

                            grafico.Graficos.Add(graficoAno);
                        }
                    }

                    graficos.Add(grafico);
                }
            }
        }