Example #1
0
        /// <summary>
        /// Validação da data de movimentação, pois a data atual não pode ser anterior a última.
        /// </summary>
        /// <param name="dataMovimentacao">Data da movimentação</param>
        /// <param name="alu_id">Id do aluno</param>
        /// <param name="ent_id">Id da entidade</param>
        /// <param name="tmo_id">Id do tipo de movimentação</param>
        /// <param name="bancoGestao">Conexão aberta com o banco de dados</param>
        /// <param name="listasFechamentoMatricula">Listas carregadas com dados do fechamento de matrícula</param>
        public static void ValidaDataMovimentacao
        (
            DateTime dataMovimentacao,
            long alu_id,
            Guid ent_id,
            int tmo_id,
            TalkDBTransaction bancoGestao,
            FormacaoTurmaBO.ListasFechamentoMatricula listasFechamentoMatricula = null
        )
        {
            dataMovimentacao = dataMovimentacao == new DateTime() ? DateTime.Now : dataMovimentacao;

            // Recupera o último currículo do aluno, caso exista.
            ACA_AlunoCurriculo entityUltimoAlunoCurriculo;

            ACA_AlunoCurriculoBO.CarregaUltimoCurriculo(alu_id, out entityUltimoAlunoCurriculo);

            MTR_TipoMovimentacao tmo = null;

            if (listasFechamentoMatricula != null && listasFechamentoMatricula.listTipoMovimentacao != null)
            {
                // Se a lista de fechamento de matrícula foi passada, busca o tipo de movimentação dela ao invés de dar GetEntity.
                tmo = listasFechamentoMatricula.listTipoMovimentacao.
                      Find(p => p.tmo_id == tmo_id);
            }

            if (tmo == null)
            {
                tmo = new MTR_TipoMovimentacao
                {
                    tmo_id = tmo_id
                };
                MTR_TipoMovimentacaoBO.GetEntity(tmo, bancoGestao);
            }

            // Verifica a data da movimentação, necessário no caso  de ações retroativas.
            if ((entityUltimoAlunoCurriculo.alc_dataPrimeiraMatricula != new DateTime()) && (entityUltimoAlunoCurriculo.alc_dataPrimeiraMatricula.Date > dataMovimentacao.Date) ||
                (entityUltimoAlunoCurriculo.alc_dataSaida != new DateTime()) && (entityUltimoAlunoCurriculo.alc_dataSaida.Date > dataMovimentacao.Date))
            {
                throw new ValidationException("Data da movimentação não pode ser anterior à data da última matrícula do aluno.");
            }

            DateTime dataRealizacaoUltimaMovimentacao = MTR_TipoMovimentacaoBO.SelecionaDataRealizacaoUltimaMovimentacao(alu_id, bancoGestao);

            if (dataRealizacaoUltimaMovimentacao != new DateTime() && dataMovimentacao.Date < dataRealizacaoUltimaMovimentacao.Date)
            {
                throw new ValidationException("Data da movimentação não pode ser anterior à data da última movimentação do aluno.");
            }

            if ((MTR_TipoMovimentacaoTipoMovimento)tmo.tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.Falecimento && dataMovimentacao.Date > DateTime.Now.Date)
            {
                throw new ValidationException("Data da movimentação deve ser menor ou igual à " + DateTime.Now.ToString("dd/MM/yyyy") + ".");
            }
        }
Example #2
0
        /// <summary>
        /// Valida os dados necessários para realizar qualquer movimentação.
        /// Dispara uma ValidationException caso haja algum problema.
        /// </summary>
        /// <param name="cadMov">Entidade de cadastro de movimentação</param>
        /// <param name="alu">Entidade do aluno</param>
        /// <param name="tmo">Entidade tipo de movimentação</param>
        /// <param name="bancoGestao">Transação com banco - obrigatório</param>
        private static void ValidaDadosMovimentacao(MTR_Movimentacao_Cadastro cadMov, MTR_TipoMovimentacao tmo, ACA_Aluno alu, TalkDBTransaction bancoGestao)
        {
            bool isValidInicioMovimentacao;
            bool isValidFechamentoMovimentacao;

            // Valida se está no momento configurado na movimentação.
            MTR_TipoMovimentacaoBO.VerificaPeriodoValidoMovimentacao(cadMov.entMatTurAnterior,
                                                                     cadMov.entAluCurAnterior,
                                                                     cadMov.entMovimentacao.tmo_id,
                                                                     bancoGestao,
                                                                     cadMov.entMovimentacao.mov_dataRealizacao,
                                                                     out isValidInicioMovimentacao,
                                                                     out isValidFechamentoMovimentacao,
                                                                     cadMov.listasFechamentoMatricula);

            if (!isValidInicioMovimentacao)
            {
                throw new ValidationException("Não é possível realizar esse tipo de movimentação nesse momento do calendário escolar.");
            }

            if ((cadMov.entMatTurNovo != null) && (cadMov.entMatTurNovo.tur_id > 0))
            {
                // Verificar se a turma que o aluno vai entrar é do tipo 1-Normal.
                TUR_Turma entTurmaDestino = null;
                if (cadMov.listasFechamentoMatricula.listTurma != null)
                {
                    // Se a lista de fechamento foi alimentada, buscar entidade da lista.
                    entTurmaDestino = cadMov.listasFechamentoMatricula.listTurma.Find(p => p.tur_id == cadMov.entMatTurNovo.tur_id);
                }

                if (entTurmaDestino == null)
                {
                    entTurmaDestino = new TUR_Turma
                    {
                        tur_id = cadMov.entMatTurNovo.tur_id
                    };
                    TUR_TurmaBO.GetEntity(entTurmaDestino, bancoGestao);
                }

                if (entTurmaDestino.tur_tipo != (byte)TUR_TurmaTipo.Normal)
                {
                    throw new ValidationException("Não é possível movimentar o aluno para a turma " +
                                                  entTurmaDestino.tur_codigo + ".");
                }
            }
        }
Example #3
0
        /// <summary>
        /// Retorna se a escola de origem vai ser responsável pelo lançamento de notas
        /// </summary>
        /// <param name="tur_id"></param>
        /// <param name="dataMovimentacao"></param>
        /// <param name="ent_id"></param>
        /// <returns>
        /// True: Lançamento de notas será pela escola de origem
        /// False: Lançamento de notas será definido pelo usuário
        /// </returns>
        public static bool VerificaEfetivacaoEscolaOrigem(long tur_id, DateTime dataMovimentacao, Guid ent_id)
        {
            TUR_Turma tur = new TUR_Turma {
                tur_id = tur_id
            };

            TUR_TurmaBO.GetEntity(tur);

            int tmo_id = MTR_TipoMovimentacaoBO.Retorna_TipoMovimentacaoId((byte)MTR_TipoMovimentacaoTipoMovimento.TransferenciaPropriaRede, ent_id);

            string sPrazoDias = MTR_ParametroTipoMovimentacaoBO.SelecionaValorParametroTipoMovimentacao(tmo_id, ChaveParametroTipoMovimentacao.PrazoDiasEfetivacaoEscolaOrigem);
            int    PrazoDias  = string.IsNullOrEmpty(sPrazoDias) ? 0 : Convert.ToInt32(sPrazoDias);

            DateTime dataFimPeriodoCalendario = ACA_TipoPeriodoCalendarioBO.SelecionaDataFinalPeriodoCalendarioAtual(tur.cal_id, dataMovimentacao);

            return(dataFimPeriodoCalendario != new DateTime() &&
                   dataFimPeriodoCalendario.AddDays(PrazoDias * -1).Date <= dataMovimentacao);
        }
Example #4
0
 /// <summary>
 /// Calcula o percentual de frequência acumulada do aluno
 /// </summary>
 /// <param name="cadMov">Referência a estrutura de cadastro de movimentação</param>
 /// <param name="tmo_tipoMovimento">Tipo de movimentação</param>
 private static void CalcularFrequenciaAnterior(ref MTR_Movimentacao_Cadastro cadMov, int tmo_tipoMovimento)
 {
     if (MTR_TipoMovimentacaoBO.VerificarMovimentacaoInclusao(tmo_tipoMovimento))
     {
         if ((MTR_TipoMovimentacaoTipoMovimento)tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.MatriculaInicial)
         {
             cadMov.entMovimentacao.mov_frequencia = 0;
         }
         else if ((MTR_TipoMovimentacaoTipoMovimento)tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.TransferenciaDaRedeParticular ||
                  (MTR_TipoMovimentacaoTipoMovimento)tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.TransferenciaDaRedePublicaOutrosEstadosFederal ||
                  (MTR_TipoMovimentacaoTipoMovimento)tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.TransferenciaDaRedePublicaOutrosMunicipios)
         {
             if (cadMov.entMovimentacao.mov_frequencia <= 0)
             {
                 cadMov.entMovimentacao.mov_frequencia = 100;
             }
         }
         else if ((MTR_TipoMovimentacaoTipoMovimento)tmo_tipoMovimento == MTR_TipoMovimentacaoTipoMovimento.Reconducao)
         {
             cadMov.entMovimentacao.mov_frequencia = 0;
         }
     }
 }
Example #5
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);
            }
        }