public static bool DeletarPorEletivasAlunos ( ACA_CurriculoDisciplina entity , TalkDBTransaction banco , Guid ent_id ) { if (VerificaCurriculoDisciplina(entity.cur_id, entity.crr_id, entity.crp_id, entity.dis_id, banco)) { ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo { cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(crp, banco); ACA_Disciplina dis = new ACA_Disciplina { dis_id = entity.dis_id }; ACA_DisciplinaBO.GetEntity(dis, banco); throw new ValidationException("Não é possível excluir o(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id).ToLower() + " " + crp.crp_descricao + " do(a) " + CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + " eletiva " + dis.dis_nome + ", pois possui outros registros ligados a ele(a)."); } ACA_CurriculoDisciplinaDAO dao = new ACA_CurriculoDisciplinaDAO { _Banco = banco }; return(dao.Update_Situacao_By_EletivasAlunos(entity.cur_id, entity.crr_id, entity.crp_id, entity.dis_id)); }
/// <summary> /// Valida dados necessários para salvar a entidade. Dispara um ValidationException caso não /// esteja válida. /// </summary> /// <param name="entity">Entidade a validar</param> /// <param name="banco">Transação com banco do Gestão - obrigatório</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> private static void ValidaDados(ACA_AlunoCurriculo entity, TalkDBTransaction banco, Guid ent_id) { //Validação feita no BO devido a alteração de nome dos campos para os diferentes clientes if (entity.cur_id <= 0) { throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + " é obrigatório."); } if (entity.crr_id <= 0) { throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + " é obrigatório."); } if (entity.crp_id <= 0) { throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " é obrigatório."); } if (!string.IsNullOrEmpty(entity.alc_matriculaEstadual) && entity.alc_matriculaEstadual.Length > 50) { throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoMatriculaEstadual(ent_id) + " pode conter até 50 caracteres."); } //Se for uma nova matrícula e se a situação dela for 'Ativa' ou 'Em matrícula' //Verifica se já existe uma matrícula cadastrada com os mesmos dados if (entity.IsNew && (entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.Ativo) || entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.EmMatricula))) { if (Existe_AlunoCurriculo(entity.alu_id, entity.cur_id, entity.crr_id, entity.crp_id, banco)) { ESC_Escola esc = new ESC_Escola { esc_id = entity.esc_id }; ESC_EscolaBO.GetEntity(esc, banco); ACA_Curso cur = new ACA_Curso { cur_id = entity.cur_id }; ACA_CursoBO.GetEntity(cur, banco); ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo { cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(crp, banco); throw new ACA_AlunoCurriculo_ValidationException("Já existe uma matrícula 'Ativa' ou 'Em matrícula' cadastrada com os mesmos dados: <BR/>" + "Escola: " + esc.esc_nome + "<BR/>" + GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + ": " + cur.cur_nome + "<BR/>" + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + ": " + crp.crp_descricao); } } }
/// <summary> /// Verifica se o curso da turma possui avaliação do tipo seriado. /// </summary> /// <param name="entTurma">Entidade da turma.</param> /// <param name="EntFormatoAvaliacao">Entidade do formato de avaliação da turma.</param> /// <param name="banco">Transação.</param> /// <param name="entCurriculoPeriodo">Entidade do grupamento da turma (parâmatro de sáida)</param> /// <param name="Seriado">Flag que indica se o curso ~possui avaliação do tipo seriado (parâmatro de sáida)</param> /// <returns></returns> public static bool ValidaCursoSeriadoAvaliacao(TUR_Turma entTurma, ACA_FormatoAvaliacao EntFormatoAvaliacao, TalkDBTransaction banco, out ACA_CurriculoPeriodo entCurriculoPeriodo, out bool Seriado) { Seriado = false; List <TUR_TurmaCurriculo> listCurriculos = TUR_TurmaCurriculoBO.GetSelectBy_Turma(entTurma.tur_id, banco, GestaoEscolarUtilBO.MinutosCacheLongo); if (listCurriculos.Count == 0) { throw new Exception("A turma (tur_id: " + entTurma.tur_id + ") não possui nenhum curriculoPeriodo cadastrado."); } ACA_Curriculo entCurriculo = new ACA_Curriculo { cur_id = listCurriculos[0].cur_id , crr_id = listCurriculos[0].crr_id }; ACA_CurriculoBO.GetEntity(entCurriculo, banco); // Se curso for seriado por avaliações - EJA. if (entCurriculo.crr_regimeMatricula == (byte)ACA_CurriculoRegimeMatricula.SeriadoPorAvaliacoes) { Seriado = true; if ((EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.ConceitoGlobal) && (EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.GlobalDisciplina)) { // Curso do EJA não pode efetivar notas por disciplina - não possui ligação // com lançamento por disciplina. throw new ValidationException("O formato de avaliação \"" + EntFormatoAvaliacao.fav_nome + "\" deve ser do tipo \"Conceito global\" ou " + "\"Conceito global e nota por " + CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + "\", " + "pois o curso da turma é seriado por avaliações."); } } entCurriculoPeriodo = new ACA_CurriculoPeriodo { cur_id = entCurriculo.cur_id , crr_id = entCurriculo.crr_id , crp_id = listCurriculos[0].crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurriculoPeriodo, banco); return(true); }
/// <summary> /// Método que verifica se o turno selecionado é valido com o /// currículo do curso. /// </summary> /// <param name="entTurmaCurriculo">entidade com dados Turma currículo</param> /// <param name="trn_id">id do turno</param> /// <param name="msgErro">Mensagem de erro</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> /// <returns>True - caso é compatível o turno com Curriculo Período / False - caso não seja compatível</returns> public static bool VerificaTurno(TUR_TurmaCurriculo entTurmaCurriculo, int trn_id, out string msgErro, Guid ent_id) { msgErro = ""; ACA_CurriculoPeriodo entity = new ACA_CurriculoPeriodo { cur_id = entTurmaCurriculo.cur_id , crr_id = entTurmaCurriculo.crr_id , crp_id = entTurmaCurriculo.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entity); if (ACA_TurnoHorarioBO.GetSelectDiasSemana(trn_id).Rows.Count != entity.crp_qtdeDiasSemana) { msgErro = "A quantidade de dias da semana que possui aula do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno."; return(true); } // Verifica o tipo de controle de tempo (TemposAula/Horas). if (entity.crp_controleTempo == Convert.ToInt32(ACA_CurriculoPeriodoControleTempo.TemposAula)) { //Compara a quantidade de aulas lançadas no currículo período com a quantidades de aulas lançadas no turno. if (!(entity.crp_qtdeTemposSemana == ACA_TurnoBO.QuantidadeTemposAulaTurno(trn_id))) { msgErro = "A quantidade de tempos de aula de uma semana do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno."; return(true); } } else { //Faz o calculo da horas de aula na semana definido no currículo período e compara com as horas lançadas no turno. if (!((entity.crp_qtdeHorasDia * 60 + entity.crp_qtdeMinutosDia) * entity.crp_qtdeDiasSemana == ACA_TurnoBO.QuantidadeHorasTurno(trn_id))) { msgErro = "A quantidade de tempos de aula de uma semana do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno."; return(true); } } return(false); }
/// <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); } }
/// <summary> /// Valida e configura se a turma destino possui a mesma avaliação turma atual do aluno. /// </summary> /// <param name="cadMov">Estrutura de movimentação</param> /// <param name="progressaoPEJA">Verifica se o método é chamado pela tela de progressão</param> /// <param name="bancoGestao">Transação com banco Gestão - obrigatório</param> public static void ConfiguraTurmaAvaliacao(MTR_Movimentacao_Cadastro cadMov, bool progressaoPEJA, TalkDBTransaction bancoGestao) { List <ACA_CurriculoPeriodo> listPeriodosEquivalentes = ACA_CurriculoPeriodoBO. Seleciona_PeriodosRelacionados_Equivalentes(cadMov.entAluCurAnterior.cur_id, cadMov.entAluCurAnterior.crr_id, cadMov.entAluCurAnterior.crp_id); // Apenas valida a avaliação da turma caso seja o mesmo Curso/Período. // Também verifica se os cursos são equivalentes if ( ((cadMov.entAluCurAnterior.cur_id == cadMov.entAluCurNovo.cur_id) && (cadMov.entAluCurAnterior.crr_id == cadMov.entAluCurNovo.crr_id) && (cadMov.entAluCurAnterior.crp_id == cadMov.entAluCurNovo.crp_id)) || (listPeriodosEquivalentes.Count > 0 && listPeriodosEquivalentes.Exists(p => p.cur_id == cadMov.entAluCurNovo.cur_id && p.crr_id == cadMov.entAluCurNovo.crr_id && p.crp_id == cadMov.entAluCurNovo.crp_id))) { // Apenas valida a avaliação da turma caso definido a turma destino. if (cadMov.entMatTurNovo.tur_id > 0) { ACA_CurriculoPeriodo entityCurriculoPeriodo = new ACA_CurriculoPeriodo { cur_id = cadMov.entAluCurAnterior.cur_id, crr_id = cadMov.entAluCurAnterior.crr_id, crp_id = cadMov.entAluCurAnterior.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entityCurriculoPeriodo, bancoGestao); TUR_TurmaCurriculoAvaliacao entityTurmaCurriculoAvaliacaoAtual = new TUR_TurmaCurriculoAvaliacao { tur_id = cadMov.entAluCurAvaAnterior.tur_id, cur_id = cadMov.entAluCurAvaAnterior.cur_id, crr_id = cadMov.entAluCurAvaAnterior.crr_id, crp_id = cadMov.entAluCurAvaAnterior.crp_id, tca_id = cadMov.entAluCurAvaAnterior.tca_id }; TUR_TurmaCurriculoAvaliacaoBO.GetEntity(entityTurmaCurriculoAvaliacaoAtual, bancoGestao); if (entityTurmaCurriculoAvaliacaoAtual.tca_id > 0) { TUR_TurmaCurriculoAvaliacao entityTurmaCurriculoAvaliacaoDestino; string msg; if (!progressaoPEJA) { // Verifica se a turma destino possui a avaliação da turma origem. entityTurmaCurriculoAvaliacaoDestino = TUR_TurmaCurriculoAvaliacaoBO.SelecionaAvaliacaoExistenteParaTurma(cadMov.entMatTurNovo.tur_id, cadMov.entAluCurNovo.cur_id, cadMov.entAluCurNovo.crr_id, cadMov.entAluCurNovo.crp_id, entityTurmaCurriculoAvaliacaoAtual.tca_numeroAvaliacao); msg = "A turma destino do aluno deve possuir o(a) mesmo(a) " + GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " atual do aluno."; } else { entityTurmaCurriculoAvaliacaoDestino = new TUR_TurmaCurriculoAvaliacao { tur_id = cadMov.entMatTurNovo.tur_id , cur_id = cadMov.entAluCurAvaNovo.cur_id , crr_id = cadMov.entAluCurAvaNovo.crr_id , crp_id = cadMov.entAluCurAvaNovo.crp_id , tca_id = cadMov.entAluCurAvaNovo.tca_id }; TUR_TurmaCurriculoAvaliacaoBO.GetEntity(entityTurmaCurriculoAvaliacaoDestino, bancoGestao); msg = "A turma destino do aluno não possui o(a) " + GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " configurada para o aluno."; } if ((entityTurmaCurriculoAvaliacaoDestino != null) && (entityTurmaCurriculoAvaliacaoDestino.tca_id > 0)) { // Configura o currículo avaliação novo com mesma avaliação, caso necessário. if (cadMov.entAluCurAvaNovo.tca_id <= 0) { cadMov.entAluCurAvaNovo.alu_id = cadMov.entAluCurNovo.alu_id; cadMov.entAluCurAvaNovo.tur_id = entityTurmaCurriculoAvaliacaoDestino.tur_id; cadMov.entAluCurAvaNovo.cur_id = entityTurmaCurriculoAvaliacaoDestino.cur_id; cadMov.entAluCurAvaNovo.crr_id = entityTurmaCurriculoAvaliacaoDestino.crr_id; cadMov.entAluCurAvaNovo.crp_id = entityTurmaCurriculoAvaliacaoDestino.crp_id; cadMov.entAluCurAvaNovo.tca_id = entityTurmaCurriculoAvaliacaoDestino.tca_id; } } else { throw new ValidationException(msg); } } else { throw new ValidationException("Não é possível realizar essa movimentação, pois o aluno não possui " + GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " ativo(a) na turma."); } } } }
public new static bool Delete ( MTR_ParametroTipoMovimentacaoCurriculoPeriodo entity , Data.Common.TalkDBTransaction banco , Guid ent_id ) { MTR_ParametroTipoMovimentacaoCurriculoPeriodoDAO dao = new MTR_ParametroTipoMovimentacaoCurriculoPeriodoDAO(); if (banco == null) { dao._Banco.Open(IsolationLevel.ReadCommitted); } else { dao._Banco = banco; } try { // Verifica se o curso período do parâmetro de movimentação pode ser deletado if (GestaoEscolarUtilBO.VerificaIntegridadaChaveDupla("tmo_id", "tmp_id", entity.tmo_id.ToString(), entity.tmp_id.ToString(), "MTR_TipoMovimentacaoCurriculoPeriodo,MTR_ParametroTipoMovimentacaoCurriculoPeriodo", dao._Banco)) { MTR_TipoMovimentacaoCurriculoPeriodo tmp = new MTR_TipoMovimentacaoCurriculoPeriodo { tmo_id = entity.tmo_id, tmp_id = entity.tmp_id }; MTR_TipoMovimentacaoCurriculoPeriodoBO.GetEntity(tmp, dao._Banco); ACA_Curso cur = new ACA_Curso { cur_id = tmp.cur_id }; ACA_CursoBO.GetEntity(cur, dao._Banco); ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo { cur_id = tmp.cur_id, crr_id = tmp.crr_id, crp_id = tmp.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(crp, dao._Banco); throw new ValidationException("Não é possível excluir o(a) " + GestaoEscolarUtilBO.nomePadraoCurso(ent_id).ToLower() + " " + cur.cur_nome + " e " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id).ToLower() + " " + crp.crp_descricao + " pois possui outros registros ligados a ele(a)."); } // Deleta logicamente o parâmetro do curso período para parâmetro de movimentação dao.Delete(entity); return(true); } catch (Exception err) { if (banco == null) { dao._Banco.Close(err); } throw; } finally { if (banco == null) { dao._Banco.Close(); } } }
/// <summary> /// Validar idade do aluno de acordo com o CurriculoPeriodo no qual ele está inserido. /// Valida a idade máxima ideal + a amplitude do parâmetro acadêmico ou o valor informado /// no parâmetro amplitude. /// Valida a idade mínima ideal quando informado através da flag validarIdadeMinima - quando /// informada sempre valida usando a amplitudo passada por parâmetro na função. /// </summary> /// <param name="entity">Entidade AlunoCurriculo carregada</param> /// <param name="bancoGestao">Transação com banco Gestão - obrigatório</param> /// <param name="bancoCore">Transação com banco CoreSSO - opcional</param> /// <param name="validarIdadeMinima">Flag que indica se é pra validar idade mínima também</param> /// <param name="amplitude">Amplitude, se > 0, substitui a amplitude do parâmetro acadêmico</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> /// <returns>Se idade válida</returns> internal static bool ValidarIdadeIdeal ( ACA_AlunoCurriculo entity , TalkDBTransaction bancoGestao , TalkDBTransaction bancoCore , bool validarIdadeMinima , int amplitude , Guid ent_id ) { ACA_Aluno entAluno = new ACA_Aluno { alu_id = entity.alu_id }; ACA_AlunoBO.GetEntity(entAluno, bancoGestao); if (entAluno.alu_situacao != Convert.ToByte(ACA_AlunoSituacao.Inativo)) { if (entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.Ativo) || entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.EmMatricula)) { ACA_CurriculoPeriodo entCurPer = new ACA_CurriculoPeriodo { cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurPer, bancoGestao); PES_Pessoa entPessoa = new PES_Pessoa { pes_id = entAluno.pes_id }; if (bancoCore == null) { PES_PessoaBO.GetEntity(entPessoa); } else { PES_PessoaBO.GetEntity(entPessoa, bancoCore); } // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo. int idadeMaxima = (entCurPer.crp_idadeIdealAnoFim * 12) + entCurPer.crp_idadeIdealMesFim; if (amplitude > 0) { idadeMaxima += amplitude; } else { int pac_valor = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.AMPLITUDE_IDADE_ALERTA, ent_id); // Soma quantidade em meses do parâmetro de amplitude. idadeMaxima += (pac_valor > 0 ? (pac_valor * 12) : 0); } // Valida a quantidade de meses da idade da criança. int anos, meses, dias; GestaoEscolarUtilBO.CalculaAniversarioCompleto(DateTime.Now, entPessoa.pes_dataNascimento, out anos, out meses, out dias); int idade = (anos * 12) + meses; if (idade > idadeMaxima) { anos = idadeMaxima / 12; meses = idadeMaxima % 12; string sAnos = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty; string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty; throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser maior que " + sAnos + sMeses + "."); } ACA_Curriculo curso = ACA_CurriculoBO.GetEntity(new ACA_Curriculo { cur_id = entity.cur_id, crr_id = entity.crr_id }); if (validarIdadeMinima && curso.crr_regimeMatricula == 3 && ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.VALIDAR_IDADE_MINIMA_PEJA, ent_id)) { // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo. int idadeMinima = (entCurPer.crp_idadeIdealAnoInicio * 12) + entCurPer.crp_idadeIdealMesInicio; idadeMinima -= amplitude; if (idade < idadeMinima) { anos = idadeMinima / 12; meses = idadeMinima % 12; string sAnos = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty; string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty; throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser menor que " + sAnos + sMeses + "."); } } } } return(true); }