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
def modificar_reservante(self, reservante_anterior: Socio, data_hora: str, novo_reservante: Socio) -> None: '''Muda o reservante de uma reserva feita.''' index = self.__reservas.encontrar_reserva( Reserva(reservante_anterior, data_hora)) if index != -1: self.__reservas.lista[index].reservante = novo_reservante return print("Reserva não encontrada.")
def modificar_horario(self, reservante: Socio, data_hora_anterior: str, novo_data_hora: str) -> None: '''Muda a data e horário de uma reserva feita.''' index = self.__reservas.encontrar_reserva( Reserva(reservante, data_hora_anterior)) if index != -1: self.__reservas.lista[index].data_hora = novo_data_hora return print("Reserva não encontrada.")
def desfazer_reserva(self, reservante: Socio, data_hora: str): '''Remove uma reserva feita.''' self.__reservas.remover(Reserva(reservante, data_hora))
def reservar(self, reservante: Socio, data_hora: str, duracao: int) -> None: '''Faz uma nova reserva.''' self.__reservas.adicionar(Reserva(reservante, data_hora, duracao))
def reserva_existe(self, reservante: Socio, data_hora: str): '''Checa se existe uma reserva feita pelo sócio em dado horário.''' return True if self.__reservas.encontrar_reserva( Reserva(reservante, data_hora)) != -1 else False
def socio_reservou_horario(self, reservante: Socio, data_hora: str, duracao: int): '''Checa se um Sócio possui uma reserva que dê choque com o horário informado.''' return self.__reservas.existem_reservas_do_socio_no_horario( Reserva(reservante, data_hora, duracao))