コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
 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.")
コード例 #4
0
 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.")
コード例 #5
0
 def desfazer_reserva(self, reservante: Socio, data_hora: str):
     '''Remove uma reserva feita.'''
     self.__reservas.remover(Reserva(reservante, data_hora))
コード例 #6
0
 def reservar(self, reservante: Socio, data_hora: str,
              duracao: int) -> None:
     '''Faz uma nova reserva.'''
     self.__reservas.adicionar(Reserva(reservante, data_hora, duracao))
コード例 #7
0
 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
コード例 #8
0
 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))