Exemplo n.º 1
0
        /// <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);
            }
        }