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 List <ResumoPAPGraficoDto> ObterGraficos(ResumoPAPTotalEstudantesDto totalEstudantes, ResumoPAPTotalEstudantePorFrequenciaDto totalFrequencia, IEnumerable <ResumoPAPTotalResultadoDto> encaminhamento, IEnumerable <ResumoPAPTotalResultadoDto> resultado)
        {
            var graficos = new List <ResumoPAPGraficoDto>();

            if (totalEstudantes != null)
            {
                AdicionarTotalEstudantes(totalEstudantes, graficos);
            }

            if (totalFrequencia != null)
            {
                AdicionarTotalFrequencia(totalFrequencia, graficos);
            }

            if (encaminhamento != null && encaminhamento.Any())
            {
                AdicionarEncaminhamento(encaminhamento, graficos);
            }

            if (resultado != null && resultado.Any())
            {
                AdicionarResultado(resultado, graficos);
            }

            return(graficos);
        }