Exemple #1
0
        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));
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
 public ObterPerguntasPorGrupoQuery(GrupoSondagemEnum grupoSondagem, ComponenteCurricularSondagemEnum componenteCurricular)
 {
     GrupoSondagem        = grupoSondagem;
     ComponenteCurricular = componenteCurricular;
 }