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); }