/// <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> /// Retorna nas 2 variáveis se a movimentação está no período válido, para o curso e ano letivo /// informados (através da matrícula do aluno). /// </summary> /// <param name="entMatrTurma">Matrícula atual do aluno na turma</param> /// <param name="entAluCur">Matrícula atual do aluno no curso</param> /// <param name="tmo_id">Tipo de movimentação a ser realizada</param> /// <param name="bancoGestao">Transação com banco - obrigatório</param> /// <param name="dataComparar">Data para comparação do momento</param> /// <param name="estaInicioMovimentacao">OUT - retorna se está no período de início de movimentação</param> /// <param name="estaFechamentoMovimentacao">OUT - retorna se está no período de fechamento de movimentação</param> /// <param name="listasFechamentoMatricula">Listas carregadas com dados do fechamento de matrícula</param> public static void VerificaPeriodoValidoMovimentacao ( MTR_MatriculaTurma entMatrTurma , ACA_AlunoCurriculo entAluCur , int tmo_id , TalkDBTransaction bancoGestao , DateTime dataComparar , out bool estaInicioMovimentacao , out bool estaFechamentoMovimentacao , FormacaoTurmaBO.ListasFechamentoMatricula listasFechamentoMatricula = null ) { // Chama método padrão para verificar o período valido da movimentação VerificaPeriodoValidoMovimentacao(entMatrTurma.tur_id, entAluCur.cur_id, entAluCur.crr_id, tmo_id, dataComparar, bancoGestao, out estaInicioMovimentacao, out estaFechamentoMovimentacao, listasFechamentoMatricula); }
/// <summary> /// Retorna nas 2 variáveis se a movimentação está no período válido, para o curso e ano letivo /// informados (através da matrícula do aluno). /// </summary> /// <param name="tur_id">ID da turma</param> /// <param name="cur_id">ID do curso</param> /// <param name="crr_id">ID do curriculo do curso</param> /// <param name="tmo_id">ID do tipo de movimentação</param> /// <param name="dataComparar">Data para comparação do momento</param> /// <param name="bancoGestao">Transação com banco - obrigatório</param> /// <param name="estaInicioMovimentacao">OUT - retorna se está no período de início de movimentação</param> /// <param name="estaFechamentoMovimentacao">OUT - retorna se está no período de fechamento de movimentação</param> /// <param name="listasFechamentoMatricula">Listas carregadas com dados do fechamento de matrícula</param> public static void VerificaPeriodoValidoMovimentacao ( long tur_id , int cur_id , int crr_id , int tmo_id , DateTime dataComparar , TalkDBTransaction bancoGestao , out bool estaInicioMovimentacao , out bool estaFechamentoMovimentacao , FormacaoTurmaBO.ListasFechamentoMatricula listasFechamentoMatricula = null ) { TUR_Turma entTur = null; if (listasFechamentoMatricula != null && listasFechamentoMatricula.listTurma != null) { // Busca a entidade da lista de fechamento de matrícula. entTur = listasFechamentoMatricula.listTurma.Find(p => p.tur_id == tur_id); } if (entTur == null) { entTur = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entTur, bancoGestao); } ACA_CalendarioAnual entCalendario = null; if (listasFechamentoMatricula != null && listasFechamentoMatricula.listCalendarios != null) { // Busca a entidade da lista de fechamento de matrícula. entCalendario = listasFechamentoMatricula.listCalendarios.Find(p => p.cal_id == entTur.cal_id); } if (entCalendario == null) { entCalendario = new ACA_CalendarioAnual { cal_id = entTur.cal_id }; ACA_CalendarioAnualBO.GetEntity(entCalendario, bancoGestao); } int mom_ano = entCalendario.cal_ano; MTR_TipoMovimentacaoDAO dao = new MTR_TipoMovimentacaoDAO { _Banco = bancoGestao }; DataTable dt = dao.SelectBy_PeriodoValido_Curso(cur_id, crr_id, tmo_id, mom_ano, dataComparar); if (dt.Rows.Count > 0) { if (!String.IsNullOrEmpty(dt.Rows[0]["IsPeriodoInicioProcesso"].ToString())) { estaInicioMovimentacao = Convert.ToBoolean(dt.Rows[0]["IsPeriodoInicioProcesso"]); } else { estaInicioMovimentacao = false; } if (!String.IsNullOrEmpty(dt.Rows[0]["IsPeriodoFimProcesso"].ToString())) { estaFechamentoMovimentacao = Convert.ToBoolean(dt.Rows[0]["IsPeriodoFimProcesso"]); } else { estaFechamentoMovimentacao = false; } } else { estaInicioMovimentacao = false; estaFechamentoMovimentacao = false; } }