diff --git a/client_test.py b/client_test.py index 87e4f9e..b5c9263 100644 --- a/client_test.py +++ b/client_test.py @@ -2,6 +2,7 @@ import math import os import sys import time +import random #----------------CLASS---KEY------------------------------------------ @@ -11,17 +12,17 @@ class Key: # Initialisation of keys def __init__(self, keynumber): self.number = keynumber - self.possessor = "Reception" + self.possessor = "Rezeption" #where are the keys def status_key(self, keynumber=None): - return self.number, self.possessor + print("Schlüssel", self.number, "im Besitz", self.possessor) def hand_out_key(self, keynumber, Guest): self.possessor = Guest def get_back_key(self, keynumber): - self.possessor = "Reception" + self.possessor = "Rezeption" # Generates all the keys, two for each room # results in keynumbers: 11, 12, 21, 22, 31, 32, 41, 42 @@ -40,12 +41,16 @@ for i in range(11, 42, 10): #----------------CLASS---CLIENT------------------------------------------ +checked_in_list = [] +client_list = [] +all_clients = [] class Client(): months = ['Januar', 'Februar','März','April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] - all_clients=[] + clients = 0 - def __init__(self, name: str, surname: str, client_num: str, room: str, period, key_num: int, bookings, status: bool): + def __init__(self, name: str, surname: str, client_num: str, room: str, period, key_num: int, bookings, status: bool,\ + checked_in: bool): self.name = name self.surname = surname self.client_num = client_num @@ -54,34 +59,16 @@ class Client(): self.key_num = 0 self.bookings = [] self.status = False + self.checked_in = checked_in # Automatic status adjustment if len(self.bookings) >= 4: self.status = True Client.clients += 1 - def check_in(self, room, key_num): + def check_in(self, room, key_num, period): print("Check In") - while True: - print("Aufenthaltszeitraum") - while True: - day_arrival = input("Anreisetag: ") - if day_arrival.isdigit() and 0 < int(day_arrival) and int(day_arrival) < 28: - break - while True: - month_arrival = input("Anreisemonat: ") - if month_arrival.isdigit() and 0 < int(month_arrival) and int(month_arrival) < 12: - break - while True: - day_depature = input("Abreisetag: ") - if day_depature.isdigit() and 0 < int(day_depature) and int(day_depature) < 28: - break - while True: - month_depature = input("Abreisemonat: ") - if month_depature.isdigit() and 0 < int(month_depature) and int(month_depature) < 12: - break - break - period = str(day_arrival) + "," +str(month_arrival) + "," + str(day_depature) + "," + str(month_depature) + self.checked_in = True self.period = str(period) room_list[reference.index(str(room))].occupy(self.surname, self.period) self.room = str(room) @@ -89,6 +76,11 @@ class Client(): try: exec(num_) self.key_num = key_num + checked_in_list.append(self.client_num) + client_list.remove(str(self.client_num)) + if self.status == True: + print("Der Kunde besitzt VIP Previlegien. Er erhält kostenloses \ +Frühstück sowie die kostenlose Benutzung der Mini-Bar.") except: ("Schlüssel mit Daten nicht gefunden.") new_bill = add_bill(self.name, self.surname, self.client_num, room, self.period) @@ -98,9 +90,16 @@ class Client(): room_list[reference.index(self.room)].free() key_num = self.key_num num_ = "key_" + str(key_num) + ".get_back_key(" + str(key_num)+ ")" + try: exec(num_) print("Der Gast ist erfolgreich ausgecheckt worden.") + self.checked_in = False + self.room = None + self.period = None + self.key_num = None + checked_in_list.remove(self.client_num) + client_list.append(self.client_num) except: ("Schlüssel mit Daten nicht gefunden.") @@ -114,21 +113,9 @@ class Client(): self.bookings.remove(bill_num) print("Rechnung wurde beim Gast", self.client_num, "gelöscht.") - def change_room(self, surname, new_room, key_num = 0): # Room add period - room_list[reference.index(self.room)].free() - room_list[reference.index(new_room)].occupy(surname, self.period) - num_ = "key_" + str(key_num) + ".hand_out_key(" + str(key_num) + "," + "'" + str(surname) + "')" - try: - exec(num_) - self.key_num = key_num - except: - ("Schlüssel mit Daten nicht gefunden.") - - - def name_change(self, name, surname): - self.name = name - self.surname = surname - + def vip_status(self): + if len(self.bookings) > 3: + self.status = True # Length of stay as print def period_print(self): stay_period = [] @@ -177,7 +164,8 @@ class Client(): "Aufenthaltsdauer": self.period, "Schlüsselnummer" : self.key_num, "Buchungen" : self.bookings, - "VIP-Status" : self.status + "VIP-Status" : self.status, + "Eingecheckt" : self.checked_in } if action != None: # If asked client information is stay period @@ -225,7 +213,7 @@ class Room: self.resident = None self.period = None - def is_free(self, client_num, room_name): + def is_free(self, client_num, room_name, period): occupied = self.period if occupied == None: @@ -233,12 +221,68 @@ class Room: for i in room_types: if i[0] == room_name: key_num = i[1]+1 - print("Der Kunde erhält den Schlüssel", key_num) + #print("Der Kunde erhält den Schlüssel", key_num) - check = str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)+ ")" + check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\ + + "," + "'" + str(period) + "'" +"))" print(check) exec(check) + else: + stay_period = [] + num_string = "" + for i in self.period: + if i.isnumeric(): + num_string += i + if i == ",": + stay_period.append(num_string) + num_string = "" + + stay_period.append(num_string) + + stay_period_new = [] + num_string = "" + for i in period: + if i.isnumeric(): + num_string += i + if i == ",": + stay_period_new.append(num_string) + num_string = "" + + stay_period_new.append(num_string) + #print(stay_period, stay_period_new) + + if int(stay_period[3]) < int(stay_period_new[1]): + room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]] + for i in room_types: + if i[0] == room_name: + key_num = i[1]+1 + #print("Der Kunde erhält den Schlüssel", key_num) + + check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\ + + "," + "'" + str(period) + "'" +"))" + print(check) + exec(check) + + + if int(stay_period[3]) > int(stay_period_new[1]): + print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.") + + if int(stay_period[3]) == int(stay_period_new[1]): + if int(stay_period[0]) > int(stay_period_new[2]): + print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.") + + if int(stay_period[0]) <= int(stay_period_new[2]): + room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]] + for i in room_types: + if i[0] == room_name: + key_num = i[1]+1 + #print("Der Kunde erhält den Schlüssel", key_num) + + check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\ + + "," + "'" + str(period) + "'" +"))" + print(check) + exec(check) @@ -269,15 +313,20 @@ class Room: stay_period_new.append(num_string) #print(stay_period, stay_period_new) - if int(stay_period[3]) < int(stay_period_new[3]): + if int(stay_period[3]) < int(stay_period_new[1]): + print(stay_period[3], stay_period_new[1]) print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum frei.") - if int(stay_period[3]) > int(stay_period_new[3]): + + if int(stay_period[3]) > int(stay_period_new[1]): print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.") - if int(stay_period[3]) == int(stay_period_new[3]): - if int(stay_period[2]) > int(stay_period_new[2]): + + if int(stay_period[3]) == int(stay_period_new[1]): + if int(stay_period[2]) > int(stay_period_new[0]): print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.") - if int(stay_period[2]) <= int(stay_period_new[2]): - print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum belegt.") + #print(stay_period[2], stay_period_new[0]) + if int(stay_period[2]) <= int(stay_period_new[0]): + print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum frei.") + #print(stay_period[2], stay_period_new[0]) # room information def info(self, action = None): @@ -287,13 +336,13 @@ class Room: if action != None: if action == "Nummer": - print("Das Zimmer" + str(self.number) + "hat die Nummer" + dic_["Nummer"]) + print("Das Zimmer hat die Nummer", dic_["Nummer"]) if action == "Gast": if dic_["Gast"] != None: - print("Das Zimmer" + str(self.number) + "ist gerade vom Gast" + dic_["Gast"] + "belegt") + print("Das Zimmer", str(self.number), "ist gerade vom Gast", dic_["Gast"], "belegt") else: - print("Das Zimmer" + str(self.number) + "ist im Moment nicht belegt.") + print("Das Zimmer", str(self.number), "ist im Moment nicht belegt.") else: for i in dic_: @@ -392,17 +441,13 @@ class Accounting(): print("Rechnung", self.bill_num, "wurde bezahlt.") def delete_bill(self, bill_num): - for i in client_list: + for i in all_clients: var = str(i) + ".client_bill_delete(" + "'" + bill_num + "'" + ")" - #print(var) - exec(var) - var = str(i) + ".check_out()" - #print(var) exec(var) + var_ = str(i) + ".check_out()" + exec(var_) - - def __del__(self): print("Rechnung wurde storniert.") @@ -456,13 +501,14 @@ def pay_your_bill(): def delete_bill(bill_numb): k = str(bill_numb) + ".delete_bill(bill_numb)" exec(k) + #-------------ADDITIONAL---CLIENT---METHODS------------------------- -client_list = [] + def clear(): if os.name == "posix": @@ -489,28 +535,23 @@ def add_client(): key_num = None c = str(client_num) + " = Client(" + '"' + str(name) + '"' + "," + '"' + \ str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + str(room_num) \ -+ '"' + "," + '"' + str(period) + '"' + "," + '"'+ str(key_num) + '"' + ",[], False)" - print(c) ++ '"' + "," + '"' + str(period) + '"' + "," + '"'+ str(key_num) + '"' + ",[], False, False)" + #print(c) client_list.append(client_num) + all_clients.append(client_num) return c k = add_client() exec(k) -j = c0.check_in("Suite",31) +j = c0.check_in("Suite",31, "2,3,4,5") exec(j) #print(c0.info()) clear() -system_list = ["buchhaltung", "kundenverwaltung", "zimmerverfaltung", "schlüsselverwaltung", "dienstpläne", "b", "k", "z", "s", "d"] - - - -"""-------------START-----INTERFACE--------------------""" - dir_path = os.path.dirname(os.path.realpath(__file__)) @@ -541,7 +582,8 @@ def ascii_print(): time.sleep(0.1) - +system_list = ["1", "2", "3", "4", "5"] +"""-------------START-----INTERFACE--------------------""" input("Start?") clear() #Intro @@ -551,21 +593,19 @@ play_obj = play_sound() ascii_print() -print("WELCOME TO THE GRAND BUDAPEST HOTEL SYSTEM") -input("Press enter to continue") +print("\t\tWELCOME TO THE GRAND BUDAPEST HOTEL SYSTEM") +input("\t\t\tPress enter to continue") clear() while True: print("Im System stehen Ihnen verschiedene Funktionen zur Verfügung.\n") - + print(""" +1.Buchhaltung +2.Kundenverwaltung +3.Zimmerverwaltung +4.Schlüsselverwaltung +5.Dienstpläne\n""") while True: - print(""" -Buchhaltung -Kundenverwaltung -Zimmerverwaltung -Schlüsselverwaltung -Dienstpläne\n""") - print("Welches der folgenden Systeme möchten Sie öffnen?") system = input().strip().lower() if system in system_list or system == "beenden": @@ -574,15 +614,15 @@ Dienstpläne\n""") clear() print("Bitte wählen Sie aus einem der bestehenden Systeme aus.") print(""" -Buchhaltung -Kundenverwaltung -Zimmerverwaltung -Schküsselverwaltung -Dienstpläne\n""") +1.Buchhaltung +2.Kundenverwaltung +3.Zimmerverwaltung +4.Schlüsselverwaltung +5.Dienstpläne\n""") #"""-----------INTERFACE-----ACCOUNTING------------------""" - if system == system_list[0]: #Accounting + if system == "1": #Accounting clear() while True: @@ -626,10 +666,14 @@ Abbrechen else: delete_bill(bill_numb) # Delete bill at client + bill_list.remove(bill_numb) # Delete bill at bill_list + delete_ = "del " + bill_numb exec(delete_) # Delete bill in system - - bill_list.remove(bill_numb) # Delete bill at bill_list + + #### + #Kunde auschecken + #### input() clear() continue @@ -640,48 +684,62 @@ Abbrechen #"""-----------INTERFACE-----CLIENT------------------""" - if system == system_list[1]: #Client #bearbeitet ab hier + if system == "2": #Client clear() + while True: - print("Willkommen in der Kundenverwaltung") - print("Welche der folgenen Aktionen möchten Sie ausführen") - print(""" + print("Willkommen in der Kundenverwaltung") + print("Welche der folgenen Aktionen möchten Sie ausführen") + print(""" 1. Kunde hinzufügen 2. Kunde anzeigen 3. Kunde einchecken -4. Zimmer wechseln -5. Name ändern -6. Kunde auschecken (fehlt noch!) +4. Kunde auschecken +5. Freie Zimmer über Zeitraum anzeigen. Abbrechen """) - client = input().strip().lower() - if client == "1": - print("Kunde hinzufügen\n") - c = add_client() - exec(c) - clear() - continue + client = input().strip().lower() + if client == "1": + print("Kunde hinzufügen\n") + c = add_client() + exec(c) + clear() + continue - if client == "2": - print("Kunde anzeigen\n") - print(client_list) - while True: - k = input("Über welchen Kunden wollen sie sich Information anzeigen lassen? ") - if k in client_list: - break - else: - print("Dieser Kunde ist leider nicht im System.") - c = str(k) + ".info()" - exec(c) - clear() - continue + if client == "2": + print("Kunde anzeigen\n") + print(all_clients) + while True: + k = input("Über welchen Kunden wollen sie sich Information anzeigen lassen? ") + if k in all_clients: + break + else: + print("Dieser Kunde ist leider nicht im System.") + c = str(k) + ".info()" + exec(c) + input() + clear() + continue - if client == "3": - print("Kunde einchecken\n") - while True: - print("In welchem Zeitraum möchten Sie schauen, ob Zimmer frei sind?") + if client == "3": + print("Kunde einchecken\n") + print("Welchen Kunden möchten Sie einchecken?") + + print(client_list) + while True: + client = input() + if client in client_list: + break + while True: + print(reference) + print("Zimmerauswahl") + room_ = input() + if room_ in reference: + break + else: + print("Dieses Zimmer ist in unserem Hotel leider nicht vorhanden.") print("Aufenthaltszeitraum") while True: day_arrival = input("Anreisetag: ") @@ -701,65 +759,225 @@ Abbrechen break period = str(day_arrival) + "," +str(month_arrival) + "," + str(day_depature) + "," + str(month_depature) - #print(period) - for i in reference: - k = str(i) + ".is_occupied(" + "'" + str(i) + "'" + "," + "'" + str(period) + "'" + ")" - #print(k) - exec(k) - - print("Welchen Kunden möchten Sie einchecken?") - print(client_list) - while True: - client = input() - if client in client_list: - break - while True: - print("Zimmer") - room_ = input() - if room_ in reference: - break - else: - print("Dieses Zimmer ist in unserem Hotel leider nicht vorhanden.") + check_ = str(room_) + ".is_free(" + "'" + str(client) + "'" + "," + "'" + str(room_) \ + + "'" + "," + "'" + str(period) + "'" + ")" + print(check_) + exec(check_) - #room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]] - #for i in room_types: - # if i[0] == room_: - # key_num = i[1]+1 - # print("Der Kunde erhält den Schlüssel", key_num) + clear() + continue + + if client == "4": + print("Auschecken\n") + print("Welchen Gast möchten Sie auschecken?") + print(checked_in_list) + while True: + client = input() + if client in checked_in_list: + checking_out = str(client) + ".check_out()" + exec(checking_out) + break + if client == "abbrechen": + break + - #check = str(client) + ".check_in(" + "'" + str(room_) + "'" + "," + str(key_num)+ ")" - #print(check) - #exec(check) - clear() - continue - if client == "4": - print("Zimmer wechseln\n") - clear() + clear() + continue - if client == "5": - print("Name ändern\n") - clear() - if client == "6": - print("Kunde auschecken\n") - clear() + if client == "5": + print("Freie Zimmer anzeigen\n") + while True: + print("In welchem Zeitraum möchten Sie schauen, ob Zimmer frei sind?") + print("Aufenthaltszeitraum") + while True: + day_arrival = input("Anreisetag: ") + if day_arrival.isdigit() and 0 < int(day_arrival) and int(day_arrival) < 28: + break + while True: + month_arrival = input("Anreisemonat: ") + if month_arrival.isdigit() and 0 < int(month_arrival) and int(month_arrival) < 12: + break + while True: + day_depature = input("Abreisetag: ") + if day_depature.isdigit() and 0 < int(day_depature) and int(day_depature) < 28: + break + while True: + month_depature = input("Abreisemonat: ") + if month_depature.isdigit() and 0 < int(month_depature) and int(month_depature) < 12: + break + + period = str(day_arrival) + "," +str(month_arrival) + "," + str(day_depature) + "," + str(month_depature) + #print(period) + for i in reference: + k = str(i) + ".is_occupied(" + "'" + str(i) + "'" + "," + "'" + str(period) + "'" + ")" + #print(k) + exec(k) + input() + clear() + continue - else: - clear() - break + if client == "abbrechen": + input() + clear() + break #"""-----------INTERFACE-----ROOM------------------""" - if system == system_list[2]: #Room - pass + if system == "3": #Room + clear() + while True: + print("\nWillkommen in der Zimmerverwaltung") + print("Welche der folgenen Aktionen möchten Sie ausführen") + print(""" +1. Zimmerstatus anzeigen +Abbrechen +""") + + room_input = input().strip().lower() + if room_input == "1": + while True: + print("Zimmerstatus anzeigen\n") + print(reference) + print("Name des Zimmers:") + dorm = input() + if dorm in reference: + print(""" +1. Ale Informationen +2. Nummer +3.Gast""") + + dorm_info = input() + if dorm_info == "1": + print("Zimmer:", dorm) + dorm_exec = str(dorm) + ".info()" + exec(dorm_exec) + input() + clear() + break + if dorm_info == "2": + print("Zimmer:", dorm) + dorm_exec = str(dorm) + ".info("+ "'Nummer'" +")" + exec(dorm_exec) + input() + clear() + break + if dorm_info == "3": + print("Zimmer:", dorm) + dorm_exec = str(dorm) + ".info("+ "'Gast'" +")" + exec(dorm_exec) + input() + clear() + break + if dorm_info == "abbrechen": + clear() + break + + if room_input == "abbrechen": + clear() + break + + + if system == "4": #Key + clear() + while True: + print("Willkommen in der Schlüsselverwaltung") + print("Welche der folgenen Aktionen möchten Sie ausführen") + print(""" +1. Schlüsselstatus anzeigen +Abbrechen""") + + key_input = input().strip().lower() + if key_input == "1": + while True: + print("Schlüsselstatus anzeigen\n") + all_key_numbers = ["11", "12", "21", "22", "31", "32", "41", "42"] + print(all_key_numbers) + key_num = input("Schlüsselnummer ") + print("") + if key_num in all_key_numbers: + key_print = "key_" + key_num + ".status_key()" + exec(key_print) + input() + clear() + break + if key_num == "abbrechen": + clear() + break + else: + print("Was ist schief gelaufen") + if key_input == "abbrechen": + clear() + break + + if system == "5": #duty_roster + clear() + def duty_roster_write(): + with open('dienstplan.txt', 'w', encoding='utf8') as d: + employees = ['M. Gustave', 'Zero Mustafa', 'M. Jean', 'Agatha', 'M. Chuck'] + job = ['Concierge', 'Lobby-Boy', 'Rezeptionist', 'Portier'] + i = 1 + while i < 53: + random.shuffle(employees) + random.shuffle(job) + a = "KW" + str(i) + d.write(a + "#" + employees[0] + ": " + job[0] + "#" + employees[1]\ ++ ": " + job[1] + "#" + employees[2] + ": " + job[2] + "#" + employees[3] + ": " \ ++ job[3] + "#" + "frei: " + employees[4] + "\n") + i += 1 + + def duty_roster_read(): + with open('dienstplan.txt', 'r', encoding='utf8') as d: + for line in d: + print(line) + + while True: + print("\nWillkommen dei den Dienstplänen") + print("Welche der folgenen Aktionen möchten Sie ausführen") + print(""" +1. Dienstplan erstellen und anzeigen +2. Dienstplan exportieren +3. Dienstplan importieren +Abbrechen""") + + duty = input().strip().lower() + if duty == "1": + try: + duty_roster_write() + duty_roster_read() + except: + print("Es konnte kein Dienstplan erstellt werden.") + input() + clear() + continue + if duty == "2": + try: + duty_roster_write() + print("Der Dienstplan wurde erfolgreich exportiert.") + except: + print("Der Diensplan konnte nicht exportiert werden.") + input() + clear() + continue + if duty == "3": + try: + duty_roster_read() + except: + print("Es konnte kein Dienstplan unter dem Namen \ +dienstplan.txt im Verzeichnis gefunden werden.") + input() + clear() + continue + if duty == "abbrechen": + input() + clear() + break + + - if system == system_list[3]: #Key - pass - if system == system_list[4]: #duty_roster - pass if system == "beenden": clear() print("The Grand Budapest Hotel wünscht noch einen angenehmen Tag.") @@ -778,3 +996,4 @@ Abbrechen #break + diff --git a/dienstplan.txt b/dienstplan.txt new file mode 100644 index 0000000..7a9417b --- /dev/null +++ b/dienstplan.txt @@ -0,0 +1,52 @@ +KW1#Zero Mustafa: Lobby-Boy#M. Jean: Rezeptionist#M. Chuck: Concierge#M. Gustave: Portier#frei: Agatha +KW2#M. Jean: Concierge#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#frei: M. Chuck +KW3#M. Jean: Rezeptionist#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Portier#frei: Agatha +KW4#M. Gustave: Portier#Zero Mustafa: Concierge#Agatha: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Chuck +KW5#M. Gustave: Concierge#Agatha: Portier#M. Chuck: Rezeptionist#M. Jean: Lobby-Boy#frei: Zero Mustafa +KW6#Zero Mustafa: Portier#Agatha: Rezeptionist#M. Chuck: Concierge#M. Jean: Lobby-Boy#frei: M. Gustave +KW7#Agatha: Rezeptionist#M. Jean: Concierge#Zero Mustafa: Portier#M. Chuck: Lobby-Boy#frei: M. Gustave +KW8#M. Chuck: Lobby-Boy#M. Jean: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: Agatha +KW9#M. Chuck: Concierge#Zero Mustafa: Rezeptionist#M. Gustave: Lobby-Boy#Agatha: Portier#frei: M. Jean +KW10#M. Chuck: Concierge#M. Gustave: Portier#Agatha: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa +KW11#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#Agatha: Portier#M. Chuck: Lobby-Boy#frei: M. Jean +KW12#M. Chuck: Concierge#Agatha: Portier#M. Gustave: Rezeptionist#Zero Mustafa: Lobby-Boy#frei: M. Jean +KW13#M. Chuck: Rezeptionist#Agatha: Lobby-Boy#Zero Mustafa: Portier#M. Jean: Concierge#frei: M. Gustave +KW14#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#Zero Mustafa: Rezeptionist#frei: M. Jean +KW15#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#Agatha: Concierge#M. Jean: Rezeptionist#frei: M. Chuck +KW16#M. Jean: Lobby-Boy#M. Chuck: Rezeptionist#M. Gustave: Concierge#Zero Mustafa: Portier#frei: Agatha +KW17#Agatha: Portier#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#Zero Mustafa: Concierge#frei: M. Jean +KW18#Zero Mustafa: Rezeptionist#M. Jean: Concierge#M. Chuck: Lobby-Boy#Agatha: Portier#frei: M. Gustave +KW19#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Concierge#Zero Mustafa: Lobby-Boy#frei: M. Jean +KW20#M. Chuck: Lobby-Boy#Agatha: Rezeptionist#M. Gustave: Concierge#M. Jean: Portier#frei: Zero Mustafa +KW21#Zero Mustafa: Rezeptionist#Agatha: Portier#M. Gustave: Lobby-Boy#M. Chuck: Concierge#frei: M. Jean +KW22#Zero Mustafa: Rezeptionist#M. Chuck: Concierge#M. Jean: Portier#M. Gustave: Lobby-Boy#frei: Agatha +KW23#M. Chuck: Lobby-Boy#M. Gustave: Rezeptionist#M. Jean: Portier#Zero Mustafa: Concierge#frei: Agatha +KW24#M. Gustave: Concierge#Zero Mustafa: Rezeptionist#Agatha: Lobby-Boy#M. Jean: Portier#frei: M. Chuck +KW25#M. Gustave: Concierge#Agatha: Rezeptionist#M. Jean: Portier#Zero Mustafa: Lobby-Boy#frei: M. Chuck +KW26#Zero Mustafa: Lobby-Boy#M. Chuck: Portier#M. Jean: Concierge#M. Gustave: Rezeptionist#frei: Agatha +KW27#M. Chuck: Rezeptionist#Agatha: Portier#Zero Mustafa: Lobby-Boy#M. Jean: Concierge#frei: M. Gustave +KW28#Agatha: Portier#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Rezeptionist#frei: M. Jean +KW29#M. Jean: Portier#M. Gustave: Concierge#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#frei: M. Chuck +KW30#Agatha: Rezeptionist#M. Gustave: Concierge#M. Chuck: Lobby-Boy#M. Jean: Portier#frei: Zero Mustafa +KW31#M. Chuck: Portier#M. Jean: Concierge#Agatha: Rezeptionist#M. Gustave: Lobby-Boy#frei: Zero Mustafa +KW32#M. Jean: Lobby-Boy#M. Gustave: Portier#Zero Mustafa: Rezeptionist#M. Chuck: Concierge#frei: Agatha +KW33#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Concierge#M. Chuck: Rezeptionist#frei: Agatha +KW34#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#M. Chuck: Portier#Agatha: Rezeptionist#frei: M. Jean +KW35#M. Chuck: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Portier#M. Jean: Lobby-Boy#frei: Agatha +KW36#Zero Mustafa: Rezeptionist#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Concierge#frei: Agatha +KW37#M. Gustave: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Jean: Concierge#Agatha: Portier#frei: M. Chuck +KW38#M. Chuck: Rezeptionist#M. Gustave: Portier#M. Jean: Concierge#Zero Mustafa: Lobby-Boy#frei: Agatha +KW39#Agatha: Rezeptionist#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Concierge#frei: M. Chuck +KW40#M. Gustave: Lobby-Boy#Zero Mustafa: Portier#Agatha: Concierge#M. Chuck: Rezeptionist#frei: M. Jean +KW41#Zero Mustafa: Concierge#Agatha: Portier#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Gustave +KW42#M. Chuck: Portier#M. Jean: Rezeptionist#Agatha: Concierge#M. Gustave: Lobby-Boy#frei: Zero Mustafa +KW43#M. Gustave: Portier#M. Jean: Rezeptionist#Zero Mustafa: Concierge#M. Chuck: Lobby-Boy#frei: Agatha +KW44#Agatha: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa +KW45#Zero Mustafa: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#M. Chuck: Concierge#frei: Agatha +KW46#Zero Mustafa: Concierge#M. Jean: Lobby-Boy#M. Chuck: Portier#M. Gustave: Rezeptionist#frei: Agatha +KW47#M. Gustave: Concierge#M. Chuck: Rezeptionist#Zero Mustafa: Portier#M. Jean: Lobby-Boy#frei: Agatha +KW48#M. Gustave: Portier#Zero Mustafa: Rezeptionist#M. Jean: Concierge#M. Chuck: Lobby-Boy#frei: Agatha +KW49#Agatha: Rezeptionist#M. Gustave: Lobby-Boy#M. Chuck: Concierge#Zero Mustafa: Portier#frei: M. Jean +KW50#Agatha: Concierge#M. Jean: Lobby-Boy#M. Gustave: Portier#Zero Mustafa: Rezeptionist#frei: M. Chuck +KW51#M. Jean: Portier#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#frei: M. Chuck +KW52#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#M. Jean: Portier#M. Chuck: Concierge#frei: M. Gustave