public async Task <RelatorioConsolidadoDTO> ObterRelatorioMatematicaAutoral(filtrosRelatorioDTO filtro) { IncluiIdDoComponenteCurricularEhDoPeriodoNoFiltro(filtro); int totalDeAlunos = await ConsultaTotalDeAlunos.BuscaTotalDeAlunosEOl(filtro); var query = ConsultasRelatorios.QueryRelatorioMatematicaAutoral(filtro); var relatorio = new RelatorioConsolidadoDTO(); using (var conexao = new NpgsqlConnection(Environment.GetEnvironmentVariable("sondagemConnection"))) { relatorio.Perguntas = await RetornaRelatorioMatematica(filtro, conexao, query, totalDeAlunos); } relatorio.Graficos = new List <GraficosRelatorioDTO>(); foreach (var pergunta in relatorio.Perguntas) { var grafico = new GraficosRelatorioDTO(); grafico.nomeGrafico = pergunta.Nome; grafico.Barras = new List <BarrasGraficoDTO>(); pergunta.Respostas.ForEach(resposta => { var barra = new BarrasGraficoDTO(); barra.label = resposta.Nome; barra.value = resposta.quantidade; grafico.Barras.Add(barra); }); relatorio.Graficos.Add(grafico); } return(relatorio); }
public async Task <RelatorioConsolidadoCapacidadeLeituraDTO> ObterRelatorioCapacidadeLeitura(RelatorioPortuguesFiltroDto filtro) { var filtrosRelatorio = CriaMapFiltroRelatorio(filtro); int totalDeAlunos = await ConsultaTotalDeAlunos.BuscaTotalDeAlunosEOl(filtrosRelatorio); var query = ConsultasRelatorios.MontaQueryConsolidadoCapacidadeLeitura(filtro); var relatorio = new RelatorioConsolidadoCapacidadeLeituraDTO(); var ListaPerguntaEhRespostasRelatorio = await RetornaListaDehPerguntasEhRespostas(filtro, query); var relatorioAgrupado = ListaPerguntaEhRespostasRelatorio.GroupBy(p => p.OrdermId).ToList(); relatorio.RelatorioPorOrdem = RetornaRelatorioPorOrdens(totalDeAlunos, relatorioAgrupado); relatorio.Graficos = CriaGraficosConsolidados(relatorio); return(relatorio); }
public async Task <RelatorioCapacidadeLeituraPorTurma> ObterRelatorioCapacidadeLeituraPorTurma(RelatorioPortuguesFiltroDto filtro) { var filtrosRelatorio = CriaMapFiltroRelatorio(filtro); var periodos = await ConsultaTotalDeAlunos.BuscaDatasPeriodoFixoAnual(filtrosRelatorio); if (periodos.Count() == 0) { throw new Exception("Periodo fixo anual nao encontrado"); } var alunosEol = await alunoAPI.ObterAlunosAtivosPorTurmaEPeriodo(filtro.CodigoTurma, periodos.First().DataFim); var queryPorTurma = ConsultasRelatorios.QueryRelatorioPorTurmaPortuguesCapacidadeDeLeitura(); var listaAlunoRespostas = await RetornaListaRespostasAlunoPorTurma(filtrosRelatorio, queryPorTurma); var relatorio = await CriaRelatorioAlunos(filtrosRelatorio, alunosEol, listaAlunoRespostas); using (var contexto = new SMEManagementContextData()) { await CriaGraficosRelatorio(relatorio, contexto); } relatorio.Alunos = relatorio.Alunos.OrderBy(x => x.NomeAluno).ToList(); return(relatorio); }
public async Task <RelatorioMatematicaPorTurmaDTO> ObterRelatorioPorTurma(filtrosRelatorioDTO filtro) { IncluiIdDoComponenteCurricularEhDoPeriodoNoFiltro(filtro); var periodos = await ConsultaTotalDeAlunos.BuscaDatasPeriodoFixoAnual(filtro); if (periodos.Count() == 0) { throw new Exception("Periodo fixo anual nao encontrado"); } var endpoits = new EndpointsAPI(); var alunoApi = new AlunosAPI(endpoits); var alunosEol = await alunoApi.ObterAlunosAtivosPorTurmaEPeriodo(filtro.CodigoTurmaEol, periodos.First().DataFim); var QueryAlunosRespostas = ConsultasRelatorios.QueryRelatorioPorTurmaMatematica(); var listaAlunoRespostas = await RetornaListaRespostasAlunoPorTurma(filtro, QueryAlunosRespostas); var AlunosAgrupados = listaAlunoRespostas.GroupBy(x => x.CodigoAluno); var relatorio = new RelatorioMatematicaPorTurmaDTO(); await RetornaPerguntasDoRelatorio(filtro, relatorio); var ListaAlunos = new List <AlunoPorTurmaRelatorioDTO>(); alunosEol.ForEach(alunoRetorno => { var aluno = new AlunoPorTurmaRelatorioDTO(); aluno.CodigoAluno = alunoRetorno.CodigoAluno; aluno.NomeAluno = alunoRetorno.NomeAlunoRelatorio; aluno.Perguntas = new List <PerguntaRespostaPorAluno>(); var alunoRespostas = AlunosAgrupados.Where(x => x.Key == aluno.CodigoAluno.ToString()).ToList(); foreach (var perguntaBanco in relatorio.Perguntas) { var pergunta = new PerguntaRespostaPorAluno() { Id = perguntaBanco.Id, Valor = string.Empty }; var respostaAluno = listaAlunoRespostas.Where(x => x.PerguntaId == perguntaBanco.Id && x.CodigoAluno == aluno.CodigoAluno.ToString()).FirstOrDefault(); if (respostaAluno != null) { pergunta.Valor = respostaAluno.RespostaDescricao; } aluno.Perguntas.Add(pergunta); } ListaAlunos.Add(aluno); }); relatorio.Alunos = ListaAlunos.OrderBy(aluno => aluno.NomeAluno); relatorio.Graficos = new List <GraficosRelatorioDTO>(); using (var contexto = new SMEManagementContextData()) { var perguntasBanco = await contexto.PerguntaResposta.Include(x => x.Pergunta).Include(y => y.Resposta).Where(pr => relatorio.Perguntas.Any(p => p.Id == pr.Pergunta.Id)).ToListAsync(); foreach (var pergunta in relatorio.Perguntas) { var grafico = new GraficosRelatorioDTO(); grafico.nomeGrafico = pergunta.Nome; grafico.Barras = new List <BarrasGraficoDTO>(); var listaRespostas = perguntasBanco.Where(x => x.Pergunta.Id == pergunta.Id).ToList(); listaRespostas.ForEach(resposta => { var barra = new BarrasGraficoDTO(); barra.label = resposta.Resposta.Descricao; barra.value = relatorio.Alunos.Count(x => x.Perguntas.Any(r => r.Id == pergunta.Id && r.Valor == resposta.Resposta.Descricao)); grafico.Barras.Add(barra); }); var barraAlunosSemPreenchimento = new BarrasGraficoDTO(); barraAlunosSemPreenchimento.label = "Sem Preenchimento"; barraAlunosSemPreenchimento.value = relatorio.Alunos.Count() - grafico.Barras.Sum(x => x.value); grafico.Barras.Add(barraAlunosSemPreenchimento); relatorio.Graficos.Add(grafico); } } return(relatorio); }