def booking_add(self): print(Fore.RED, " Add Booking ".center(30, "*"), Fore.RESET) guest = Guest_service() guest_id = guest.search_guest() Apartments = Apartment_service() apartments = Apartments.search_apartment() rowIdx = get_int("Please select apt number: ", 0, len(apartments)) apartment = apartments[rowIdx] apartment_price = apartment.price booking = Booking() booking.guest_id = guest_id booking.booked_date = datetime.datetime.now() booking.chek_in_date = get_date("Input Data") booking.chek_out_date = get_date("Input Data") if (apartments == None or len(apartments) == 0): print("Error") return apartment.bookings.append(booking) apartment.save() columns = ("Chek_in_date", "Chek_out_date", "Booked_date") pretty_print([booking], columns) print("{}Booking duration is {} day(s).{}".format(Fore.YELLOW, booking.duration, Fore.RESET)) print("{}TOTAL Price {} USD.{}".format(Fore.YELLOW, apartment_price * booking.duration, Fore.RESET)) print(Fore.RED, " Apartment Saved".center(30, "*"), Fore.RESET)
def guest_list(self): print(Fore.RED, " Guest List ".center(30, "*"), Fore.RESET) guests = Guest.objects() columns = ('Id', 'Name', 'Age', 'Is_Card') pretty_print(guests, columns)
def apartments_list(self): print(Fore.RED, " Apartment List ".center(30, "*"), Fore.RESET) apartments = Apartment.objects() columns = ('Name', 'Description', 'Price', 'Smoke_allowed') pretty_print(apartments, columns)
def search_apartment(self, name=''): print(Fore.RED, " Apartment Search ".center(30, "*"), Fore.RESET) if name == '': name = get_string("Pleace, enter apartment name: ") apartment = Apartment.objects() \ .filter(name = name) columns = ('Name', 'Description', 'Price', 'Smoke_allowed') pretty_print(apartment, columns) return apartment
def booking_list(self): print(Fore.RED, " View Booking by Apartment ".center(30, "*"), Fore.RESET) columns_apt = ("Name", "price") columns_booking = ("guest_id", "chek_in_date", "chek_out_date", "booked_date") # Повертаємо апартаменти та друкуємо табличку Apartments = Apartment_service() apartments = Apartments.search_apartment() for apartment in apartments: guest_bookings = [] # перевіряємо чи є бронювання if apartment.bookings: for booking in apartment.bookings: # Щоб не друкувати на кожне бронювання окрему табличку guest_bookings.append(booking) print(Fore.YELLOW, "Booking(s) in " + apartment.name, Fore.RESET) pretty_print(guest_bookings, columns_booking) else: print(Fore.YELLOW, "No booking(s) yet in " + apartment.name, Fore.RESET)
def booking_seach_by_name(self): """ View booking by Guest name Input (str) - guest name Output - print table Bookings """ print(Fore.RED, " Seach Booking by Name".center(30, "*"), Fore.RESET) # Повертаємо ID гостя guest = Guest_service() guest_id = guest.search_guest() # це друкую для виключно перевірки print(Fore.YELLOW, "You ID = ", guest_id, Fore.RESET) columns_apt = ("Name", "price") columns_booking = ("guest_id", "chek_in_date", "chek_out_date", "booked_date") message = "You haven't bookings yet!" # Перевіряємо чи є бронювання for apartment in Apartment.objects(bookings__guest_id=guest_id): guest_bookings = [] # Перевіряємо чи це бронювання нашого гостя for booking in apartment.bookings: if booking.guest_id == guest_id: guest_bookings.append(booking) # якщо є бронювання друкуємо назву апартаментів та бронювання if len(guest_bookings) > 0: print(Fore.YELLOW, "You boking(s) in " + apartment.name, Fore.RESET) pretty_print(guest_bookings, columns_booking) message = '' # якщо зовсім немає бронювань дкукуємо повідомлення if message != '': print(Fore.YELLOW, message, Fore.RESET)