public async Task <PaginacaoResultadoDto <AtribuicaoEsporadica> > ListarPaginada(Paginacao paginacao, int anoLetivo, string dreId, string ueId, string codigoRF)
        {
            var retorno = new PaginacaoResultadoDto <AtribuicaoEsporadica>();

            var sql = MontaQueryCompleta(paginacao, codigoRF);

            var parametros = new { inicioAno = new DateTime(anoLetivo, 1, 1), fimAno = new DateTime(anoLetivo, 12, 31), dreId, ueId, codigoRF };

            using (var multi = await database.Conexao.QueryMultipleAsync(sql, parametros))
            {
                retorno.Items          = multi.Read <AtribuicaoEsporadica>().ToList();
                retorno.TotalRegistros = multi.ReadFirst <int>();
            }

            retorno.TotalPaginas = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
Example #2
0
        public async Task <PaginacaoResultadoDto <AtribuicaoEsporadicaDto> > Listar(FiltroAtribuicaoEsporadicaDto filtro)
        {
            var retornoConsultaPaginada = await repositorioAtribuicaoEsporadica.ListarPaginada(Paginacao, filtro.AnoLetivo, filtro.DreId, filtro.UeId, filtro.ProfessorRF);

            var retorno = new PaginacaoResultadoDto <AtribuicaoEsporadicaDto>
            {
                TotalPaginas   = retornoConsultaPaginada.TotalPaginas,
                TotalRegistros = retornoConsultaPaginada.TotalRegistros
            };

            bool nenhumItemEncontrado = retornoConsultaPaginada.Items == null ||
                                        !retornoConsultaPaginada.Items.Any() ||
                                        retornoConsultaPaginada.Items.ElementAt(0).Id == 0;

            retorno.Items = !nenhumItemEncontrado?ListaEntidadeParaListaDto(retornoConsultaPaginada.Items) : null;

            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <EventoTipo> > ListarTipos(EventoLocalOcorrencia eventoLocalOcorrencia, EventoLetivo eventoLetivo, string descricao, Paginacao paginacao)
        {
            var retorno = new PaginacaoResultadoDto <EventoTipo>();

            StringBuilder sql = MontaQueryCompleta(eventoLocalOcorrencia, eventoLetivo, descricao, paginacao);

            var parametros = new { local_ocorrencia = eventoLocalOcorrencia, letivo = eventoLetivo, descricao = $"%{descricao?.ToLowerInvariant()}%" };

            using (var multi = await database.Conexao.QueryMultipleAsync(sql.ToString(), parametros))
            {
                retorno.Items          = multi.Read <EventoTipo>().ToList();
                retorno.TotalRegistros = multi.ReadFirst <int>();
            }

            retorno.TotalPaginas = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <RegistroPoa> > ListarPaginado(string codigoRf, string dreId, int bimestre, string ueId, string titulo, int anoLetivo, Paginacao paginacao)
        {
            var retorno = new PaginacaoResultadoDto <RegistroPoa>();

            var sql = MontaQueryCompleta(paginacao, titulo, bimestre);

            var parametros = new { codigoRf, bimestre, ueId, dreId, titulo = $"%{titulo?.ToLower()}%", anoLetivo };

            using (var multi = await database.Conexao.QueryMultipleAsync(sql, parametros))
            {
                retorno.Items          = multi.Read <RegistroPoa>().ToList();
                retorno.TotalRegistros = multi.ReadFirst <int>();
            }

            retorno.TotalPaginas = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
Example #5
0
        public async Task <PaginacaoResultadoDto <UsuarioInativoDto> > ObterUsuariosInativosPorTipo(Paginacao paginacao, UsuarioTipo usuarioTipo)
        {
            var query = new StringBuilder(@"SELECT
                                               ui.id as Id, 
                                               ui.usuario_id UsuarioId,
                                               ui.usuario_tipo UsuarioTipo,
                                               ui.inativado_em InativadoEm,
                                               u.nome,
                                               u.email,
                                               u.organization_path as UnidadeOrganizacional,
                                               u.google_classroom_id as GoogleClassroomId 
                                          FROM usuario_inativo ui 
                                          inner join usuarios u on u.indice = ui.usuario_id  
                                          WHERE ui.usuario_tipo = @usuarioTipo ");

            var queryCount = new StringBuilder("SELECT count(*) from usuario_inativo ui WHERE ui.usuario_tipo = @usuarioTipo ");

            if (paginacao.QuantidadeRegistros > 0)
            {
                query.AppendLine($" OFFSET @quantidadeRegistrosIgnorados ROWS FETCH NEXT @quantidadeRegistros ROWS ONLY ");
            }

            query.AppendLine(";");
            query.AppendLine(queryCount.ToString());

            var retorno = new PaginacaoResultadoDto <UsuarioInativoDto>();

            var parametros = new
            {
                paginacao.QuantidadeRegistrosIgnorados,
                paginacao.QuantidadeRegistros,
                usuarioTipo
            };

            using var conn = ObterConexao();

            using var registros = await conn.QueryMultipleAsync(query.ToString(), parametros);

            retorno.Items          = registros.Read <UsuarioInativoDto>();
            retorno.TotalRegistros = registros.ReadFirst <int>();
            retorno.TotalPaginas   = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <DocumentoDto> > ObterPorUeTipoEClassificacaoPaginada(long ueId, long tipoDocumentoId,
                                                                                                       long classificacaoId, Paginacao paginacao)
        {
            var retorno = new PaginacaoResultadoDto <DocumentoDto>();

            var sql = MontaQueryCompleta(paginacao, tipoDocumentoId, classificacaoId);

            var parametros = new { ueId, tipoDocumentoId, classificacaoId };

            using (var multi = await database.Conexao.QueryMultipleAsync(sql, parametros))
            {
                retorno.Items          = multi.Read <DocumentoDto>().ToList();
                retorno.TotalRegistros = multi.ReadFirst <int>();
            }

            retorno.TotalPaginas = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
Example #7
0
        public async Task <RegistrosIndividuaisPeriodoDto> Handle(ObterRegistrosIndividuaisPorAlunoPeriodoQuery request, CancellationToken cancellationToken)
        {
            var registrosIndividuais = await repositorioRegistroIndividual.ObterPorAlunoPeriodoPaginado(request.TurmaId, request.ComponenteCurricularId, request.AlunoCodigo, request.DataInicio, request.DataFim, Paginacao);

            PaginacaoResultadoDto <RegistroIndividualDto> registrosDto = null;

            if (registrosIndividuais != null && registrosIndividuais.Items.Any())
            {
                registrosDto = MapearParaDto(registrosIndividuais);
            }

            var turma = await mediator.Send(new ObterTurmaPorIdQuery(request.TurmaId));

            return(new RegistrosIndividuaisPeriodoDto()
            {
                PodeRealizarNovoRegistro = !turma.EhTurmaHistorica,
                RegistrosIndividuais = registrosDto
            });
        }
Example #8
0
        public async Task <PaginacaoResultadoDto <AlunoGoogle> > ObterAlunosPaginadoPorCodigos(Paginacao paginacao, long[] codigosAluno)
        {
            var query = new StringBuilder(@"SELECT
                                                 u.indice,
                                                 u.nome,
                                                 u.id as Codigo,
                                                 u.usuario_tipo as usuariotipo,
                                                 u.email,
                                                 u.organization_path as organizationpath,
                                                 u.data_inclusao as datainclusao,
                                                 u.data_atualizacao as dataatualizacao,
                                                 u.google_classroom_id as GoogleClassroomId
                                            FROM usuarios u
                                            WHERE usuario_tipo = @tipo
                                            and id = any(@codigosAluno)");

            if (paginacao.QuantidadeRegistros > 0)
            {
                query.AppendLine($" OFFSET @quantidadeRegistrosIgnorados ROWS FETCH NEXT @quantidadeRegistros ROWS ONLY ;");
            }

            query.AppendLine("SELECT count(*) from usuarios u WHERE usuario_tipo = @tipo and id = any(@codigosAluno)");

            var retorno = new PaginacaoResultadoDto <AlunoGoogle>();

            var parametros = new
            {
                paginacao.QuantidadeRegistrosIgnorados,
                paginacao.QuantidadeRegistros,
                codigosAluno,
                tipo = UsuarioTipo.Aluno
            };

            using var conn = ObterConexao();

            using var professores = await conn.QueryMultipleAsync(query.ToString(), parametros);

            retorno.Items          = professores.Read <AlunoGoogle>();
            retorno.TotalRegistros = professores.ReadFirst <int>();
            retorno.TotalPaginas   = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
Example #9
0
        public async Task <PaginacaoResultadoDto <EventoTipoDto> > Listar(FiltroEventoTipoDto Filtro)
        {
            var retornoQueryPaginada = await repositorioEventoTipo.ListarTipos(Filtro.LocalOcorrencia, Filtro.Letivo, Filtro.Descricao, Paginacao);

            var retornoConsultaPaginada = new PaginacaoResultadoDto <EventoTipoDto>
            {
                TotalPaginas   = retornoQueryPaginada.TotalPaginas,
                TotalRegistros = retornoQueryPaginada.TotalRegistros
            };

            bool nenhumItemEncontrado = retornoQueryPaginada.Items == null ||
                                        !retornoQueryPaginada.Items.Any() ||
                                        retornoQueryPaginada.Items.ElementAt(0).Id == 0;

            retornoConsultaPaginada.Items = nenhumItemEncontrado
                ? null
                : retornoQueryPaginada.Items.Select(x => EntidadeParaDto(x)).ToList();

            return(retornoConsultaPaginada);
        }
Example #10
0
        public async Task DeveListarEventos()
        {
            var listaEventos = new List <Evento>
            {
                new Evento
                {
                    Id = 1
                }
            };
            var paginado = new PaginacaoResultadoDto <Evento>();

            paginado.Items = listaEventos;
            repositorioEvento.Setup(c => c.Listar(It.IsAny <long?>(), It.IsAny <long?>(), It.IsAny <string>(), It.IsAny <DateTime?>(), It.IsAny <DateTime?>(), It.IsAny <Paginacao>()))
            .Returns(Task.FromResult(paginado));

            var eventosPaginados = await consultaEventos.Listar(new FiltroEventosDto());

            Assert.NotNull(eventosPaginados);
            Assert.Contains(eventosPaginados.Items, c => c.Id == 1);
            repositorioEvento.Verify(c => c.Listar(It.IsAny <long?>(), It.IsAny <long?>(), It.IsAny <string>(), It.IsAny <DateTime?>(), It.IsAny <DateTime?>(), It.IsAny <Paginacao>()), Times.Once);
        }
        public async Task <PaginacaoResultadoDto <CompensacaoAusencia> > Listar(Paginacao paginacao, string turmaId, string disciplinaId, int bimestre, string nomeAtividade)
        {
            var retorno = new PaginacaoResultadoDto <CompensacaoAusencia>();

            var query = new StringBuilder(MontaQuery(paginacao, disciplinaId, bimestre, nomeAtividade));

            query.AppendLine(";");
            query.AppendLine(MontaQuery(paginacao, disciplinaId, bimestre, nomeAtividade, true));

            var nomeAtividadeTratado = $"%{(nomeAtividade ?? "").ToLower()}%";

            using (var multi = await database.Conexao.QueryMultipleAsync(query.ToString(), new { turmaId, disciplinaId, bimestre, nomeAtividade = nomeAtividadeTratado }))
            {
                retorno.Items          = multi.Read <CompensacaoAusencia>().ToList();
                retorno.TotalRegistros = multi.ReadFirst <int>();
            }

            retorno.TotalPaginas = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <Notificacao> > Obter(string dreId, string ueId, int statusId,
                                                                       string turmaId, string usuarioRf, int tipoId, int categoriaId, string titulo, long codigo, int anoLetivo, Paginacao paginacao)
        {
            var query = new StringBuilder();

            MontaQueryObterCompleta(dreId, ueId, statusId, turmaId, usuarioRf, tipoId, categoriaId, titulo, codigo, anoLetivo, paginacao, query,
                                    paginacao.QuantidadeRegistros, paginacao.QuantidadeRegistrosIgnorados);

            MontaQueryObterCount(dreId, ueId, statusId, turmaId, usuarioRf, tipoId, categoriaId, titulo, codigo, anoLetivo, query);

            var retornoPaginado = new PaginacaoResultadoDto <Notificacao>();

            if (!string.IsNullOrEmpty(titulo))
            {
                titulo = $"%{titulo}%";
            }

            using (var multi = await database.Conexao.QueryMultipleAsync(query.ToString(), new
            {
                dreId,
                ueId,
                turmaId,
                statusId,
                tipoId,
                usuarioRf,
                categoriaId,
                titulo,
                codigo,
                anoLetivo
            }))
            {
                retornoPaginado.Items          = multi.Read <Notificacao>().ToList();
                retornoPaginado.TotalRegistros = multi.ReadFirst <int>();
            }

            retornoPaginado.TotalPaginas = (int)Math.Ceiling((double)retornoPaginado.TotalRegistros / paginacao.QuantidadeRegistros);
            return(retornoPaginado);
        }
Example #13
0
 private PaginacaoResultadoDto <RegistroIndividualDto> MapearParaDto(PaginacaoResultadoDto <RegistroIndividual> registros)
 {
     return(new PaginacaoResultadoDto <RegistroIndividualDto>()
     {
         Items = registros.Items.Select(registro =>
         {
             return new RegistroIndividualDto()
             {
                 Id = registro.Id,
                 AlunoCodigo = registro.AlunoCodigo,
                 Auditoria = (AuditoriaDto)registro,
                 ComponenteCurricularId = registro.ComponenteCurricularId,
                 Data = registro.DataRegistro,
                 Excluido = registro.Excluido,
                 Migrado = registro.Migrado,
                 Registro = registro.Registro,
                 TurmaId = registro.TurmaId
             };
         }),
         TotalPaginas = registros.TotalPaginas,
         TotalRegistros = registros.TotalRegistros
     });
 }
        private PaginacaoResultadoDto <OcorrenciaListagemDto> MapearParaDto(PaginacaoResultadoDto <Ocorrencia> ocorrencias, IEnumerable <AlunoPorTurmaResposta> alunos)
        {
            return(new PaginacaoResultadoDto <OcorrenciaListagemDto>()
            {
                Items = ocorrencias.Items.Select(ocorrencia =>
                {
                    var alunoOcorrencia = ocorrencia.Alunos.Count > 1
                    ? $"{ocorrencia.Alunos.Count} crianças"
                    : DefinirDescricaoOcorrenciaAluno(alunos, ocorrencia);

                    return new OcorrenciaListagemDto()
                    {
                        AlunoOcorrencia = alunoOcorrencia,
                        DataOcorrencia = ocorrencia.DataOcorrencia.ToString("dd/MM/yyyy"),
                        Id = ocorrencia.Id,
                        Titulo = ocorrencia.Titulo,
                        TurmaId = ocorrencia.TurmaId
                    };
                }),
                TotalRegistros = ocorrencias.TotalRegistros,
                TotalPaginas = ocorrencias.TotalPaginas
            });
        }
        public async Task <PaginacaoResultadoDto <FuncionarioIndiretoEol> > ObterFuncionariosIndiretosParaInclusaoAsync(DateTime dataReferencia, Paginacao paginacao, string cpf)
        {
            using var conn = ObterConexao();

            var aplicarPaginacao = paginacao.QuantidadeRegistros > 0;
            var query            = MontaQueryFuncionariosIndiretosParaInclusao(aplicarPaginacao, cpf);
            var parametros       = new
            {
                dataReferencia = dataReferencia.Date,
                paginacao.QuantidadeRegistros,
                paginacao.QuantidadeRegistrosIgnorados,
                cpf
            };

            using var multi = await conn.QueryMultipleAsync(query, parametros);

            var retorno = new PaginacaoResultadoDto <FuncionarioIndiretoEol>();

            retorno.Items          = multi.Read <FuncionarioIndiretoEol>();
            retorno.TotalRegistros = multi.ReadFirst <int>();
            retorno.TotalPaginas   = aplicarPaginacao ? (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros) : 1;

            return(retorno);
        }
Example #16
0
        public async Task <PaginacaoResultadoDto <UsuarioParaAtualizacaoGoogleClassroomIdDto> > ObterAtualizacaoUsuarioGoogleClassroomIdAsync(Paginacao paginacao)
        {
            const string queryBase = @"
                SELECT
                    u.usuario_id AS UsuarioId,
                    u.email
                FROM __atualizacao_usuario_googleclassroom_id u ";

            var realizarPaginacao = paginacao.QuantidadeRegistros > 0;

            var query = new StringBuilder(queryBase);

            query.AppendLine(realizarPaginacao
                ? "OFFSET @quantidadeRegistrosIgnorados ROWS FETCH NEXT @quantidadeRegistros ROWS ONLY; "
                : "; ");

            query.AppendLine("SELECT count(*) FROM __atualizacao_usuario_googleclassroom_id;");

            var parametros = new
            {
                paginacao.QuantidadeRegistrosIgnorados,
                paginacao.QuantidadeRegistros
            };

            using var conn = ObterConexao();

            using var usuarios = await conn.QueryMultipleAsync(query.ToString(), parametros);

            var retorno = new PaginacaoResultadoDto <UsuarioParaAtualizacaoGoogleClassroomIdDto>();

            retorno.Items          = usuarios.Read <UsuarioParaAtualizacaoGoogleClassroomIdDto>();
            retorno.TotalRegistros = usuarios.ReadFirst <int>();
            retorno.TotalPaginas   = realizarPaginacao ? (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros) : default;

            return(retorno);
        }
Example #17
0
        private PaginacaoResultadoDto <FechamentoReaberturaListagemDto> MapearListaEntidadeParaDto(PaginacaoResultadoDto <FechamentoReabertura> listaEntidades)
        {
            var retorno = new PaginacaoResultadoDto <FechamentoReaberturaListagemDto>();

            retorno.TotalPaginas   = listaEntidades.TotalPaginas;
            retorno.TotalRegistros = listaEntidades.TotalRegistros;

            retorno.Items = MapearListaEntidadeParaDto(listaEntidades.Items);

            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <AlunoEol> > ObterAlunosQueSeraoRemovidosPorAnoLetivoETurma(ParametrosCargaInicialDto parametrosCargaInicialDto, Paginacao paginacao, int anoLetivo, long turmaId, DateTime dataReferencia, bool ehDataReferenciaPrincipal)
        {
            using var conn = ObterConexao();

            var querySelectDados = @"
					SELECT
					DISTINCT a.cd_aluno AS Codigo,
					a.nm_aluno AS NomePessoa,
					a.nm_social_aluno AS NomeSocial,
					a.dt_nascimento_aluno AS DataNascimento,
				    te.cd_turma_escola AS TurmaId,
					mte.cd_situacao_aluno as SituacaoMatricula,
					mte.dt_situacao_aluno as DataSituacao "                    ;

            var querySelectCount = "SELECT COUNT(DISTINCT a.cd_aluno) ";

            var queryFrom = new StringBuilder(@"
				FROM
					v_aluno_cotic aluno (NOLOCK)
				INNER JOIN 
					aluno a
					ON aluno.cd_aluno = a.cd_aluno
				INNER JOIN
					v_matricula_cotic matr (NOLOCK) 
					ON aluno.cd_aluno = matr.cd_aluno
				INNER JOIN 
					matricula_turma_escola mte (NOLOCK) 
					ON matr.cd_matricula = mte.cd_matricula
				INNER JOIN
					turma_escola te (NOLOCK)
					ON mte.cd_turma_escola = te.cd_turma_escola
				INNER JOIN
					escola esc (NOLOCK)
					ON te.cd_escola = esc.cd_escola
				WHERE
					mte.cd_situacao_aluno IN (2,3,4,7,8,11,12,14,15)
					AND matr.an_letivo = @anoLetivo
					AND te.an_letivo = @anoLetivo "                    );

            if (turmaId > 0)
            {
                queryFrom.AppendLine("AND te.cd_turma_escola = @turmaId ");
            }

            if (ehDataReferenciaPrincipal)
            {
                queryFrom.AppendLine("AND mte.dt_situacao_aluno = @dataReferencia ");
            }
            else
            {
                queryFrom.AppendLine("AND mte.dt_situacao_aluno <= @dataReferencia ");
            }

            queryFrom.AppendLine(@"and mte.dt_situacao_aluno = (select max(mte2.dt_situacao_aluno) from v_matricula_cotic matr2(NOLOCK)
													 inner join matricula_turma_escola mte2 (NOLOCK) on mte2.cd_matricula = matr2.cd_matricula
													 where matr2.cd_aluno = a.cd_aluno
													   and matr2.an_letivo = te.an_letivo
													   and mte2.cd_turma_escola = te.cd_turma_escola) "                                                    );

            queryFrom.AdicionarCondicaoIn(parametrosCargaInicialDto.TiposUes, "esc.tp_escola", nameof(parametrosCargaInicialDto.TiposUes));
            queryFrom.AdicionarCondicaoIn(parametrosCargaInicialDto.Ues, "te.cd_escola", nameof(parametrosCargaInicialDto.Ues));
            queryFrom.AdicionarCondicaoIn(parametrosCargaInicialDto.Turmas, "te.cd_turma_escola", nameof(parametrosCargaInicialDto.Turmas));

            var queryPaginacao = @"order by mte.dt_situacao_aluno desc
								   offset @quantidadeRegistrosIgnorados rows fetch next @quantidadeRegistros rows only;"                                ;

            var query = new StringBuilder(querySelectDados);

            query.Append(queryFrom);
            query.Append(queryPaginacao);
            query.Append(querySelectCount);
            query.Append(queryFrom);

            using var multi = await conn.QueryMultipleAsync(query.ToString(),
                                                            new
            {
                quantidadeRegistros          = paginacao.QuantidadeRegistros,
                quantidadeRegistrosIgnorados = paginacao.QuantidadeRegistrosIgnorados,
                anoLetivo,
                dataReferencia,
                turmaId
            }, commandTimeout : 6000);

            var retorno = new PaginacaoResultadoDto <AlunoEol>
            {
                Items          = multi.Read <AlunoEol>(),
                TotalRegistros = multi.ReadFirst <int>()
            };

            retorno.TotalPaginas = paginacao.QuantidadeRegistros > 0 ? (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros) : 1;
            return(retorno);
        }
        public async Task <PaginacaoResultadoDto <AlunoEol> > ObterAlunosQueSeraoInativosPorAnoLetivo(Paginacao paginacao, int anoLetivo, DateTime dataReferencia)
        {
            var querySelectDados = @" SELECT                    
										DISTINCT a.cd_aluno AS Codigo,
										a.nm_aluno AS NomePessoa,
										a.nm_social_aluno AS NomeSocial,
										a.dt_nascimento_aluno AS DataNascimento,
										te.cd_turma_escola AS TurmaId,
										mte.cd_situacao_aluno as SituacaoMatricula,
										mte.dt_situacao_aluno as DataSituacao"                                        ;

            var querySelectCount = "SELECT COUNT(DISTINCT a.cd_aluno) ";

            var queryFrom = new StringBuilder(@" FROM
											v_aluno_cotic aluno (NOLOCK)
										INNER JOIN
											aluno a
											ON aluno.cd_aluno = a.cd_aluno
										INNER JOIN
											v_matricula_cotic matr (NOLOCK)
											ON aluno.cd_aluno = matr.cd_aluno
										INNER JOIN
											matricula_turma_escola mte (NOLOCK)
											ON matr.cd_matricula = mte.cd_matricula
										INNER JOIN
											turma_escola te (NOLOCK)
											ON mte.cd_turma_escola = te.cd_turma_escola
										INNER JOIN
											escola esc (NOLOCK)
											ON te.cd_escola = esc.cd_escola
										WHERE
												mte.cd_situacao_aluno IN (2,3,4,5,7,8,11,12,14,15)
											AND matr.an_letivo = @anoLetivo
											AND te.an_letivo = @anoLetivo
											AND matr.dt_status_matricula >= @dataReferencia
											AND NOT EXISTS (select 1 
												from v_matricula_cotic v2
											   inner join matricula_turma_escola m2 ON 
													v2.cd_matricula = m2.cd_matricula
											   where v2.an_letivo >= matr.an_letivo 
											     and v2.cd_aluno = a.cd_aluno
											     and m2.cd_situacao_aluno IN(1,6,10,13) )
										"                                        );

            var queryPaginacao = @"order by a.cd_aluno
								   offset @quantidadeRegistrosIgnorados rows fetch next @quantidadeRegistros rows only;"                                ;

            var query = new StringBuilder(querySelectDados);

            query.Append(queryFrom);
            query.Append(queryPaginacao);
            query.Append(querySelectCount);
            query.Append(queryFrom);

            using var conn  = ObterConexao();
            using var multi = await conn.QueryMultipleAsync(query.ToString(),
                                                            new
            {
                quantidadeRegistros          = paginacao.QuantidadeRegistros,
                quantidadeRegistrosIgnorados = paginacao.QuantidadeRegistrosIgnorados,
                anoLetivo,
                dataReferencia
            }, commandTimeout : 6000);

            var retorno = new PaginacaoResultadoDto <AlunoEol>
            {
                Items          = multi.Read <AlunoEol>(),
                TotalRegistros = multi.ReadFirst <int>()
            };

            retorno.TotalPaginas = paginacao.QuantidadeRegistros > 0 ? (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros) : 1;
            return(retorno);
        }
 private PaginacaoResultadoDto <RecuperacaoParalelaTotalResultadoDto> MapearResultadoPaginadoParaDto(PaginacaoResultadoDto <RetornoRecuperacaoParalelaTotalResultadoDto> totalResumo)
 {
     return(new PaginacaoResultadoDto <RecuperacaoParalelaTotalResultadoDto>
     {
         Items = MapearResultadoParaDto(totalResumo.Items),
         TotalPaginas = totalResumo.TotalPaginas,
         TotalRegistros = totalResumo.TotalRegistros
     });
 }
Example #21
0
 private PaginacaoResultadoDto <TipoAvaliacaoCompletaDto> MapearParaDtoComPaginacao(PaginacaoResultadoDto <TipoAvaliacao> tipoAvaliacaoPaginado)
 {
     if (tipoAvaliacaoPaginado == null)
     {
         tipoAvaliacaoPaginado = new PaginacaoResultadoDto <TipoAvaliacao>();
     }
     return(new PaginacaoResultadoDto <TipoAvaliacaoCompletaDto>
     {
         Items = MapearTipoAvaliacaoDtoaParaDto(tipoAvaliacaoPaginado.Items),
         TotalPaginas = tipoAvaliacaoPaginado.TotalPaginas,
         TotalRegistros = tipoAvaliacaoPaginado.TotalRegistros
     });
 }
Example #22
0
 private PaginacaoResultadoDto <AtividadeAvaliativaCompletaDto> MapearParaDtoComPaginacao(PaginacaoResultadoDto <AtividadeAvaliativa> atividadeAvaliativaPaginado)
 {
     if (atividadeAvaliativaPaginado == null)
     {
         atividadeAvaliativaPaginado = new PaginacaoResultadoDto <AtividadeAvaliativa>();
     }
     return(new PaginacaoResultadoDto <AtividadeAvaliativaCompletaDto>
     {
         Items = MapearAtividadeAvaliativaParaDto(atividadeAvaliativaPaginado.Items),
         TotalPaginas = atividadeAvaliativaPaginado.TotalPaginas,
         TotalRegistros = atividadeAvaliativaPaginado.TotalRegistros
     });
 }
        private PaginacaoResultadoDto <RegistroPoaDto> MapearListagem(PaginacaoResultadoDto <RegistroPoa> retornoquery, PaginacaoResultadoDto <RegistroPoaDto> retornoPaginado, bool nenhumItemEncontrado, IEnumerable <ProfessorResumoDto> nomes)
        {
            retornoPaginado.Items = nenhumItemEncontrado ? null : retornoquery.Items.Select(registro =>
            {
                var professor = nomes.FirstOrDefault(resumo => resumo.CodigoRF.Equals(registro.CodigoRf));

                return(MapearParaDto(registro, professor == null ? "Professor não encontrado" : professor.Nome));
            });

            return(retornoPaginado);
        }
Example #24
0
 private async Task <PaginacaoResultadoDto <PendenciaDto> > MapearParaDtoPaginado(PaginacaoResultadoDto <Pendencia> pendenciasPaginadas)
 {
     return(new PaginacaoResultadoDto <PendenciaDto>()
     {
         Items = await MapearParaDto(pendenciasPaginadas.Items),
         TotalPaginas = pendenciasPaginadas.TotalPaginas,
         TotalRegistros = pendenciasPaginadas.TotalRegistros
     });
 }
Example #25
0
        public async Task <PaginacaoResultadoDto <ProfessorCursosCadastradosDto> > ObterProfessoresCursosAsync(Paginacao paginacao, long?rf, long?turmaId, long?componenteCurricularId)
        {
            try
            {
                var query = new StringBuilder(@"DROP TABLE IF EXISTS professorTemp;
                                            DROP TABLE IF EXISTS professorTempPaginado;
                                            select distinct
                                                   u.indice,
                                                   u.google_classroom_id AS googleclassroomid,
                                                   u.id AS rf,
                                                   u.nome AS nome,
                                                   u.email AS email
                                              into temporary table professorTemp
                                              from usuarios u
                                             inner join cursos_usuarios cu on cu.usuario_id = u.indice
                                             inner join cursos c on c.id = cu.curso_id
                                             where u.usuario_tipo = @tipo
                                               and not cu.excluido");
                if (rf.HasValue && rf > 0)
                {
                    query.AppendLine(" and u.id = @rf");
                }

                if (turmaId.HasValue && turmaId > 0)
                {
                    query.AppendLine(" and c.turma_id = @turmaId");
                }

                if (componenteCurricularId.HasValue && componenteCurricularId > 0)
                {
                    query.AppendLine(" and c.componente_curricular_id = @componenteCurricularId");
                }

                query.AppendLine(";");

                query.AppendLine(" select * into temporary professorTempPaginado from professorTemp");

                if (paginacao.QuantidadeRegistros > 0)
                {
                    query.AppendLine($" OFFSET @quantidadeRegistrosIgnorados ROWS FETCH NEXT @quantidadeRegistros ROWS ONLY;");
                }

                query.AppendLine(@"select t1.rf,
                                      cu.Id as CursoUsuarioId,
                                      t1.indice,
                                      t1.nome,
                                      t1.email,
                                      t1.googleclassroomid,
                                      c.id,
                                      c.id as CursoId,
                                      c.nome,
                                      c.email,
                                      c.secao,
                                      c.turma_id as TurmaId,
                                      c.componente_curricular_id as ComponenteCurricularId
                                 from cursos c
                                inner join cursos_usuarios cu on cu.curso_id = c.id
                                inner join professorTempPaginado t1 on t1.indice = cu.usuario_id ");

                if (rf.HasValue && rf > 0)
                {
                    query.AppendLine(" and t1.rf = @rf");
                }

                if (turmaId.HasValue && turmaId > 0)
                {
                    query.AppendLine(" and c.turma_id = @turmaId");
                }

                if (componenteCurricularId.HasValue && componenteCurricularId > 0)
                {
                    query.AppendLine(" and c.componente_curricular_id = @componenteCurricularId");
                }

                query.AppendLine(";");

                query.AppendLine("select count(*) from professorTemp");

                var retorno = new PaginacaoResultadoDto <ProfessorCursosCadastradosDto>();

                var parametros = new
                {
                    paginacao.QuantidadeRegistrosIgnorados,
                    paginacao.QuantidadeRegistros,
                    tipo = UsuarioTipo.Professor,
                    rf,
                    turmaId,
                    componenteCurricularId
                };

                using var conn = ObterConexao();

                var multiResult = await conn.QueryMultipleAsync(query.ToString(), parametros);

                var dic = new Dictionary <long, ProfessorCursosCadastradosDto>();

                var Result = multiResult.Read <ProfessorCursosCadastradosDto, CursoDto, ProfessorCursosCadastradosDto>(
                    (professor, curso) =>
                {
                    if (!dic.TryGetValue(professor.Rf, out var professorResultado))
                    {
                        professor.Cursos.Add(curso);
                        dic.Add(professor.Rf, professor);
                        return(professor);
                    }

                    professorResultado.Cursos.Add(curso);

                    return(professorResultado);
                }
                    );

                retorno.Items          = dic.Values;
                retorno.TotalRegistros = multiResult.ReadFirst <int>();
                retorno.TotalPaginas   = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

                return(retorno);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #26
0
        public async Task <PaginacaoResultadoDto <FuncionarioCursosCadastradosDto> > ObterFuncionariosCursosAsync(Paginacao paginacao, long?rf, long?turmaId, long?componenteCurricularId)
        {
            var query = new StringBuilder(@"DROP TABLE IF EXISTS funcionarioTemp;
                                            DROP TABLE IF EXISTS funcionarioTempPaginado;
                                            select distinct
                                                   u.indice,
                                                   u.id AS rf,
                                                   u.nome AS nome,
                                                   u.email AS email,
                                                   u.organization_path AS organizationPath
                                              into temporary table funcionarioTemp
                                              from usuarios u
                                             inner join cursos_usuarios cu on cu.usuario_id = u.indice
                                             inner join cursos c on c.id = cu.curso_id
                                             where u.usuario_tipo = @tipo
                                               and not cu.excluido");

            if (rf.HasValue && rf > 0)
            {
                query.AppendLine(" and u.id = @rf");
            }

            if (turmaId.HasValue && turmaId > 0)
            {
                query.AppendLine(" and c.turma_id = @turmaId");
            }

            if (componenteCurricularId.HasValue && componenteCurricularId > 0)
            {
                query.AppendLine(" and c.componente_curricular_id = @componenteCurricularId");
            }

            query.AppendLine(";");

            query.AppendLine(" select * into temporary funcionarioTempPaginado from funcionarioTemp");

            if (paginacao.QuantidadeRegistros > 0)
            {
                query.AppendLine($" OFFSET @quantidadeRegistrosIgnorados ROWS FETCH NEXT @quantidadeRegistros ROWS ONLY;");
            }

            query.AppendLine(@"select t1.rf,
                                      t1.nome,
                                      t1.email,
                                      t1.organizationPath,
                                      c.id,
                                      c.id as cursoId,
                                      c.nome,
                                      c.secao,
                                      c.turma_id as turmaId,
                                      c.componente_curricular_id as componenteCurricularId
                                 from cursos c
                                inner join cursos_usuarios cu on cu.curso_id = c.id
                                inner join funcionarioTempPaginado t1 on t1.indice = cu.usuario_id");

            if (rf.HasValue && rf > 0)
            {
                query.AppendLine(" and t1.rf = @rf");
            }

            if (turmaId.HasValue && turmaId > 0)
            {
                query.AppendLine(" and c.turma_id = @turmaId");
            }

            if (componenteCurricularId.HasValue && componenteCurricularId > 0)
            {
                query.AppendLine(" and c.componente_curricular_id = @componenteCurricularId");
            }

            query.AppendLine(";");

            query.AppendLine("select count(*) from funcionarioTemp");

            var retorno = new PaginacaoResultadoDto <FuncionarioCursosCadastradosDto>();

            var parametros = new
            {
                paginacao.QuantidadeRegistrosIgnorados,
                paginacao.QuantidadeRegistros,
                tipo = UsuarioTipo.Funcionario,
                rf,
                turmaId,
                componenteCurricularId
            };

            using var conn = ObterConexao();

            var multiResult = await conn.QueryMultipleAsync(query.ToString(), parametros);

            var dic = new Dictionary <long, FuncionarioCursosCadastradosDto>();

            var Result = multiResult.Read <FuncionarioCursosCadastradosDto, CursoDto, FuncionarioCursosCadastradosDto>(
                (funcionario, curso) =>
            {
                if (!dic.TryGetValue(funcionario.Rf, out var funcionarioResultado))
                {
                    funcionario.Cursos.Add(curso);
                    dic.Add(funcionario.Rf, funcionario);
                    return(funcionario);
                }

                funcionarioResultado.Cursos.Add(curso);

                return(funcionarioResultado);
            }
                );

            retorno.Items          = dic.Values;
            retorno.TotalRegistros = multiResult.ReadFirst <int>();
            retorno.TotalPaginas   = (int)Math.Ceiling((double)retorno.TotalRegistros / paginacao.QuantidadeRegistros);

            return(retorno);
        }
Example #27
0
        private async Task ValidaProximaExecucaoAsync(AtualizacaoUsuarioGoogleClassroomIdPaginadoDto dto, PaginacaoResultadoDto <UsuarioParaAtualizacaoGoogleClassroomIdDto> resultadoPaginacao)
        {
            if (DeveBuscarAProximaPagina(dto, resultadoPaginacao))
            {
                await PublicaProximaPaginaAsync(dto);

                return;
            }

            await mediator.Send(new FinalizarAtualizacaoUsuarioGoogleClassroomIdCommand());
        }
Example #28
0
 private bool DeveBuscarAProximaPagina(AtualizacaoUsuarioGoogleClassroomIdPaginadoDto dto, PaginacaoResultadoDto <UsuarioParaAtualizacaoGoogleClassroomIdDto> resultadoPaginacao)
 => resultadoPaginacao.TotalPaginas > (dto.Pagina + 1);