/// <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") + "."); } }
/// <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); }
/// <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 + "."); } } }
/// <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(); } }