private static void AtualizarAlunosRelatorioTurma(RelatorioPortuguesTurmaDto relatorio, AlunosNaTurmaDTO aluno) { var relatorioAluno = relatorio.Alunos.FirstOrDefault(ra => ra.CodigoAluno.Equals(aluno.CodigoAluno.ToString())); relatorioAluno.CodigoAluno = aluno.CodigoAluno.ToString(); relatorioAluno.NomeAluno = aluno.NomeAlunoRelatorio; relatorioAluno.NumeroChamada = aluno.NumeroAlunoChamada; return; }
private static void PreencherAlunosSemRespostas(RelatorioPortuguesTurmaDto relatorio, IEnumerable <AlunosNaTurmaDTO> alunos) { alunos.ForEach(aluno => { if (relatorio.Alunos?.Any(r => r.CodigoAluno.Equals(aluno.CodigoAluno.ToString())) ?? false) { AtualizarAlunosRelatorioTurma(relatorio, aluno); return; } relatorio.Alunos.Add(new RelatorioPortuguesTurmaAluno { CodigoAluno = aluno.CodigoAluno.ToString(), NomeAluno = aluno.NomeAlunoRelatorio, NumeroChamada = aluno.NumeroAlunoChamada, }); }); }
public async Task <RelatorioPortuguesTurmaDto> ObterRelatorioPorTurmasPortugues(RelatorioPortuguesFiltroDto relatorioPortuguesFiltroDto) { IEnumerable <SondagemAluno> dados = null; PeriodoFixoAnual periodo = null; IEnumerable <Pergunta> perguntas = null; Grupo grupo = null; var relatorio = new RelatorioPortuguesTurmaDto(); using (var contexto = new SMEManagementContextData()) { grupo = await ObterGrupo(relatorioPortuguesFiltroDto, grupo, contexto); periodo = await ObterPeriodo(relatorioPortuguesFiltroDto, contexto); perguntas = await ObterPerguntas(relatorioPortuguesFiltroDto, perguntas, contexto); dados = await ObterDadosRelatorioPorTurma(relatorioPortuguesFiltroDto, dados, contexto); } var alunos = await ObterAlunosTurma(relatorioPortuguesFiltroDto, periodo); if (dados == null) { PreencherAlunosSemRespostas(relatorio, alunos); PreencherGraficoSemRespostas(perguntas, grupo, relatorio, alunos); } else { MapearRelatorioPorTurma(dados, perguntas, relatorio, alunos); MapearGraficoPorTurma(dados, perguntas, grupo, alunos, relatorio); } relatorio.Alunos = relatorio.Alunos.OrderBy(x => x.NomeAluno).ToList(); return(relatorio); }
private static void MapearGraficoPorTurma(IEnumerable <SondagemAluno> dados, IEnumerable <Pergunta> perguntas, Grupo grupo, IEnumerable <AlunosNaTurmaDTO> alunos, RelatorioPortuguesTurmaDto relatorio) { var perguntasRespondidas = dados.SelectMany(x => x.ListaRespostas); var grafico = new Grafico { NomeGrafico = grupo.Descricao }; perguntas.ForEach(pergunta => { var barra = new GraficoBarra { Label = pergunta.Descricao, Value = perguntasRespondidas.Count(x => x.PerguntaId.Equals(pergunta.Id)) }; grafico.Barras.Add(barra); }); grafico.Barras.Add(new GraficoBarra { Label = "Sem Preenchimento", Value = ObterTotalSemPreenchimento(dados, alunos) }); relatorio.Graficos.Add(grafico); }
private static void MapearRelatorioPorTurma(IEnumerable <SondagemAluno> dados, IEnumerable <Pergunta> perguntas, RelatorioPortuguesTurmaDto relatorio, IEnumerable <AlunosNaTurmaDTO> alunos) { relatorio.Perguntas = perguntas.Select(pergunta => (PerguntaSimplificadaDto)pergunta); relatorio.Alunos = dados.Select(dado => new RelatorioPortuguesTurmaAluno { CodigoAluno = dado.CodigoAluno, NomeAluno = dado.NomeAluno, Perguntas = dado.ListaRespostas.Select(x => x.PerguntaId) }).ToList(); PreencherAlunosSemRespostas(relatorio, alunos); }
private static void PreencherGraficoSemRespostas(IEnumerable <Pergunta> perguntas, Grupo grupo, RelatorioPortuguesTurmaDto relatorio, IEnumerable <AlunosNaTurmaDTO> alunos) { var grafico = new Grafico { NomeGrafico = grupo.Descricao, Barras = perguntas.Select(pergunta => new GraficoBarra { Label = pergunta.Descricao, Value = 0, }).ToList() }; grafico.Barras.Add(new GraficoBarra { Label = "Sem preenchimento", Value = alunos.Count() }); relatorio.Graficos.Add(grafico); }