class ManterAltaSumarioRN extends BaseBusiness {

	public void verificarAltaFutura(Integer novoAtdSeq, Date novaDataAlta,
			DominioIndTipoAltaSumarios novoTipo) throws ApplicationBusinessException {
		if (DominioIndTipoAltaSumarios.OBT.equals(novoTipo)
				&& DateValidator.validaDataMaiorQueAtual(novaDataAlta)) {
			ManterAltaSumarioRNExceptionCode.MPM_03711.throwException();
		}

		AghAtendimentos atendimento = getAghuFacade()
		.obterAghAtendimentoPorChavePrimaria(novoAtdSeq);

		if (atendimento != null) {
			AghUnidadesFuncionais unidadeFuncional = atendimento
			.getUnidadeFuncional();
			Short nroUnidTempoPmeAdiantadas = unidadeFuncional
			.getNroUnidTempoPmeAdiantadas();
			DominioUnidTempo indUnidTempoPmeAdiantada = unidadeFuncional
			.getIndUnidTempoPmeAdiantada();

			if (nroUnidTempoPmeAdiantadas != null
					&& nroUnidTempoPmeAdiantadas > 0
					&& indUnidTempoPmeAdiantada != null) {
				//DateTime dthrAtual = new DateTime();
				//DateTime dthrNovaDataAlta = new DateTime(novaDataAlta);

				switch (indUnidTempoPmeAdiantada) {
				case D:
					//Days days = Days.daysBetween(dthrAtual, dthrNovaDataAlta);
					//int intervaloDias = days.getDays() + 1;
					int intervaloDias = DateUtil.obterQtdDiasEntreDuasDatas(new Date(), novaDataAlta) + 1;

					// if (TRUNC ( p_new_dthr_alta - SYSDATE ) + 1) >
					// v_nro_unid_tempo_sal_adiant) {
					if (intervaloDias > nroUnidTempoPmeAdiantadas.intValue()) {
						// raise_application_error (-20000, 'Só é possível
						// adiantar a alta com até ' ||
						// TO_CHAR(v_nro_unid_tempo_sal_adiant) || ' dias de
						// antecedência');
						ManterAltaSumarioRNExceptionCode.ERRO_ADIANTAR_DATA_ALTA_N_DIAS
						.throwException(nroUnidTempoPmeAdiantadas
								.intValue());
					}
					break;
				case H:
					//Hours hours = Hours.hoursBetween(dthrAtual,	dthrNovaDataAlta);
					//int intervaloHoras = hours.getHours();
					int intervaloHoras = DateUtil.obterQtdHorasEntreDuasDatas(new Date(), novaDataAlta);

					// if ( p_new_dthr_alta - SYSDATE ) * 24 >
					// v_nro_unid_tempo_sal_adiant) {
					if (intervaloHoras > nroUnidTempoPmeAdiantadas.intValue()) {
						// raise_application_error (-20000,'Só é possível
						// adiantar a alta com até ' ||
						// TO_CHAR(v_nro_unid_tempo_sal_adiant) || ' horas de
						// antecedência');
						ManterAltaSumarioRNExceptionCode.ERRO_ADIANTAR_DATA_ALTA_N_HORAS
						.throwException(nroUnidTempoPmeAdiantadas
								.intValue());
					}
					break;
				default:
					break;
				}
			}

			if ((nroUnidTempoPmeAdiantadas == null || nroUnidTempoPmeAdiantadas
					.intValue() == 0)
					&& DateValidator.validaDataMaiorQueAtual(novaDataAlta)) {
				ManterAltaSumarioRNExceptionCode.MPM_02711.throwException();
			}
		}
	}

}