예제 #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") + ".");
            }
        }
예제 #2
0
 /// <summary>
 /// Validação da data de movimentação, pois a data atual não pode ser anterior a última.
 /// </summary>
 /// <param name="cadMov">Estrutura de movimentação</param>
 /// <param name="tmo">Entidade tipo de movimentação</param>
 /// <param name="alu">Entidade do aluno</param>
 /// <param name="bancoGestao">Conexão aberta com o banco de dados do gestão</param>
 /// <param name="listasFechamentoMatricula">Listas carregadas com dados do fechamento de matrícula</param>
 private static void ValidaDataMovimentacao
 (
     MTR_Movimentacao_Cadastro cadMov
     , MTR_TipoMovimentacao tmo
     , ACA_Aluno alu
     , TalkDBTransaction bancoGestao
     , FormacaoTurmaBO.ListasFechamentoMatricula listasFechamentoMatricula = null
 )
 {
     // Chama o método padrão para validar data da movimetação
     ValidaDataMovimentacao(cadMov.dataMovimentacao, alu.alu_id, alu.ent_id, tmo.tmo_id, bancoGestao, listasFechamentoMatricula);
 }
예제 #3
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 + ".");
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Seleciona o tipo de movimentação, filtrado pelo tipo de movimento e nome do tipo
        /// de movimentação, e preenche a entidade.
        /// </summary>
        /// <param name="inclusao">True para exibir tipo de movimentação de inclusão</param>
        /// <param name="realocacao">True para exibir tipo de movimentação de reolocação</param>
        /// <param name="exclusao">True para exibir tipo de movimentação de exclusão</param>
        /// <param name="outros">True para exibir outros tipos de movimentação</param>
        /// <param name="ent_id">Entidade do usuário logado</param>
        /// <param name="entity">Entidade MTR_TipoMovimentacao com o nome do tipo de movimentação.</param>
        public bool SelectBy_Categoria_Nome
        (
            bool inclusao
            , bool realocacao
            , bool exclusao
            , bool outros
            , Guid ent_id
            , MTR_TipoMovimentacao entity
        )
        {
            QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("NEW_MTR_TipoMovimentacao_SelectBy_Categoria_Nome", _Banco);

            try
            {
                #region PARAMETROS

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Boolean;
                Param.ParameterName = "@inclusao";
                Param.Size          = 1;
                Param.Value         = inclusao;
                qs.Parameters.Add(Param);

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Boolean;
                Param.ParameterName = "@realocacao";
                Param.Size          = 1;
                Param.Value         = realocacao;
                qs.Parameters.Add(Param);

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Boolean;
                Param.ParameterName = "@exclusao";
                Param.Size          = 1;
                Param.Value         = exclusao;
                qs.Parameters.Add(Param);

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Boolean;
                Param.ParameterName = "@outros";
                Param.Size          = 1;
                Param.Value         = outros;
                qs.Parameters.Add(Param);

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Guid;
                Param.ParameterName = "@ent_id";
                Param.Size          = 16;
                Param.Value         = ent_id;
                qs.Parameters.Add(Param);

                Param               = qs.NewParameter();
                Param.DbType        = DbType.AnsiString;
                Param.ParameterName = "@tmo_nome";
                Param.Size          = 100;
                Param.Value         = entity.tmo_nome;
                qs.Parameters.Add(Param);

                #endregion

                qs.Execute();

                if (qs.Return.Rows.Count == 1)
                {
                    entity = DataRowToEntity(qs.Return.Rows[0], entity, false);
                    return(true);
                }
                return(false);
            }
            catch
            {
                throw;
            }
            finally
            {
                qs.Parameters.Clear();
            }
        }