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 async Task <int> ObterQuantidadeAlunosAtivos(RelatorioPortuguesFiltroDto filtroRelatorioSondagem, PeriodoFixoAnual periodo) { var filtro = new FiltroTotalAlunosAtivos { AnoLetivo = filtroRelatorioSondagem.AnoLetivo, AnoTurma = filtroRelatorioSondagem.AnoEscolar, DreId = filtroRelatorioSondagem.CodigoDre, UeId = filtroRelatorioSondagem.CodigoUe, DataInicio = periodo.DataInicio, DataFim = periodo.DataFim, }; return(await alunoAPI.ObterTotalAlunosAtivosPorPeriodo(filtro)); }
public async Task <RelatorioAutoralLeituraProducaoDto> ObterRelatorioConsolidadoPortugues(RelatorioPortuguesFiltroDto filtroRelatorioSondagem) { var dados = new List <SondagemAlunoRespostas>(); PeriodoFixoAnual periodo = null; Grupo grupo = null; IEnumerable <Pergunta> perguntas = null; var relatorio = new RelatorioAutoralLeituraProducaoDto(); using (var contexto = new SMEManagementContextData()) { dados = await contexto.SondagemAlunoRespostas.Include(x => x.SondagemAluno).Include(x => x.Pergunta).Include(x => x.Resposta) .FromSql(ObterConsultaCompleta(filtroRelatorioSondagem), ObterParametros(filtroRelatorioSondagem)).ToListAsync(); periodo = await contexto.PeriodoFixoAnual.FirstOrDefaultAsync(x => x.PeriodoId == filtroRelatorioSondagem.PeriodoId && x.Ano == filtroRelatorioSondagem.AnoLetivo); grupo = await contexto.Grupo.FirstOrDefaultAsync(x => x.Id == filtroRelatorioSondagem.GrupoId); perguntas = await contexto.OrdemPergunta.Include(x => x.Pergunta).Where(x => x.GrupoId.Equals(filtroRelatorioSondagem.GrupoId)).OrderBy(p => p.OrdenacaoNaTela).Select(x => x.Pergunta).ToListAsync(); } if (grupo == null) { throw new Exception($"Não encontrado grupo com o id '{filtroRelatorioSondagem.GrupoId}'"); } relatorio.GrupoDescricao = grupo.Descricao; int quantidade = await ObterQuantidadeAlunosAtivos(filtroRelatorioSondagem, periodo); if (quantidade == 0) { throw new Exception("Não foi possivel obter os alunos ativos para o filtro especificado"); } relatorio.Totais = new RelatorioPortuguesTotalizadores { Quantidade = quantidade }; if (filtroRelatorioSondagem.GrupoId != GrupoEnum.ProducaoTexto.Name()) { relatorio.Totais.Porcentagem = 100; } var listaRetorno = new List <RelatorioPortuguesPerguntasDto>(); if (dados == null || !dados.Any()) { PreencherPerguntasForaLista(listaRetorno, perguntas); ObterSemPreenchimento(dados, quantidade, listaRetorno); relatorio.Perguntas = listaRetorno; MapearGrafico(grupo, relatorio); return(relatorio); } PopularListaRetorno(dados, quantidade, perguntas, listaRetorno); relatorio.Perguntas = listaRetorno; MapearGrafico(grupo, relatorio); return(relatorio); }
private async Task <IEnumerable <AlunosNaTurmaDTO> > ObterAlunosTurma(RelatorioPortuguesFiltroDto relatorioPortuguesFiltroDto, PeriodoFixoAnual periodo) { var alunos = await alunoAPI.ObterAlunosAtivosPorTurmaEPeriodo(relatorioPortuguesFiltroDto.CodigoTurma, periodo.DataFim); if (alunos == null || !alunos.Any()) { throw new Exception("Não encontrado alunos para a turma informda"); } return(alunos); }