def esta_disponivel(self, reserva: Reserva, index: int) -> bool: '''Checa se existem choques nos horários entre 3 reservas consecutivas.''' if reserva.choque_de_horario( self.__lista[index - 1]): # a reserva anterior dá choque return False try: if reserva.choque_de_horario( self.__lista[index]): # há uma reserva no mesmo horário, return False # ou a reserva posterior, se existir, dá choque except IndexError: pass return True # não há choques de horários
def existem_reservas_do_socio_no_horario(self, reserva: Reserva) -> bool: '''Checa se um Sócio possui uma reserva que dê choque com o horário informado.''' if self.esta_vazia(): return False index = busca_binaria(reserva, self.__lista, 0, len(self.__lista) - 1) # checa se o choque foi na reserva anterior e verifica o Sócio if reserva.choque_de_horario(self.__lista[index - 1]): if self.__lista[index - 1].reservante == reserva.reservante: return True try: # checa se há uma reserva no mesmo horário, # ou se o choque foi na reserva posterior e verifica o Sócio if reserva.choque_de_horario(self.__lista[index]): if self.__lista[index].reservante == reserva.reservante: return True except IndexError: pass return False