public ObterProfessoresDoCursoParaIncluirGoogleQuery(int anoLetivo, long turmaId, long componenteCurricularId, Infra.ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     AnoLetivo = anoLetivo;
     TurmaId   = turmaId;
     ComponenteCurricularId    = componenteCurricularId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #2
0
 public ObterFuncionariosDoCursoParaIncluirGoogleQuery(int anoLetivo, long turmaId, long componenteCurricularId, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     AnoLetivo = anoLetivo;
     TurmaId   = turmaId;
     ComponenteCurricularId    = componenteCurricularId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #3
0
 public ObterFuncionariosParaIncluirGoogleQuery(DateTime ultimaDataExecucao, Paginacao paginacao, string rf, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     UltimaDataExecucao = ultimaDataExecucao;
     Paginacao          = paginacao;
     Rf = rf;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #4
0
 public ObterGradesDeCursosQuery(DateTime ultimaDataExecucao, Paginacao paginacao, long?turmaId, long?componenteCurricularId, ParametrosCargaInicialDto parametrosCargaInicialDto)
     : this(ultimaDataExecucao, paginacao)
 {
     TurmaId = turmaId;
     ComponenteCurricularId    = componenteCurricularId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
 public ObterFuncionariosParaRemoverCursoQuery(string turmaId, DateTime dataInicio, DateTime dataFim, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     TurmaId    = turmaId;
     DataInicio = dataInicio;
     DataFim    = dataFim;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #6
0
 public ObterAlunosInativosPorAnoLetivoQuery(ParametrosCargaInicialDto parametrosCargaInicialDto, int anoLetivo, DateTime dataReferencia, long?alunoId = null)
 {
     AnoLetivo                 = anoLetivo;
     AlunoId                   = alunoId;
     DataReferencia            = dataReferencia;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        private static StringBuilder QueryBuscaRecenteAnoAluno(ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            var query = $@"
					--- 1.2 Montagem da tabela de inserção
					IF OBJECT_ID('tempdb..#tempAlunosAtivos') IS NOT NULL
						DROP TABLE #tempAlunosAtivos;
					SELECT
						DISTINCT
						NULL AS cd_aluno_classroom,
						aluno.cd_aluno AS cd_aluno_eol,
						'True' AS in_ativo,
						[dbo].[proc_gerar_unidade_organizacional_aluno](se.cd_modalidade_ensino, se.cd_etapa_ensino, ce.cd_ciclo_ensino,esc.tp_escola) AS nm_organizacao,
						0 AS email_alterado,
						1 AS AlunoRegular,
						0 AS AlunoPrograma
					INTO #tempAlunosAtivos
					FROM
						#tempAlunosMatriculasAtivas temp
					INNER JOIN
						v_aluno_cotic aluno (NOLOCK)
						ON aluno.cd_aluno = temp.cd_aluno
					INNER JOIN
						v_matricula_cotic matr (NOLOCK)
						ON aluno.cd_aluno = matr.cd_aluno AND matr.cd_matricula = temp.cd_matricula
					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
					INNER JOIN
						serie_turma_grade stg (NOLOCK)
						ON stg.cd_turma_escola = te.cd_turma_escola
					INNER JOIN
						serie_ensino se (NOLOCK)
						ON se.cd_serie_ensino = stg.cd_serie_ensino
					INNER JOIN
						etapa_ensino ee (NOLOCK)
						ON se.cd_etapa_ensino = ee.cd_etapa_ensino and ee.cd_modalidade_ensino = se.cd_modalidade_ensino
					INNER JOIN
						ciclo_ensino ce (NOLOCK)
						on ce.cd_etapa_ensino = ee.cd_etapa_ensino and ce.cd_modalidade_ensino = ee.cd_modalidade_ensino and ce.cd_ciclo_ensino = se.cd_ciclo_ensino
					WHERE
						matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
						and mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
						and matr.an_letivo = @anoLetivo"                        ;

            var queryBuilder = new StringBuilder(query);

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

            return(queryBuilder);
        }
 public ObterAlunosCodigosInativosPorAnoLetivoETurmaQuery(int anoLetivo, long turmaId, DateTime dataInicio, DateTime dataFim, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     AnoLetivo  = anoLetivo;
     TurmaId    = turmaId;
     DataInicio = dataInicio;
     DataFim    = dataFim;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #9
0
 public ObterCursosIncluirGoogleQuery(ParametrosCargaInicialDto parametrosCargaInicialDto, DateTime?ultimaExecucao, Paginacao paginacao, long?componenteCurricularId, long?turmaId)
 {
     UltimaExecucao         = ultimaExecucao;
     Paginacao              = paginacao;
     ComponenteCurricularId = componenteCurricularId;
     TurmaId = turmaId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
 public ObterCursosExtintosPorPeriodoPaginadoQuery(ParametrosCargaInicialDto parametrosCargaInicialDto, DateTime dataInicio, DateTime dataFim, int anoLetivo, long?turmaId, Paginacao paginacao)
 {
     DataInicio = dataInicio;
     DataFim    = dataFim;
     AnoLetivo  = anoLetivo;
     TurmaId    = turmaId;
     Paginacao  = paginacao;
 }
Example #11
0
 public ObterAlunosQueSeraoRemovidosPorAnoLetivoETurmaQuery(ParametrosCargaInicialDto parametrosCargaInicialDto, Paginacao paginacao, int anoLetivo, long turmaId, DateTime dataReferencia, bool ehDataReferenciaPrincipal)
 {
     Paginacao                 = paginacao;
     AnoLetivo                 = anoLetivo;
     TurmaId                   = turmaId;
     DataReferencia            = dataReferencia;
     EhDataReferenciaPrincipal = ehDataReferenciaPrincipal;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        private static StringBuilder QueryAgrupaBuscaRecenteAnoAluno(ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            string query = $@" 
					-- 2.1 Montagem da tabela de inserção
					IF OBJECT_ID('tempdb..#tempAlunosProgramaAtivos') IS NOT NULL
						DROP TABLE #tempAlunosProgramaAtivos;
					SELECT
						DISTINCT
						NULL AS cd_aluno_classroom,
						aluno.cd_aluno AS cd_aluno_eol,
						'True' AS in_ativo,
						CASE WHEN esc.tp_escola = 23 THEN '/Alunos/PROFISSIONAL' ELSE '/Alunos/PROGRAMA' END AS nm_organizacao,
						0 AS email_alterado,
						0 AS AlunoRegular,
						1 AS AlunoPrograma
					INTO #tempAlunosProgramaAtivos
					FROM
						#tempAlunosMatriculasProgramaAtivas temp
					INNER JOIN
						v_aluno_cotic aluno (NOLOCK)
						ON aluno.cd_aluno = temp.cd_aluno
					INNER JOIN
						v_matricula_cotic matr (NOLOCK)
						ON aluno.cd_aluno = matr.cd_aluno AND matr.cd_matricula = temp.cd_matricula
					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
						matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
						and mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
						and matr.an_letivo = @anoLetivo"                        ;

            var queryBuilder = new StringBuilder(query);

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

            return(queryBuilder);
        }
        private static string MontaQueryAlunosParaInclusao(Paginacao paginacao, DateTime?dataReferecia, long?codigoEol, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            var queryBuscaMatriculasRegular = QueryBuscaMatriculaRegular(dataReferecia, codigoEol, parametrosCargaInicialDto);

            var queryBuscaRecenteAnoAluno = QueryBuscaRecenteAnoAluno(parametrosCargaInicialDto);

            var queryBuscaMatriculas = QueryBuscaMatriculasPrograma(dataReferecia, codigoEol, parametrosCargaInicialDto);

            var queryAgrupaBuscaRecenteAnoAluno = QueryAgrupaBuscaRecenteAnoAluno(parametrosCargaInicialDto);

            var queryUniaoTopMatricula = QueryUniaoTopMatricula(paginacao);

            return($@"
					{queryBuscaMatriculasRegular}
					{queryBuscaRecenteAnoAluno}
					{queryBuscaMatriculas}
					{queryAgrupaBuscaRecenteAnoAluno}
					{queryUniaoTopMatricula}
				"                );
        }
        public async Task <IEnumerable <FuncionarioCursoEol> > ObterCursosDoFuncionarioParaIncluirAsync(long?rf, int anoLetivo, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            using var conn = ObterConexao();

            const string queryFuncionariosPorCargoFixo = @"
				DECLARE @cargoCP AS INT = 3379;
				DECLARE @cargoAD AS INT = 3085;
				DECLARE @cargoDiretor AS INT = 3360;
				DECLARE @tipoFuncaoPAP AS INT = 30;
				DECLARE @tipoFuncaoPAEE AS INT = 6;
				DECLARE @tipoFuncaoCIEJAASSISTPED AS INT = 42;
				DECLARE @tipoFuncaoCIEJAASSISTCOORD AS INT = 43;
				DECLARE @tipoFuncaoCIEJACOORD AS INT = 44; 

				-- 1. Busca os funcionários por cargo fixo
				IF OBJECT_ID('tempdb..#tempServidorCargosBase') IS NOT NULL
					DROP TABLE #tempServidorCargosBase;
				SELECT
					serv.cd_registro_funcional AS Rf,
					esc.cd_escola AS CdUe,
					cbc.cd_cargo AS CdCagoFuncao,
					cbc.cd_cargo_base_servidor
				INTO #tempServidorCargosBase
				FROM
					v_servidor_cotic serv (NOLOCK)
				INNER JOIN
					v_cargo_base_cotic cbc (NOLOCK)
					ON serv.cd_servidor = cbc.cd_servidor
				INNER JOIN
					lotacao_servidor ls (NOLOCK)
					ON ls.cd_cargo_base_servidor = cbc.cd_cargo_base_servidor
				INNER JOIN
					escola esc
					ON ls.cd_unidade_educacao = esc.cd_escola
				WHERE
					serv.cd_registro_funcional = @rf
					AND dt_fim_nomeacao IS NULL
					AND (ls.dt_fim IS NULL OR ls.dt_fim > GETDATE())"                    ;

            var queryBuscafuncionarioPorCargoFixoStringBuilder = new StringBuilder(queryFuncionariosPorCargoFixo);

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

            const string queryFuncionariosPorCargoSobrepostoFixo = @"
				-- 2. Busca os funcionários por cargo sobreposto fixo

				IF OBJECT_ID('tempdb..#tempServidorCargosSobrepostos') IS NOT NULL
					DROP TABLE #tempServidorCargosSobrepostos;
				SELECT
					serv.cd_registro_funcional AS Rf, 
					css.cd_unidade_local_servico AS CdUe,
					css.cd_cargo AS CdCagoFuncao,
					cbc.cd_cargo_base_servidor
				INTO #tempServidorCargosSobrepostos
				FROM
					v_servidor_cotic serv (NOLOCK)
				INNER JOIN
					v_cargo_base_cotic cbc (NOLOCK)
					ON serv.cd_servidor = cbc.cd_servidor
				INNER JOIN
					cargo_sobreposto_servidor css (NOLOCK)
					ON cbc.cd_cargo_base_servidor = css.cd_cargo_base_servidor
				INNER JOIN
					escola esc 
					ON css.cd_unidade_local_servico = esc.cd_escola
				WHERE
					serv.cd_registro_funcional = @rf
					AND (css.dt_fim_cargo_sobreposto IS NULL OR css.dt_fim_cargo_sobreposto > GETDATE())"                    ;

            var queryBuscafuncionarioPorCargoSobrepostoStringBuilder = new StringBuilder(queryFuncionariosPorCargoSobrepostoFixo);

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

            const string queryFuncionariosPorFuncionarios = @"
				-- 3. Busca os funcionários por função

				IF OBJECT_ID('tempdb..#tempServidorFuncao') IS NOT NULL
					DROP TABLE #tempServidorFuncao;
				SELECT
					serv.cd_registro_funcional AS Rf, 
					esc.cd_escola AS CdUe,
					facs.cd_tipo_funcao AS CdCagoFuncao,
					cbc.cd_cargo_base_servidor
				INTO #tempServidorFuncao
				FROM
					v_servidor_cotic serv (NOLOCK)
				INNER JOIN
					v_cargo_base_cotic cbc (NOLOCK)
					ON serv.cd_servidor = cbc.cd_servidor
				INNER JOIN
					funcao_atividade_cargo_servidor facs (NOLOCK)
					ON cbc.cd_cargo_base_servidor = facs.cd_cargo_base_servidor
				INNER JOIN
					escola esc 
					ON facs.cd_unidade_local_servico = esc.cd_escola
				WHERE
					serv.cd_registro_funcional = @rf
					AND (facs.dt_fim_funcao_atividade IS NULL OR facs.dt_fim_funcao_atividade > GETDATE())
					AND dt_fim_nomeacao IS NULL"                    ;

            var queryBuscafuncionarioPorFuncaoStringBuilder = new StringBuilder(queryFuncionariosPorFuncionarios);

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

            const string queryMain = @"
				IF OBJECT_ID('tempdb..#tempServidorCargos') IS NOT NULL
					DROP TABLE #tempServidorCargos;
				SELECT
					base.Rf,
					CASE
						WHEN NOT sobreposto.CdCagoFuncao IS NULL THEN sobreposto.CdCagoFuncao
						WHEN NOT funcao.CdCagoFuncao IS NULL THEN funcao.CdCagoFuncao
						ELSE base.CdCagoFuncao
					END AS CdCagoFuncao,
					CASE
						WHEN NOT sobreposto.CdUe IS NULL THEN sobreposto.CdUe
						WHEN NOT funcao.CdUe IS NULL THEN funcao.CdUe
						ELSE base.CdUe
					END AS CdUe
				INTO #tempServidorCargos
				FROM
					#tempServidorCargosBase base
				LEFT JOIN
					#tempServidorCargosSobrepostos sobreposto
					ON base.cd_cargo_base_servidor = sobreposto.cd_cargo_base_servidor
				LEFT JOIN
					#tempServidorFuncao funcao
					ON base.cd_cargo_base_servidor = funcao.cd_cargo_base_servidor;

				IF OBJECT_ID('tempdb..#tempServidorCargoFinal') IS NOT NULL
					DROP TABLE #tempServidorCargoFinal;
				SELECT
					*
				INTO #tempServidorCargoFinal
				FROM
					#tempServidorCargos
				WHERE
					CdCagoFuncao IN (@cargoCP, @cargoAD, @cargoDiretor, @tipoFuncaoPAP, @tipoFuncaoPAEE, @tipoFuncaoCIEJAASSISTPED, @tipoFuncaoCIEJAASSISTCOORD, @tipoFuncaoCIEJACOORD);

				IF OBJECT_ID('tempdb..#tempTurmasComponentesRegulares') IS NOT NULL 
					DROP TABLE #tempTurmasComponentesRegulares
				SELECT
					DISTINCT
					CASE
						WHEN etapa_ensino.cd_etapa_ensino = 1 THEN 512
					ELSE
						cc.cd_componente_curricular
					END ComponenteCurricularId,
					te.cd_turma_escola TurmaId,
					ue.cd_unidade_educacao AS CdUe	
				INTO #tempTurmasComponentesRegulares
				FROM
					#tempServidorCargoFinal temp
				INNER JOIN
					turma_escola te (NOLOCK)
					ON temp.CdUe = te.cd_escola
				INNER JOIN
					escola esc (NOLOCK) 
					ON te.cd_escola = esc.cd_escola
				INNER JOIN
					v_cadastro_unidade_educacao ue (NOLOCK) 
					ON ue.cd_unidade_educacao = esc.cd_escola
				INNER JOIN
					tipo_escola tpe (NOLOCK) 
					ON esc.tp_escola = tpe.tp_escola
				INNER JOIN
					unidade_administrativa dre (NOLOCK) 
					ON ue.cd_unidade_administrativa_referencia = dre.cd_unidade_administrativa	
				INNER JOIN
					serie_turma_escola (NOLOCK) 
					ON serie_turma_escola.cd_turma_escola = te.cd_turma_escola
				INNER JOIN
					serie_turma_grade (NOLOCK) 
					ON serie_turma_grade.cd_turma_escola = serie_turma_escola.cd_turma_escola AND serie_turma_grade.dt_fim IS NULL
				INNER JOIN
					escola_grade (NOLOCK) 
					ON serie_turma_grade.cd_escola_grade = escola_grade.cd_escola_grade
				INNER JOIN
					grade (NOLOCK) 
					ON escola_grade.cd_grade = grade.cd_grade
				INNER JOIN
					grade_componente_curricular gcc (NOLOCK) 
					ON gcc.cd_grade = grade.cd_grade
				INNER JOIN
					componente_curricular cc (NOLOCK) 
					ON cc.cd_componente_curricular = gcc.cd_componente_curricular AND cc.dt_cancelamento IS NULL
				INNER JOIN
					serie_ensino (NOLOCK) 
					ON grade.cd_serie_ensino = serie_ensino.cd_serie_ensino
				INNER JOIN
					etapa_ensino (NOLOCK) 
					ON serie_ensino.cd_etapa_ensino = etapa_ensino.cd_etapa_ensino
				WHERE  
					te.an_letivo = @anoLetivo
					AND	  te.st_turma_escola in ('O', 'A', 'C')								
					AND   (serie_turma_grade.dt_fim IS NULL OR serie_turma_grade.dt_fim >= GETDATE())"                    ;

            var queryMainStringBuilder = new StringBuilder(queryMain);


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

            var query = $@"
					{queryBuscafuncionarioPorCargoFixoStringBuilder}
					{queryBuscafuncionarioPorCargoSobrepostoStringBuilder}
					{queryBuscafuncionarioPorFuncaoStringBuilder}
					{queryMainStringBuilder}
			SELECT
				servidor.Rf,
				cursos.TurmaId,
				cursos.ComponenteCurricularId,
				cursos.CdUe AS UeCodigo
			FROM
				#tempServidorCargoFinal servidor
			INNER JOIN
				#tempTurmasComponentesRegulares cursos
				ON servidor.CdUe = cursos.CdUe;"                ;


            return(await conn.QueryAsync <FuncionarioCursoEol>(query, new {
                rf,
                anoLetivo,
                TiposUes = parametrosCargaInicialDto.TiposUes,
                parametrosCargaInicialDto.Ues,
                parametrosCargaInicialDto.Turmas,
            }));
        }
        public async Task <IEnumerable <AlunoCursoEol> > ObterCursosDoAlunoParaIncluirAsync(long codigoAluno, int anoLetivo, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            using var conn = ObterConexao();

            const string queryBuscaMatriculas = @"
								DECLARE @situacaoAtivo AS CHAR = 1;
								DECLARE @situacaoPendenteRematricula AS CHAR = 6;
								DECLARE @situacaoRematriculado AS CHAR = 10;
								DECLARE @situacaoSemContinuidade AS CHAR = 13;

								DECLARE @situacaoAtivoInt AS INT = 1;
								DECLARE @situacaoPendenteRematriculaInt AS INT = 6;
								DECLARE @situacaoRematriculadoInt AS INT = 10;
								DECLARE @situacaoSemContinuidadeInt AS INT = 13;

								-- 1. Busca matrículas regulares
								IF OBJECT_ID('tempdb..#tempAlunosMatriculasRegularesAtivas') IS NOT NULL
									DROP TABLE #tempAlunosMatriculasRegularesAtivas;
								SELECT
									a.cd_aluno,
									te.cd_turma_escola
								INTO #tempAlunosMatriculasRegularesAtivas
								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
									a.cd_aluno = @codigoAluno
									AND matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
									AND mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
									AND matr.an_letivo = @anoLetivo
									AND te.st_turma_escola in ('O', 'A', 'C')									
									AND te.an_letivo = @anoLetivo
									AND NOT cd_serie_ensino IS NULL; "                                    ;

            string queryBuscaCursosTurmas = $@"
								-- 1.1 Busca os cursos das turmas
								IF OBJECT_ID('tempdb..#tempTurmasComponentesRegulares') IS NOT NULL
									DROP TABLE #tempTurmasComponentesRegulares
								SELECT
									DISTINCT
									temp.cd_aluno AS CodigoAluno,
									CASE
										WHEN etapa_ensino.cd_etapa_ensino = 1 THEN 512
									ELSE
										cc.cd_componente_curricular
									END ComponenteCurricularId,
									te.cd_turma_escola TurmaId,
									te.cd_escola AS UeCodigo
								INTO #tempTurmasComponentesRegulares
								FROM
									#tempAlunosMatriculasRegularesAtivas temp
								INNER JOIN
									turma_escola te (NOLOCK)
									ON temp.cd_turma_escola = te.cd_turma_escola
								INNER JOIN
									escola esc (NOLOCK)
									ON te.cd_escola = esc.cd_escola
								INNER JOIN
									v_cadastro_unidade_educacao ue (NOLOCK)
									ON ue.cd_unidade_educacao = esc.cd_escola
								INNER JOIN
									tipo_escola tpe (NOLOCK)
									ON esc.tp_escola = tpe.tp_escola
								INNER JOIN
									unidade_administrativa dre (NOLOCK)
									ON ue.cd_unidade_administrativa_referencia = dre.cd_unidade_administrativa
								INNER JOIN
									serie_turma_escola (NOLOCK)
									ON serie_turma_escola.cd_turma_escola = te.cd_turma_escola
								INNER JOIN
									serie_turma_grade (NOLOCK)
									ON serie_turma_grade.cd_turma_escola = serie_turma_escola.cd_turma_escola AND serie_turma_grade.dt_fim IS NULL
								INNER JOIN
									escola_grade (NOLOCK)
									ON serie_turma_grade.cd_escola_grade = escola_grade.cd_escola_grade
								INNER JOIN
									grade (NOLOCK)
									ON escola_grade.cd_grade = grade.cd_grade
								INNER JOIN
									grade_componente_curricular gcc (NOLOCK)
									ON gcc.cd_grade = grade.cd_grade
								INNER JOIN
									componente_curricular cc (NOLOCK)
									ON cc.cd_componente_curricular = gcc.cd_componente_curricular AND cc.dt_cancelamento IS NULL
								INNER JOIN
									serie_ensino (NOLOCK)
									ON grade.cd_serie_ensino = serie_ensino.cd_serie_ensino
								INNER JOIN
									etapa_ensino (NOLOCK)
									ON serie_ensino.cd_etapa_ensino = etapa_ensino.cd_etapa_ensino
								WHERE
									(serie_turma_grade.dt_fim IS NULL OR serie_turma_grade.dt_fim >= GETDATE())"                                    ;

            string queryBuscaProgramas = $@"-- 2. Busca matrículas de programa
								IF OBJECT_ID('tempdb..#tempAlunosMatriculasProgramaAtivas') IS NOT NULL
									DROP TABLE #tempAlunosMatriculasProgramaAtivas;
								SELECT
									a.cd_aluno,
									te.cd_turma_escola
								INTO #tempAlunosMatriculasProgramaAtivas
								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
									a.cd_aluno = @codigoAluno
									AND matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
									AND mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
									AND matr.an_letivo = @anoLetivo
									AND te.st_turma_escola in ('O', 'A', 'C')									
									AND te.an_letivo = @anoLetivo
									AND NOT matr.cd_tipo_programa IS NULL;"                                    ;

            var queryBuscaMatriculasBuilder = new StringBuilder(queryBuscaMatriculas);

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

            var queryBuscaCursosTurmasBuider = new StringBuilder(queryBuscaCursosTurmas);

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

            var queryBuscaProgramasBuilder = new StringBuilder(queryBuscaProgramas);

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

            string query = $@"	{queryBuscaMatriculas}
								{queryBuscaCursosTurmas}
								{queryBuscaProgramas}
								-- 2.1 Busca os cursos das turmas
								IF OBJECT_ID('tempdb..#tempTurmasComponentesPrograma') IS NOT NULL
									DROP TABLE #tempTurmasComponentesPrograma
								SELECT
									DISTINCT
									temp.cd_aluno AS CodigoAluno,
									pcc.cd_componente_curricular AS ComponenteCurricularId,
									te.cd_turma_escola TurmaId,
									te.cd_escola AS UeCodigo
								INTO #tempTurmasComponentesPrograma
								FROM
									#tempAlunosMatriculasProgramaAtivas temp
								INNER JOIN
									turma_escola te (NOLOCK)
									ON te.cd_turma_escola = temp.cd_turma_escola
								INNER JOIN
									escola esc (NOLOCK)
									ON te.cd_escola = esc.cd_escola
								INNER JOIN
									v_cadastro_unidade_educacao ue (NOLOCK)
									ON ue.cd_unidade_educacao = esc.cd_escola
								INNER JOIN
									tipo_escola tpe (NOLOCK)
									ON esc.tp_escola = tpe.tp_escola
								INNER JOIN
									unidade_administrativa dre (NOLOCK)
									ON ue.cd_unidade_administrativa_referencia = dre.cd_unidade_administrativa
								LEFT JOIN
									tipo_programa tp (NOLOCK)
									ON te.cd_tipo_programa = tp.cd_tipo_programa
								INNER JOIN
									turma_escola_grade_programa tegp (NOLOCK)
									ON tegp.cd_turma_escola = te.cd_turma_escola
								INNER JOIN
									escola_grade teg (NOLOCK)
									ON teg.cd_escola_grade = tegp.cd_escola_grade
								INNER JOIN
									grade pg (NOLOCK) ON pg.cd_grade = teg.cd_grade
								INNER JOIN
									grade_componente_curricular pgcc (NOLOCK)
									ON pgcc.cd_grade = teg.cd_grade
								INNER JOIN
									componente_curricular pcc (NOLOCK)
									ON pgcc.cd_componente_curricular = pcc.cd_componente_curricular and pcc.dt_cancelamento is null
								WHERE
									(tegp.dt_fim IS NULL OR tegp.dt_fim >= GETDATE());

								SELECT
									*
								FROM
									(SELECT * FROM #tempTurmasComponentesRegulares) AS Regulares
								UNION
									(SELECT * FROM #tempTurmasComponentesPrograma);"                                    ;

            return(await conn.QueryAsync <AlunoCursoEol>(query, new {
                codigoAluno,
                anoLetivo,
                TiposUes = parametrosCargaInicialDto.TiposUes,
                parametrosCargaInicialDto.Ues,
                parametrosCargaInicialDto.Turmas,
            }));
        }
Example #16
0
 public ObterCursosParaArquivarPorAnoPaginadoQuery(int anoLetivo, Paginacao paginacao, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     AnoLetivo = anoLetivo;
     Paginacao = paginacao;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        private static StringBuilder QueryBuscaMatriculasPrograma(DateTime?dataReferecia, long?codigoEol, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            string query = $@"
					-- 2. Busca matrículas de programa
					IF OBJECT_ID('tempdb..#tempAlunosMatriculasProgramaAtivas') IS NOT NULL
						DROP TABLE #tempAlunosMatriculasProgramaAtivas;
					SELECT
						aluno.cd_aluno,
						max(matr.cd_matricula) cd_matricula,
						max(matr.dt_status_matricula) dt_status_matricula
					INTO #tempAlunosMatriculasProgramaAtivas
					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
						matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
						AND mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
						AND matr.an_letivo = @anoLetivo
						AND te.st_turma_escola in ('O', 'A', 'C')
						AND te.an_letivo = @anoLetivo
						AND NOT matr.cd_tipo_programa IS NULL
						{(codigoEol.HasValue ? @"AND aluno.cd_aluno = @codigoEol " : " ")} "                        ;

            var queryBuilder = new StringBuilder(query);

            queryBuilder.AdicionarCondicaoIn(parametrosCargaInicialDto.TiposUes, "esc.tp_escola", nameof(parametrosCargaInicialDto.TiposUes));
            queryBuilder.AdicionarCondicaoIn(parametrosCargaInicialDto.Ues, "te.cd_escola", nameof(parametrosCargaInicialDto.Ues));
            queryBuilder.AdicionarCondicaoIn(parametrosCargaInicialDto.Turmas, "te.cd_turma_escola", nameof(parametrosCargaInicialDto.Turmas));
            queryBuilder.AppendLine("GROUP BY aluno.cd_aluno;");

            return(queryBuilder);
        }
        public async Task <PaginacaoResultadoDto <AlunoEol> > ObterAlunosParaInclusaoAsync(Paginacao paginacao, int anoLetivo, DateTime?dataReferencia, long?codigoEol, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            dataReferencia = dataReferencia?.Add(new TimeSpan(0, 0, 0));

            var query = MontaQueryAlunosParaInclusao(paginacao, dataReferencia, codigoEol, parametrosCargaInicialDto);

            using var conn = ObterConexao();

            using var multi = await conn.QueryMultipleAsync(query,
                                                            new
            {
                anoLetivo,
                pagina = paginacao.Pagina,
                quantidadeRegistros = paginacao.QuantidadeRegistros,
                codigoEol,
                TiposUes = parametrosCargaInicialDto.TiposUes,
                parametrosCargaInicialDto.Ues,
                parametrosCargaInicialDto.Turmas,
            }, commandTimeout : 120);

            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);
        }
Example #19
0
 public ObterTurmasConcluidasPorAnoLetivoQuery(ParametrosCargaInicialDto parametrosCargaInicialDto, int anoLetivo, long?turmaId)
 {
     AnoLetivo = anoLetivo;
     TurmaId   = turmaId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
 public ObterProfessorParaTratamentoDeErroQuery(long rf, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     Rf = rf;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #21
0
 public ArquivarTurmasCommand(ParametrosCargaInicialDto parametrosCargaInicialDto, int anoLetivo, long?turmaId = null)
 {
     AnoLetivo = anoLetivo;
     TurmaId   = turmaId;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
Example #22
0
 public ObterFuncionarioParaTratamentoDeErroQuery(long rf, Infra.ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     Rf = rf;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        public async Task <IEnumerable <long> > ObterCodigosAlunosInativosPorAnoLetivo(ParametrosCargaInicialDto parametrosCargaInicialDto, int anoLetivo, DateTime dataReferencia, long?alunoId)
        {
            try
            {
                var query = new StringBuilder(@"
							   SELECT DISTINCT a.cd_aluno AS CodigoAluno 
							   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 where an_letivo >= matr.an_letivo and st_matricula IN(1,6,10,13) and cd_aluno = a.cd_aluno) "                                    );

                if (alunoId != null && alunoId > 0)
                {
                    query.AppendLine("AND a.cd_aluno = @alunoId ");
                }

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

                using var conn = ObterConexao();
                return(await conn.QueryAsync <long>(query.ToString(), new {
                    anoLetivo,
                    dataReferencia,
                    alunoId,
                    TiposUes = parametrosCargaInicialDto.TiposUes,
                    parametrosCargaInicialDto.Ues,
                    parametrosCargaInicialDto.Turmas,
                }));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public ObterCursosDoFuncionarioParaIncluirGoogleQuery(long rf, int anoLetivo, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     Rf        = rf;
     AnoLetivo = anoLetivo;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        public async Task <IEnumerable <long> > ObterAlunosCodigosInativosPorAnoLetivoETurma(int anoLetivo, long turmaId, DateTime dataInicio, DateTime dataFim, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            var query = @"
				SELECT
					DISTINCT
					a.cd_aluno AS CodigoAluno
				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
					AND te.cd_turma_escola = @turmaId 
					AND mte.dt_situacao_aluno between @dataInicio and @dataFim 
					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)"                                                    ;

            var sql = new StringBuilder(query);

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

            using var conn = ObterConexao();
            return(await conn.QueryAsync <long>(sql.ToString(), new {
                turmaId,
                anoLetivo,
                dataInicio,
                dataFim,
                TiposUes = parametrosCargaInicialDto.TiposUes,
                parametrosCargaInicialDto.Ues,
                parametrosCargaInicialDto.Turmas,
            }));
        }
        public async Task <AlunoEol> ObterAlunoParaTratamentoDeErroAsync(long codigoEol, int anoLetivo, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            var query = MontaQueryAlunosParaInclusao(null, null, codigoEol, parametrosCargaInicialDto);

            using var conn = ObterConexao();
            return(await conn.QuerySingleOrDefaultAsync <AlunoEol>(query,
                                                                   new
            {
                anoLetivo = anoLetivo,
                codigoEol,
                TiposUes = parametrosCargaInicialDto.TiposUes,
                parametrosCargaInicialDto.Ues,
                parametrosCargaInicialDto.Turmas,
            }, commandTimeout : 6000));
        }
        private static StringBuilder QueryBuscaMatriculaRegular(DateTime?dataReferecia, long?codigoEol, ParametrosCargaInicialDto parametrosCargaInicialDto)
        {
            string query =
                $@"DECLARE @situacaoAtivo AS CHAR = 1;
					DECLARE @situacaoPendenteRematricula AS CHAR = 6;
					DECLARE @situacaoRematriculado AS CHAR = 10;
					DECLARE @situacaoSemContinuidade AS CHAR = 13;

					DECLARE @situacaoAtivoInt AS INT = 1;
					DECLARE @situacaoPendenteRematriculaInt AS INT = 6;
					DECLARE @situacaoRematriculadoInt AS INT = 10;
					DECLARE @situacaoSemContinuidadeInt AS INT = 13;

					-- 1. Busca matrículas regulares
					IF OBJECT_ID('tempdb..#tempAlunosMatriculasAtivas') IS NOT NULL
						DROP TABLE #tempAlunosMatriculasAtivas;
					SELECT
						aluno.cd_aluno,
						matr.cd_matricula,
						matr.dt_status_matricula
					INTO #tempAlunosMatriculasAtivas
					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
						matr.st_matricula IN (@situacaoAtivo, @situacaoPendenteRematricula, @situacaoRematriculado, @situacaoSemContinuidade)
						AND mte.cd_situacao_aluno IN (@situacaoAtivoInt, @situacaoPendenteRematriculaInt, @situacaoRematriculadoInt, @situacaoSemContinuidadeInt)
						AND matr.an_letivo = @anoLetivo
						{(dataReferecia.HasValue ? "AND matr.dt_status_matricula >= @dataReferencia " : "")}
						AND te.st_turma_escola in ('O', 'A', 'C')											
						AND te.an_letivo = @anoLetivo
						AND NOT cd_serie_ensino IS NULL

						{(codigoEol.HasValue ? @"AND aluno.cd_aluno = @codigoEol " : " ")}"                        ;

            var queryBuilder = new StringBuilder(query);

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

            return(queryBuilder);
        }
 public ObterCursosDoAlunoParaIncluirGoogleQuery(long codigoAluno, int anoLetivo, ParametrosCargaInicialDto parametrosCargaInicialDto)
 {
     CodigoAluno = codigoAluno;
     AnoLetivo   = anoLetivo;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }
        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 ArquivarTurmasExtintasCommand(ParametrosCargaInicialDto parametrosCargaInicialDto, long?turmaId = null, DateTime?dataReferencia = null)
 {
     TurmaId                   = turmaId;
     DataReferencia            = dataReferencia;
     ParametrosCargaInicialDto = parametrosCargaInicialDto;
 }