class MbcAgendasRN extends BaseBusiness {

	public void verificarColisaoHorarioCirurgico(MbcAgendas agenda) throws ApplicationBusinessException {
		if(obterAtributoConsisteHorario() && !agenda.getIndGeradoSistema()
				&& agenda.getSalaCirurgica() != null && agenda.getSalaCirurgica().getId() != null
				&& agenda.getSalaCirurgica().getId().getSeqp() != null && agenda.getDthrPrevInicio() != null
				&& agenda.getDthrPrevFim() != null) {
			List<MbcAgendas> listaAgendas = getMbcAgendasDAO().buscarHorariosOcupacaoSalaCirurgica(agenda.getDtAgenda(),
					agenda.getUnidadeFuncional().getSeq(), agenda.getSalaCirurgica().getId().getUnfSeq(),
					agenda.getSalaCirurgica().getId().getSeqp(), agenda.getSeq());
			for(MbcAgendas item : listaAgendas) {
				if(item.getDthrPrevFim() != null && item.getDthrPrevInicio() != null) {
					GregorianCalendar dtPrevFimCalculada = new GregorianCalendar();
					dtPrevFimCalculada.setTime(item.getDthrPrevFim());
					
					if(item.getIntervaloEscala() != null){
						dtPrevFimCalculada.add(Calendar.MINUTE, item.getIntervaloEscala());
					}
					
					if(!(item.getDthrPrevInicio().compareTo(agenda.getDthrPrevInicio()) < 0
							&& dtPrevFimCalculada.getTime().compareTo(agenda.getDthrPrevInicio()) <= 0)) {
						
						if(!(item.getDthrPrevInicio().compareTo(agenda.getDthrPrevFim()) >= 0)) {
							throw new ApplicationBusinessException(MbcAgendasRNExceptionCode.MBC_00846);
						}
					}
				}
			}
		}
	}

}