public async Task <IEnumerable <SondagemOrdemDto> > ObterPorGrupo(GrupoSondagemEnum grupoSondagem) { String sql = String.Empty; sql = $"select distinct o.\"Id\", o.\"Descricao\", o.\"Ordenacao\" "; sql += "from \"Ordem\" o "; sql += "where o.\"GrupoId\" = @grupoId "; sql += "order by o.\"Ordenacao\" "; var parametros = new { grupoId = grupoSondagem.Name() }; using var conexao = new NpgsqlConnection(variaveisAmbiente.ConnectionStringSondagem); return(await conexao.QueryAsync <SondagemOrdemDto>(sql, parametros)); }
private async Task <List <RelatorioSondagemPortuguesConsolidadoRespostaDto> > ObterRespostasGrupo(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros) { GrupoSondagemEnum grupoSondagemEnum = filtros.GrupoId == GrupoSondagemEnum.LeituraVozAlta.Name() ? GrupoSondagemEnum.LeituraVozAlta : GrupoSondagemEnum.ProducaoTexto; var semestre = (filtros.Bimestre <= 2) ? 1 : 2; var dataReferencia = await mediator.Send(new ObterDataPeriodoFimSondagemPorSemestreAnoLetivoQuery(semestre, filtros.AnoLetivo)); int alunosPorAno = await mediator.Send(new ObterTotalAlunosPorUeAnoSondagemQuery( filtros.Ano.ToString(), filtros.UeCodigo, filtros.AnoLetivo, dataReferencia, Convert.ToInt64(filtros.DreCodigo) )); var periodo = await mediator.Send(new ObterPeriodoPorTipoQuery(filtros.Bimestre, TipoPeriodoSondagem.Bimestre)); var perguntas = await mediator.Send(new ObterPerguntasPorGrupoQuery(grupoSondagemEnum, ComponenteCurricularSondagemEnum.Portugues)); var dados = await mediator.Send(new ObterRespostasPorFiltrosQuery() { AnoLetivo = filtros.AnoLetivo, TurmaAno = filtros.Ano, DreCodigo = filtros.DreCodigo, UeCodigo = filtros.UeCodigo, GrupoId = filtros.GrupoId, ComponenteCurricular = ComponenteCurricularSondagemEnum.Portugues, PeriodoId = periodo.Id }); var respostas = new List <RelatorioSondagemPortuguesConsolidadoRespostaDto>(); if (dados == null || !dados.Any()) { PreencherPerguntasForaLista(respostas, perguntas); ObterSemPreenchimento(dados, alunosPorAno, respostas); return(respostas); } PopularListaRetorno(dados, alunosPorAno, perguntas, respostas); return(respostas); }
public async Task <IEnumerable <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaQueryDto> > ObterPlanilha(string dreCodigo, string ueCodigo, string turmaCodigo, int anoLetivo, int anoTurma, int bimestre, GrupoSondagemEnum grupo) { var queryRelatorio = @" select o.""Descricao"" as ""ordem"", p.""Descricao"" as ""pergunta"", r.""Descricao"" as ""resposta"" , count(tabela.""RespostaId"") as ""quantidade"" from ""Ordem"" as o inner join ""GrupoOrdem"" gp on gp.""OrdemId"" = o.""Id"" and gp.""GrupoId"" = @GrupoId inner join ""OrdemPergunta"" op on op.""GrupoId"" = @GrupoId inner join ""Pergunta"" p on p.""Id"" = op.""PerguntaId"" inner join ""PerguntaResposta"" pr on pr.""PerguntaId"" = p.""Id"" inner join ""Resposta"" r on r.""Id"" = pr.""RespostaId"" left join ( select s.""OrdemId"", s.""AnoLetivo"", s.""AnoTurma"", per.""Descricao"", c.""Descricao"", sa.""NomeAluno"", p.""Id"" as ""PerguntaId"", p.""Descricao"" as ""PerguntaDescricao"", r.""Id"" as ""RespostaId"", r.""Descricao"" as ""RespostaDescricao"" from ""SondagemAlunoRespostas"" sar inner join ""SondagemAluno"" sa on sa.""Id"" = ""SondagemAlunoId"" inner join ""Sondagem"" s on s.""Id"" = sa.""SondagemId"" inner join ""Pergunta"" p on p.""Id"" = sar.""PerguntaId"" inner join ""Resposta"" r on r.""Id"" = sar.""RespostaId"" inner join ""Periodo"" per on per.""Id"" = s.""PeriodoId"" inner join ""ComponenteCurricular"" c on c.""Id"" = s.""ComponenteCurricularId"" where s.""Id"" in ( select s.""Id"" from ""Sondagem"" s where s.""GrupoId"" = @grupoId and s.""ComponenteCurricularId"" = @componenteCurricularId" ; if (dreCodigo != null && dreCodigo != "0") { queryRelatorio += @" and ""CodigoDre"" = @dreCodigo"; } if (ueCodigo != null && ueCodigo != String.Empty) { queryRelatorio += @" and ""CodigoUe"" = @ueCodigo"; } queryRelatorio += @" AND per.""Descricao"" = @periodo and s.""AnoLetivo"" = @anoLetivo and s.""AnoTurma"" = @anoTurma ) ) as tabela on p.""Id"" = tabela.""PerguntaId"" and r.""Id""= tabela.""RespostaId"" and o.""Id"" = tabela.""OrdemId"" group by o.""Id"", o.""Descricao"", r.""Id"", r.""Descricao"", p.""Id"", p.""Descricao"", gp.""Ordenacao"", op.""OrdenacaoNaTela"" order by gp.""Ordenacao"", o.""Descricao"", op.""OrdenacaoNaTela"", r.""Descricao"""; var sql = queryRelatorio.ToString(); var componenteCurricularId = ComponenteCurricularSondagemEnum.Portugues.Name(); var periodo = $"{ bimestre }° Bimestre"; var parametros = new { grupoId = grupo.Name(), componenteCurricularId, periodo, dreCodigo, ueCodigo, anoLetivo, anoTurma }; using var conexao = new NpgsqlConnection(variaveisAmbiente.ConnectionStringSondagem); return(await conexao.QueryAsync <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaQueryDto>(sql, parametros)); }
public async Task <IEnumerable <RelatorioSondagemPortuguesPorTurmaPlanilhaQueryDto> > ObterPlanilhaLinhas(string dreCodigo, string ueCodigo, string turmaCodigo, int anoLetivo, int anoTurma, int bimestre, ProficienciaSondagemEnum proficiencia, string nomeColunaBimestre, GrupoSondagemEnum grupo) { string sql = String.Empty; switch (proficiencia) { case ProficienciaSondagemEnum.Leitura: case ProficienciaSondagemEnum.Escrita: sql = $"select \"{nomeColunaBimestre}\" Resposta, "; sql += "'1' PerguntaId, '' Pergunta, "; sql += "\"studentCodeEol\" AlunoEolCode, "; sql += "\"studentNameEol\" AlunoNome, "; sql += "\"schoolYear\" AnoLetivo, "; sql += "\"yearClassroom\" AnoTurma, "; sql += "\"classroomCodeEol\" TurmaEolCode "; sql += "from \"PortuguesePolls\" "; sql += "where 1 = 1 "; if (!string.IsNullOrEmpty(dreCodigo) && int.Parse(dreCodigo) > 0) { sql += "and \"dreCodeEol\" = @dreCodigo "; } if (!string.IsNullOrEmpty(ueCodigo) && int.Parse(ueCodigo) > 0) { sql += "and \"schoolCodeEol\" = @ueCodigo "; } if (!string.IsNullOrEmpty(turmaCodigo)) { sql += "and \"classroomCodeEol\" = @turmaCodigo "; } if (anoLetivo > 0) { sql += "and \"schoolYear\" = @anoLetivo "; } if (anoTurma > 0) { sql += "and \"yearClassroom\" = @anoTurma "; } break; case ProficienciaSondagemEnum.Autoral: sql += "select distinct sa2.\"CodigoAluno\" AlunoEolCode, sa2.\"NomeAluno\" AlunoNome, sa.\"AnoLetivo\", sa.\"AnoTurma\", sa.\"CodigoTurma\" TurmaEolCode, p.\"Id\" PerguntaId, p.\"Descricao\" Pergunta, r.\"Descricao\" Resposta "; sql += "from \"Sondagem\" sa "; sql += "inner join \"ComponenteCurricular\" cc on sa.\"ComponenteCurricularId\" = cc.\"Id\" "; sql += "inner join \"Periodo\" p2 on sa.\"PeriodoId\" = p2.\"Id\" "; sql += "inner join \"SondagemAluno\" sa2 on sa.\"Id\" = sa2.\"SondagemId\" "; sql += "inner join \"Pergunta\" p on p.\"ComponenteCurricularId\" = sa.\"ComponenteCurricularId\" "; sql += "inner join \"SondagemAlunoRespostas\" pr on pr.\"PerguntaId\" = p.\"Id\" and pr.\"SondagemAlunoId\" = sa2.\"Id\" "; sql += "inner join \"Resposta\" r on r.\"Id\" = pr.\"RespostaId\" "; sql += "inner join \"OrdemPergunta\" op on op.\"GrupoId\" = sa.\"GrupoId\" "; sql += "where sa.\"GrupoId\" = @grupoId "; if (!string.IsNullOrEmpty(dreCodigo) && int.Parse(dreCodigo) > 0) { sql += "and sa.\"CodigoDre\" = @dreCodigo "; } if (!string.IsNullOrEmpty(ueCodigo) != null && int.Parse(ueCodigo) > 0) { sql += "and sa.\"CodigoUe\" = @ueCodigo "; } sql += "and sa.\"CodigoTurma\" = @turmaCodigo "; sql += "and sa.\"AnoLetivo\" = @anoLetivo "; sql += "and sa.\"AnoTurma\" = @anoTurma "; sql += "and cc.\"Id\" = @componenteCurricular "; sql += "and p2.\"Descricao\" = @periodo "; sql += "order by sa2.\"NomeAluno\" "; break; } var periodo = $"{ bimestre }° Bimestre"; var componenteCurricular = ComponenteCurricularSondagemEnum.Portugues.Name(); var grupoId = grupo.Name(); var parametros = new object(); if (proficiencia == ProficienciaSondagemEnum.Autoral) { parametros = new { componenteCurricular, dreCodigo, grupoId, ueCodigo, periodo, turmaCodigo, anoLetivo, anoTurma }; } else { parametros = new { componenteCurricular, dreCodigo, grupoId, ueCodigo, periodo, turmaCodigo, anoLetivo = anoLetivo.ToString(), anoTurma = anoTurma.ToString() }; } using var conexao = new NpgsqlConnection(variaveisAmbiente.ConnectionStringSondagem); return(await conexao.QueryAsync <RelatorioSondagemPortuguesPorTurmaPlanilhaQueryDto>(sql, parametros)); }
public async Task <IEnumerable <PerguntasOrdemGrupoAutoralDto> > ObterPerguntasPorGrupo(GrupoSondagemEnum grupoSondagem, ComponenteCurricularSondagemEnum componenteCurricular) { StringBuilder query = new StringBuilder(); query.Append(" select p.\"Id\" PerguntaId, p.\"Descricao\" Pergunta, o.\"Id\" OrdemId, o.\"Descricao\" Ordem, "); query.Append(" g.\"Id\" GrupoId, g.\"Descricao\" Grupo "); query.Append(" from \"Grupo\" g "); query.Append(" inner join \"GrupoOrdem\" go on go.\"GrupoId\" = g.\"Id\" "); query.Append(" inner join \"Ordem\" o on o.\"Id\" = go.\"OrdemId\" "); query.Append(" inner join \"OrdemPergunta\" op on op.\"GrupoId\" = g.\"Id\" "); query.Append(" inner join \"Pergunta\" p on p.\"Id\" = op.\"PerguntaId\" where 1=1 "); if (grupoSondagem > 0) { query.Append("and g.\"Id\" = @grupoId "); } if (componenteCurricular > 0) { query.Append("and p.\"ComponenteCurricularId\" = @componenteCurricularId "); } query.Append("order by go.\"Ordenacao\", op.\"OrdenacaoNaTela\" "); var parametros = new { grupoId = grupoSondagem.Name(), componenteCurricularId = componenteCurricular.Name() }; using var conexao = new NpgsqlConnection(variaveisAmbiente.ConnectionStringSondagem); return(await conexao.QueryAsync <PerguntasOrdemGrupoAutoralDto>(query.ToString(), parametros)); }
private async Task <List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto> > ObterPlanilhas(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros, int alunosPorAno, GrupoSondagemEnum grupoSondagemEnum = GrupoSondagemEnum.CapacidadeLeitura) { IEnumerable <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaQueryDto> linhasSondagem = await mediator.Send(new ObterRelatorioSondagemPortuguesConsolidadoLeituraQuery() { DreCodigo = filtros.DreCodigo, UeCodigo = filtros.UeCodigo, TurmaCodigo = filtros.TurmaCodigo, AnoLetivo = filtros.AnoLetivo, AnoTurma = filtros.Ano, Bimestre = filtros.Bimestre, Grupo = grupoSondagemEnum }); var planilhas = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto>(); var ordens = linhasSondagem.GroupBy(o => o.Ordem).Select(x => x.FirstOrDefault()).ToList(); if (ordens.Count == 0) { var respostasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto>(); respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = "Sem preenchimento", Quantidade = alunosPorAno, Total = alunosPorAno, Percentual = 1 }); var ordensSondagem = await mediator.Send(new ObterOrdensSondagemPorGrupoQuery() { Grupo = grupoSondagemEnum }); foreach (var ordem in ordensSondagem) { planilhas.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto() { Ordem = ordem.Descricao, Perguntas = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto>() { new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto() { Pergunta = String.Empty, Respostas = respostasDto } } }); } } foreach (var ordem in ordens) { var perguntasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto>(); var perguntas = linhasSondagem.Where(o => o.Ordem == ordem.Ordem).GroupBy(p => p.Pergunta).Select(x => x.FirstOrDefault()).ToList(); foreach (var pergunta in perguntas) { var respostasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto>(); var respostas = linhasSondagem.Where(o => o.Ordem == ordem.Ordem && o.Pergunta == pergunta.Pergunta).ToList(); var totalRespostas = respostas.Sum(o => o.Quantidade); foreach (var resposta in respostas) { respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = resposta.Resposta, Quantidade = resposta.Quantidade, Total = alunosPorAno, Percentual = Decimal.Divide(resposta.Quantidade, alunosPorAno) }); } respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = "Sem preenchimento", Quantidade = alunosPorAno - totalRespostas, Total = alunosPorAno, Percentual = Decimal.Divide(alunosPorAno - totalRespostas, alunosPorAno) }); perguntasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto() { Pergunta = pergunta.Pergunta, Respostas = respostasDto }); } planilhas.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto() { Ordem = ordem.Ordem, Perguntas = perguntasDto }); } return(await Task.FromResult(planilhas)); }
public ObterPerguntasPorGrupoQuery(GrupoSondagemEnum grupoSondagem, ComponenteCurricularSondagemEnum componenteCurricular) { GrupoSondagem = grupoSondagem; ComponenteCurricular = componenteCurricular; }