/// <summary> /// Verifica se o tipo de movimentação gera transferencia de matricula do aluno. /// </summary> /// <param name="tipoMovimento">Tipo do movimento</param> /// <returns></returns> public static bool VerificarMovimentacaoTransferenciaMatriculaAluno(MTR_Movimentacao_Cadastro cadMov) { MTR_MovimentacaoDAO daoMov = new MTR_MovimentacaoDAO(); TalkDBTransaction bancoGestao = daoMov._Banco; MTR_TipoMovimentacao tmo; if (cadMov.listasFechamentoMatricula.listTipoMovimentacao != null) { // Se os dados do fechamento de matrícula forem alimentados, pegar dados do fechamento. tmo = cadMov.listasFechamentoMatricula.listTipoMovimentacao. Find(p => p.tmo_id == cadMov.entMovimentacao.tmo_id) ?? new MTR_TipoMovimentacao(); } else { tmo = new MTR_TipoMovimentacao { tmo_id = cadMov.entMovimentacao.tmo_id }; MTR_TipoMovimentacaoBO.GetEntity(tmo, daoMov._Banco); } switch ((MTR_TipoMovimentacaoTipoMovimento)tmo.tmo_tipoMovimento) { case MTR_TipoMovimentacaoTipoMovimento.MudancaTurma: case MTR_TipoMovimentacaoTipoMovimento.MudancaBlocoPEJA: case MTR_TipoMovimentacaoTipoMovimento.RenovacaoMatricula: return(true); case MTR_TipoMovimentacaoTipoMovimento.Adequacao: bool isCurriculoPeriodoEJA = ACA_CurriculoPeriodoBO.VerificaCurriculoPeriodoEJA(new ACA_CurriculoPeriodo { cur_id = cadMov.entAluCurNovo.cur_id, crr_id = cadMov.entAluCurNovo.crr_id, crp_id = cadMov.entAluCurNovo.crp_id }, bancoGestao); return(!(cadMov.entAluCurAnterior.cur_id == cadMov.entAluCurNovo.cur_id && cadMov.entAluCurAnterior.crr_id == cadMov.entAluCurNovo.crr_id && cadMov.entAluCurAnterior.crp_id == cadMov.entAluCurNovo.crp_id && isCurriculoPeriodoEJA) && cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id && cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id); case MTR_TipoMovimentacaoTipoMovimento.MudancaModalidaeEnsino: return(cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id && cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id); case MTR_TipoMovimentacaoTipoMovimento.Reclassificacao: ACA_CurriculoPeriodo entCurPerAnterior = new ACA_CurriculoPeriodo { cur_id = cadMov.entAluCurAnterior.cur_id, crr_id = cadMov.entAluCurAnterior.crr_id, crp_id = cadMov.entAluCurAnterior.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurPerAnterior, bancoGestao); ACA_CurriculoPeriodo entCurPerNovo = new ACA_CurriculoPeriodo { cur_id = cadMov.entAluCurNovo.cur_id, crr_id = cadMov.entAluCurNovo.crr_id, crp_id = cadMov.entAluCurNovo.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurPerNovo, bancoGestao); // Alterado para pegar os cursos/períodos equivalentes com o curso de destino. List <ACA_CurriculoPeriodo> listPeriodosEquivalentes = ACA_CurriculoPeriodoBO.Seleciona_PeriodosRelacionados_Equivalentes(cadMov.entAluCurNovo.cur_id, cadMov.entAluCurNovo.crr_id, cadMov.entAluCurNovo.crp_id); return(((entCurPerAnterior.cur_id == entCurPerNovo.cur_id && entCurPerAnterior.crr_id == entCurPerNovo.crr_id) || (listPeriodosEquivalentes.Count > 0 && listPeriodosEquivalentes.Exists(p => p.cur_id == entCurPerNovo.cur_id && p.crr_id == entCurPerNovo.crr_id))) && !(entCurPerAnterior.crp_ordem == entCurPerNovo.crp_ordem && ACA_CurriculoPeriodoBO.VerificaCurriculoPeriodoEJA(entCurPerNovo, bancoGestao) && entCurPerNovo.crp_turmaAvaliacao) && entCurPerAnterior.crp_ordem == entCurPerNovo.crp_ordem - 1 && cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id && cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id); default: return(false); } }