100% lauffähig pep8 Check fehlt noch. Doc Strings sind alle eingefügt.
This commit is contained in:
parent
d1d3438d20
commit
daa3ee18bd
397
client_test.py
397
client_test.py
|
@ -6,51 +6,65 @@ import random
|
|||
|
||||
#----------------CLASS---KEY------------------------------------------
|
||||
|
||||
|
||||
class Key:
|
||||
"""Key class for key management."""
|
||||
|
||||
how_many_keys = 0
|
||||
|
||||
# Initialisation of keys
|
||||
def __init__(self, keynumber):
|
||||
"""Initialization of a new key object."""
|
||||
self.number = keynumber
|
||||
self.possessor = "Rezeption"
|
||||
|
||||
#where are the keys
|
||||
def status_key(self, keynumber=None):
|
||||
"""Prints the current possessor of a key."""
|
||||
print("Schlüssel", self.number, "im Besitz", self.possessor)
|
||||
|
||||
def hand_out_key(self, keynumber, Guest):
|
||||
self.possessor = Guest
|
||||
|
||||
def hand_out_key(self, keynumber, guest):
|
||||
"""Changes the current possessor of a key to the guest who checks
|
||||
in."""
|
||||
self.possessor = guest
|
||||
|
||||
def get_back_key(self, keynumber):
|
||||
"""Changes the current possessor of a key to the reception."""
|
||||
self.possessor = "Rezeption"
|
||||
|
||||
# Generates all the keys, two for each room
|
||||
# results in keynumbers: 11, 12, 21, 22, 31, 32, 41, 42
|
||||
# Generates all the keys, two for each room.
|
||||
# results in keynumbers: 11, 12, 21, 22, 31, 32, 41, 42 .
|
||||
key_list = []
|
||||
for i in range(11, 42, 10):
|
||||
a = "key_" + str(i) + " = Key(" + str(i) + ")"
|
||||
exec(a)
|
||||
a2 = "key_list.append(key_" + str(i) + ")"
|
||||
exec(a2)
|
||||
|
||||
|
||||
b = "key_" + str(i+1) + " = Key(" + str(i+1) + ")"
|
||||
exec(b)
|
||||
b2 = "key_list.append(key_" + str(i+1) + ")"
|
||||
exec(b2)
|
||||
|
||||
|
||||
|
||||
#----------------CLASS---CLIENT------------------------------------------
|
||||
#----------------CLASS---CLIENT-------------------------------------
|
||||
#List of clients that are currently checked in.
|
||||
checked_in_list = []
|
||||
#List of clients that are currently checked out.
|
||||
client_list = []
|
||||
#List of all clients of the hotel.
|
||||
all_clients = []
|
||||
|
||||
|
||||
class Client():
|
||||
months = ['Januar', 'Februar','März','April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']
|
||||
|
||||
"""Client class for customer management."""
|
||||
months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli',\
|
||||
'August', 'September', 'Oktober', 'November', 'Dezember']
|
||||
|
||||
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):
|
||||
"""Initialization of a new client object."""
|
||||
|
||||
self.name = name
|
||||
self.surname = surname
|
||||
self.client_num = client_num
|
||||
|
@ -60,59 +74,87 @@ class Client():
|
|||
self.bookings = []
|
||||
self.status = False
|
||||
self.checked_in = checked_in
|
||||
|
||||
Client.clients += 1
|
||||
|
||||
def check_in(self, room, key_num, period):
|
||||
print("Check In")
|
||||
"""Check In function: assign client to room and hand out keys.
|
||||
|
||||
Args:
|
||||
room: room name : str
|
||||
key_num: key number : str
|
||||
period: str
|
||||
|
||||
Returns:
|
||||
new_bill: command for creating a new bill matching the booking
|
||||
"""
|
||||
|
||||
self.checked_in = True
|
||||
self.period = str(period)
|
||||
room_list[reference.index(str(room))].occupy(self.surname, self.period)
|
||||
self.room = str(room)
|
||||
num_ = "key_" + str(key_num) + ".hand_out_key(" + str(key_num) + "," + "'" + str(self.surname) + "')"
|
||||
num_ = "key_" + str(key_num) + ".hand_out_key(" + str(key_num) + "," +\
|
||||
"'" + str(self.surname) + "')"
|
||||
checked_in_list.append(str(self.client_num))
|
||||
client_list.remove(str(self.client_num))
|
||||
self.key_num = int(key_num)
|
||||
self.vip_status()
|
||||
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)
|
||||
if self.status == True:
|
||||
print("Der Kunde besitzt VIP Previlegien. Er erhält \
|
||||
kostenloses Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
|
||||
print("Check In erfolgreich.")
|
||||
new_bill = add_bill(self.name, self.surname, self.client_num, room,\
|
||||
self.period)
|
||||
return new_bill
|
||||
|
||||
def check_out(self):
|
||||
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.")
|
||||
"""Check out function: clear room, key to reception"""
|
||||
if self.checked_in == True:
|
||||
|
||||
room_list[reference.index(self.room)].free()
|
||||
key_num = self.key_num
|
||||
num_ = "key_" + str(key_num) + ".get_back_key(" + str(key_num) +\
|
||||
")"
|
||||
self.checked_in = False
|
||||
self.room = None
|
||||
self.period = None
|
||||
self.key_num = None
|
||||
self.vip_status()
|
||||
checked_in_list.remove(self.client_num)
|
||||
client_list.append(self.client_num)
|
||||
except:
|
||||
("Schlüssel mit Daten nicht gefunden.")
|
||||
try:
|
||||
exec(num_)
|
||||
print("Der Gast ist erfolgreich ausgecheckt worden.")
|
||||
|
||||
except:
|
||||
("Schlüssel mit Daten nicht gefunden.")
|
||||
|
||||
|
||||
def client_bill(self, bill_num):
|
||||
"""Appends the new bill number to the bookings of client."""
|
||||
self.bookings.append(str(bill_num))
|
||||
|
||||
def client_bill_delete(self, bill_num):
|
||||
"""Deletes a bill number that includes the checking out process."""
|
||||
if bill_num in self.bookings:
|
||||
self.bookings.remove(bill_num)
|
||||
print("Rechnung wurde beim Gast", self.client_num, "gelöscht.")
|
||||
self.check_out()
|
||||
|
||||
|
||||
def vip_status(self):
|
||||
"""Adjusts the VIP Status of a client."""
|
||||
if len(self.bookings) > 3:
|
||||
self.status = True
|
||||
# Length of stay as print
|
||||
else:
|
||||
self.status = False
|
||||
|
||||
|
||||
def period_print(self):
|
||||
"""Prints the stay period of a guest in a legible format."""
|
||||
# creates a list format to work with
|
||||
stay_period = []
|
||||
num_string = ""
|
||||
for i in self.period:
|
||||
|
@ -132,6 +174,7 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
|
|||
month_print = Client.months[month_num]
|
||||
print("Der Kunde bleibt", abs(days), "Tage.")
|
||||
print("Vom", stay_period[0], "bis", stay_period[2], month_print)
|
||||
|
||||
# Across months
|
||||
if stay_period[1] != stay_period[3]:
|
||||
# Stay period more than 1 month
|
||||
|
@ -147,11 +190,12 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
|
|||
month_print_1 = Client.months[month_num_1]
|
||||
month_print_2 = Client.months[month_num_2]
|
||||
print("Der Kunde bleibt", abs(days), "Tage.")
|
||||
print("Vom", stay_period[0], month_print_1, "bis", stay_period[2], month_print_2)
|
||||
print("Vom", stay_period[0], month_print_1, "bis", \
|
||||
stay_period[2], month_print_2)
|
||||
|
||||
|
||||
# Client information
|
||||
def info(self, action = None):
|
||||
"""Prints infomation of a client, selected if desired."""
|
||||
dic_ = {"Name" : self.name,
|
||||
"Nachname" : self.surname,
|
||||
"Kundennummer" : self.client_num,
|
||||
|
@ -182,39 +226,50 @@ Frühstück sowie die kostenlose Benutzung der Mini-Bar.")
|
|||
|
||||
|
||||
class Room:
|
||||
''' Implementierung der Klasse Zimmer '''
|
||||
'''Room class for room management.'''
|
||||
|
||||
def __init__(self, room_number, guest=None, period=None):
|
||||
"""Initialization of a new room object."""
|
||||
|
||||
self.number = room_number
|
||||
self.occupied = False
|
||||
self.resident = None
|
||||
self.period = None
|
||||
|
||||
# Room gets occupied by a client
|
||||
|
||||
def occupy(self, guest, period):
|
||||
"""Values in accordance with the given information,
|
||||
when room gets occupied"""
|
||||
|
||||
self.occupied = True
|
||||
self.resident = guest
|
||||
self.period = period
|
||||
|
||||
# Room is no longer occupied
|
||||
def free(self):
|
||||
|
||||
def free(self):
|
||||
"""Frees the room."""
|
||||
self.occupied = False
|
||||
self.resident = None
|
||||
self.period = None
|
||||
|
||||
def is_free(self, client_num, room_name, period):
|
||||
"""Checks if room is free in desired period.
|
||||
|
||||
Returns:
|
||||
check: command for checking in.
|
||||
"""
|
||||
|
||||
occupied = self.period
|
||||
if occupied == None:
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
|
||||
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
|
||||
|
||||
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
|
||||
+ "," + "'" + str(period) + "'" +"))"
|
||||
print(check)
|
||||
exec(check)
|
||||
check = "exec(" + str(client_num) + ".check_in(" + "'" + \
|
||||
str(room_name) + "'" + "," + str(key_num) + "," + "'" + str(period) + "'" +"))"
|
||||
return (check)
|
||||
|
||||
else:
|
||||
stay_period = []
|
||||
|
@ -240,38 +295,43 @@ class Room:
|
|||
stay_period_new.append(num_string)
|
||||
|
||||
if int(stay_period[3]) < int(stay_period_new[1]):
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
|
||||
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
|
||||
|
||||
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
|
||||
+ "," + "'" + str(period) + "'" +"))"
|
||||
print(check)
|
||||
exec(check)
|
||||
check = "exec(" + str(client_num) + ".check_in(" + "'" +\
|
||||
str(room_name) + "'" + "," + str(key_num) + "," + "'" + str(period) + "'" +"))"
|
||||
return (check)
|
||||
|
||||
|
||||
if int(stay_period[3]) > int(stay_period_new[1]):
|
||||
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
|
||||
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[2]) > int(stay_period_new[0]):
|
||||
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]]
|
||||
if int(stay_period[2]) <= int(stay_period_new[0]):
|
||||
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
|
||||
|
||||
check = "exec(" + str(client_num) + ".check_in(" + "'" + str(room_name) + "'" + "," + str(key_num)\
|
||||
+ "," + "'" + str(period) + "'" +"))"
|
||||
print(check)
|
||||
exec(check)
|
||||
check = "exec(" + str(client_num) + ".check_in(" +\
|
||||
"'" + str(room_name) + "'" + "," + str(key_num) + "," + "'" + \
|
||||
str(period) + "'" +"))"
|
||||
return (check)
|
||||
|
||||
|
||||
|
||||
def is_occupied(self, room_name, period):
|
||||
"""Checks if room is available in given period."""
|
||||
|
||||
if self.period == None:
|
||||
print("Das Zimmer", str(room_name)," ist frei.")
|
||||
if self.period != None:
|
||||
|
@ -296,25 +356,29 @@ class Room:
|
|||
num_string = ""
|
||||
|
||||
stay_period_new.append(num_string)
|
||||
#print(stay_period, stay_period_new)
|
||||
|
||||
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.")
|
||||
print("Das Zimmer", room_name, "ist in dem gewünschten\
|
||||
Zeitraum frei.")
|
||||
|
||||
if int(stay_period[3]) > int(stay_period_new[1]):
|
||||
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
|
||||
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[2]) > int(stay_period_new[0]):
|
||||
print("Das Zimmer", room_name, " ist in dem gewünschten Zeitraum belegt.")
|
||||
#print(stay_period[2], 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[0]):
|
||||
print("Das Zimmer", room_name, "ist in dem gewünschten Zeitraum frei.")
|
||||
#print(stay_period[2], stay_period_new[0])
|
||||
|
||||
# room information
|
||||
print("Das Zimmer", room_name, "ist in dem gewünschten\
|
||||
Zeitraum frei.")
|
||||
|
||||
|
||||
def info(self, action = None):
|
||||
"""Prints infomation of a room, selected if desired."""
|
||||
|
||||
dic_ = {"Nummer" : self.number,
|
||||
"Gast" : self.resident,
|
||||
}
|
||||
|
@ -325,9 +389,11 @@ class Room:
|
|||
|
||||
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_:
|
||||
|
@ -337,7 +403,8 @@ class Room:
|
|||
# Generates all the rooms
|
||||
# nr.10-"Single", nr.20-"Double", nr.30-"Suite", nr.40-"Panorama_Suite"
|
||||
reference = ["Single", "Double", "Suite", "Panorama_Suite"]
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], \
|
||||
["Panorama_Suite", 40]]
|
||||
room_list = []
|
||||
for i in room_types:
|
||||
tmp = i[0] + " = Room(" + str(i[1]) + ")"
|
||||
|
@ -345,14 +412,15 @@ for i in room_types:
|
|||
tmp = "room_list.append(" + str(i[0]) + ")"
|
||||
exec(tmp)
|
||||
|
||||
|
||||
#----------------CLASS--ACCOUNTING----------------------------
|
||||
|
||||
class Accounting():
|
||||
'''Accounting class for accounting management.'''
|
||||
all_bills = []
|
||||
counter = 0
|
||||
def __init__(self, name:str, surname:str, client_num:str, room:str, period:str, bill_num:str, bill_status:bool):
|
||||
print("Wird Ausgeführt")
|
||||
def __init__(self, name:str, surname:str, client_num:str, room:str,\
|
||||
period:str, bill_num:str, bill_status:bool):
|
||||
"""Initialization of a new bill object."""
|
||||
self.name = name
|
||||
self.surname = surname
|
||||
self.client_num = client_num
|
||||
|
@ -361,16 +429,17 @@ class Accounting():
|
|||
self.bill_status = bill_status
|
||||
Accounting.counter += 1
|
||||
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30], ["Panorama_Suite", 40]]
|
||||
room_types = [["Single", 10], ["Double", 20], ["Suite", 30],\
|
||||
["Panorama_Suite", 40]]
|
||||
for i in room_types:
|
||||
if i[0] == room:
|
||||
self.room = i[1]
|
||||
|
||||
var = str(client_num) + ".client_bill(" + "'" + bill_num + "'" + ")"
|
||||
print(var)
|
||||
exec(var)
|
||||
|
||||
def show_bill(self):
|
||||
"""Prints the bill."""
|
||||
|
||||
stay_period = []
|
||||
num_string = ""
|
||||
|
@ -395,25 +464,27 @@ class Accounting():
|
|||
if int(stay_period[3]) - int(stay_period[1]) > 1:
|
||||
days = 28 - int(stay_period[0]) + int(stay_period[2]) + \
|
||||
((int(stay_period[3]) - int(stay_period[1])-1) * 28)
|
||||
# Stay period
|
||||
# Stay period
|
||||
else:
|
||||
days = 28 - int(stay_period[0]) + int(stay_period[2])
|
||||
days = abs(days)
|
||||
costs = int(days) * int(self.room)
|
||||
|
||||
"""_______________________________________________________________________"""
|
||||
lines = [[] for i in range(13)]
|
||||
lines[0].append( '┌─────────────────────────────┐')
|
||||
lines[1].append( '│ Rechnung │')
|
||||
lines[2].append( '│ │')
|
||||
lines[3].append( '│Kunde: {} {} '.format(self.name, self.surname))
|
||||
lines[3].append( '│Kunde: {} {} '.format(self.name,\
|
||||
self.surname))
|
||||
lines[4].append( '│Zimmer: {} '.format(self.room))
|
||||
lines[5].append( '│Anz. Tage:{} '.format(days))
|
||||
lines[6].append( '│pro Nacht:{}€ '.format(self.room))
|
||||
lines[7].append( '│Kosten: {}€ '.format(costs))
|
||||
lines[8].append( '│ ')
|
||||
lines[9].append( '│Rech. Nr.:{} '.format(self.bill_num,))
|
||||
lines[10].append('│Beglichen:{} '.format(self.bill_status))
|
||||
lines[9].append( '│Rech. Nr.:{} '.format\
|
||||
(self.bill_num,))
|
||||
lines[10].append('│Beglichen:{} '.format\
|
||||
(self.bill_status))
|
||||
lines[11].append('│ │')
|
||||
lines[12].append('└─────────────────────────────┘')
|
||||
|
||||
|
@ -422,18 +493,19 @@ class Accounting():
|
|||
|
||||
|
||||
def pay_bill(self):
|
||||
"""Pay function."""
|
||||
self.bill_status = True
|
||||
print("Rechnung", self.bill_num, "wurde bezahlt.")
|
||||
|
||||
def delete_bill(self, bill_num):
|
||||
"""Deletes bill from bill list and from client."""
|
||||
for i in all_clients:
|
||||
var = str(i) + ".client_bill_delete(" + "'" + bill_num + "'" + ")"
|
||||
exec(var)
|
||||
var_ = str(i) + ".check_out()"
|
||||
exec(var_)
|
||||
|
||||
|
||||
def __del__(self):
|
||||
"""Called when object is destroyed."""
|
||||
print("Rechnung wurde storniert.")
|
||||
|
||||
|
||||
|
@ -442,17 +514,33 @@ bill_list = []
|
|||
|
||||
|
||||
def add_bill(name, surname, client_num, room, period):
|
||||
"""Fuction for adding bill when bookings are made.
|
||||
|
||||
Args:
|
||||
name: str
|
||||
surname: str
|
||||
client_num: str
|
||||
room: str
|
||||
period: str
|
||||
|
||||
Returns:
|
||||
c: command for creating the bill in accounting class
|
||||
"""
|
||||
|
||||
bill_numb = "r" + str(Accounting.counter)
|
||||
|
||||
c = bill_numb + " = Accounting(" + '"' + str(name) + '"' + "," + '"' + \
|
||||
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + str(room) + '"' + "," + '"' + str(period) + \
|
||||
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + \
|
||||
str(room) + '"' + "," + '"' + str(period) + \
|
||||
'"' + "," + '"'+ str(bill_numb) + '"' + ", False)"
|
||||
|
||||
bill_list.append(bill_numb)
|
||||
return c
|
||||
|
||||
|
||||
def show_single_bill():
|
||||
"""Prints the bill of a given bill number."""
|
||||
|
||||
print("Volgenden Rechnungsnummern stehen zur Auswahl:")
|
||||
print(bill_list)
|
||||
while True:
|
||||
|
@ -465,9 +553,12 @@ def show_single_bill():
|
|||
exec(c)
|
||||
except:
|
||||
print("Rechnung wurde nicht gefunden.")
|
||||
|
||||
|
||||
|
||||
def pay_your_bill():
|
||||
"""Function for pay a bill of a client."""
|
||||
|
||||
print("Folgenden Rechnungsnummern stehen zur Auswahl:")
|
||||
print(bill_list)
|
||||
print("Rechungsnummer? ")
|
||||
|
@ -484,15 +575,17 @@ def pay_your_bill():
|
|||
|
||||
|
||||
def delete_bill(bill_numb):
|
||||
"""Function that calls the delete function of a bill in the
|
||||
accounting class."""
|
||||
|
||||
k = str(bill_numb) + ".delete_bill(bill_numb)"
|
||||
exec(k)
|
||||
|
||||
|
||||
#-------------ADDITIONAL---CLIENT---METHODS-------------------------
|
||||
|
||||
|
||||
|
||||
def clear():
|
||||
"""Clear function for clean surface."""
|
||||
if os.name == "posix":
|
||||
os.system("clear")
|
||||
elif os.name in ("nt", "dos", "ce"):
|
||||
|
@ -502,6 +595,10 @@ def clear():
|
|||
|
||||
|
||||
def add_client():
|
||||
"""Add a new client.
|
||||
|
||||
Returns:
|
||||
c: command for creating the client in client class."""
|
||||
while True:
|
||||
name = input("Name : ")
|
||||
if name.isalpha():
|
||||
|
@ -515,26 +612,22 @@ def add_client():
|
|||
client_num = "c" + str(Client.clients)
|
||||
room_num = None
|
||||
key_num = None
|
||||
c = str(client_num) + " = Client(" + '"' + str(name) + '"' + "," + '"' + \
|
||||
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + str(room_num) \
|
||||
+ '"' + "," + '"' + str(period) + '"' + "," + '"'+ str(key_num) + '"' + ",[], False, False)"
|
||||
|
||||
c = str(client_num) + " = Client(" + '"' + str(name) + '"' + "," + '"' +\
|
||||
str(surname) + '"' + "," + '"' + str(client_num) + '"' + "," + '"' + \
|
||||
str(room_num) + '"' + "," + '"' + str(period) + '"' + "," + '"'+ \
|
||||
str(key_num) + '"' + ",[], False, False)"
|
||||
|
||||
client_list.append(client_num)
|
||||
all_clients.append(client_num)
|
||||
return c
|
||||
|
||||
|
||||
k = add_client()
|
||||
exec(k)
|
||||
|
||||
j = c0.check_in("Suite",31, "2,3,4,5")
|
||||
exec(j)
|
||||
clear()
|
||||
|
||||
|
||||
|
||||
#Path for soundfile
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
|
||||
#Checks if simpleaudio module is imported
|
||||
imported = True
|
||||
try:
|
||||
import simpleaudio
|
||||
|
@ -543,6 +636,12 @@ except ModuleNotFoundError:
|
|||
|
||||
|
||||
def play_sound():
|
||||
"""Plays sound with simpleaudio module.
|
||||
|
||||
Returns:
|
||||
play_obj: plays the sound
|
||||
None if no sound plays."""
|
||||
|
||||
if imported:
|
||||
wave_obj = simpleaudio.WaveObject.from_wave_file\
|
||||
(os.path.join(dir_path, "grandhotel.wav"))
|
||||
|
@ -552,24 +651,29 @@ def play_sound():
|
|||
|
||||
|
||||
def stop_sound(play_obj):
|
||||
"""Stops the sound."""
|
||||
|
||||
if play_obj is not None:
|
||||
play_obj.stop()
|
||||
|
||||
|
||||
def ascii_print():
|
||||
"""Prints the intro logo."""
|
||||
|
||||
with open('ascii_print_hotel', 'r', encoding='utf8') as ascii_:
|
||||
for line in ascii_:
|
||||
sys.stdout.write(line)
|
||||
time.sleep(0.1)
|
||||
|
||||
system_list = ["1", "2", "3", "4", "5"]
|
||||
|
||||
"""-------------START-----INTERFACE--------------------"""
|
||||
input("Start?")
|
||||
system_list = ["1", "2", "3", "4", "5"]
|
||||
|
||||
clear()
|
||||
#Intro
|
||||
#Intro sound
|
||||
play_obj = play_sound()
|
||||
|
||||
#Logo Print
|
||||
#Intro Logo Print
|
||||
ascii_print()
|
||||
|
||||
|
||||
|
@ -689,7 +793,8 @@ Abbrechen
|
|||
print("Kunde anzeigen\n")
|
||||
print(all_clients)
|
||||
while True:
|
||||
k = input("Über welchen Kunden wollen sie sich Information anzeigen lassen? ")
|
||||
k = input("Über welchen Kunden wollen sie sich Information\
|
||||
anzeigen lassen? ")
|
||||
if k in all_clients:
|
||||
break
|
||||
else:
|
||||
|
@ -716,33 +821,46 @@ Abbrechen
|
|||
if room_ in reference:
|
||||
break
|
||||
else:
|
||||
print("Dieses Zimmer ist in unserem Hotel leider nicht vorhanden.")
|
||||
print("Dieses Zimmer ist in unserem Hotel leider nicht\
|
||||
vorhanden.")
|
||||
print("Aufenthaltszeitraum")
|
||||
while True:
|
||||
day_arrival = input("Anreisetag: ")
|
||||
if day_arrival.isdigit() and 0 < int(day_arrival) and int(day_arrival) < 28:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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)
|
||||
|
||||
check_ = str(room_) + ".is_free(" + "'" + str(client) + "'" + "," + "'" + str(room_) \
|
||||
+ "'" + "," + "'" + str(period) + "'" + ")"
|
||||
print(check_)
|
||||
exec(check_)
|
||||
period = str(day_arrival) + "," +str(month_arrival) + "," + \
|
||||
str(day_depature) + "," + str(month_depature)
|
||||
|
||||
check_ = "j = " + str(room_) + ".is_free(" + "'" + str(client)\
|
||||
+ "'" + "," + "'" + str(room_) + "'" + "," + "'" + str(period) + "'" + ")"
|
||||
|
||||
try:
|
||||
exec(check_)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
exec(j)
|
||||
except:
|
||||
pass
|
||||
|
||||
input()
|
||||
clear()
|
||||
continue
|
||||
|
||||
|
@ -759,7 +877,7 @@ Abbrechen
|
|||
if client == "abbrechen":
|
||||
break
|
||||
|
||||
|
||||
input()
|
||||
clear()
|
||||
continue
|
||||
|
||||
|
@ -767,31 +885,39 @@ Abbrechen
|
|||
if client == "5":
|
||||
print("Freie Zimmer anzeigen\n")
|
||||
while True:
|
||||
print("In welchem Zeitraum möchten Sie schauen, ob Zimmer frei sind?")
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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)
|
||||
period = str(day_arrival) + "," + str(month_arrival) +\
|
||||
"," + str(day_depature) + "," + str(month_depature)
|
||||
|
||||
for i in reference:
|
||||
k = str(i) + ".is_occupied(" + "'" + str(i) + "'" + "," + "'" + str(period) + "'" + ")"
|
||||
#print(k)
|
||||
k = str(i) + ".is_occupied(" + "'" + str(i) + "'"\
|
||||
+ "," + "'" + str(period) + "'" + ")"
|
||||
|
||||
exec(k)
|
||||
break
|
||||
input()
|
||||
clear()
|
||||
continue
|
||||
|
@ -870,7 +996,8 @@ Abbrechen""")
|
|||
if key_input == "1":
|
||||
while True:
|
||||
print("Schlüsselstatus anzeigen\n")
|
||||
all_key_numbers = ["11", "12", "21", "22", "31", "32", "41", "42"]
|
||||
all_key_numbers = ["11", "12", "21", "22", \
|
||||
"31", "32", "41", "42"]
|
||||
print(all_key_numbers)
|
||||
key_num = input("Schlüsselnummer ")
|
||||
print("")
|
||||
|
@ -891,21 +1018,28 @@ Abbrechen""")
|
|||
|
||||
if system == "5": #duty_roster
|
||||
clear()
|
||||
|
||||
|
||||
def duty_roster_write():
|
||||
"""Creates duty roster for hotel employees."""
|
||||
|
||||
with open('dienstplan.txt', 'w', encoding='utf8') as d:
|
||||
employees = ['M. Gustave', 'Zero Mustafa', 'M. Jean', 'Agatha', 'M. Chuck']
|
||||
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")
|
||||
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():
|
||||
"""Prints duty roster of employees."""
|
||||
|
||||
with open('dienstplan.txt', 'r', encoding='utf8') as d:
|
||||
for line in d:
|
||||
print(line)
|
||||
|
@ -957,6 +1091,3 @@ dienstplan.txt im Verzeichnis gefunden werden.")
|
|||
print("The Grand Budapest Hotel wünscht noch einen angenehmen Tag.")
|
||||
print("Auf Wiedersehen!")
|
||||
break
|
||||
|
||||
#break
|
||||
|
||||
|
|
104
dienstplan.txt
104
dienstplan.txt
|
@ -1,52 +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
|
||||
KW1#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#M. Jean: Lobby-Boy#Agatha: Portier#frei: M. Chuck
|
||||
KW2#Agatha: Lobby-Boy#M. Gustave: Portier#M. Chuck: Rezeptionist#M. Jean: Concierge#frei: Zero Mustafa
|
||||
KW3#M. Jean: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Lobby-Boy#Agatha: Portier#frei: M. Chuck
|
||||
KW4#Zero Mustafa: Portier#M. Chuck: Concierge#Agatha: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Jean
|
||||
KW5#Agatha: Rezeptionist#Zero Mustafa: Concierge#M. Gustave: Portier#M. Jean: Lobby-Boy#frei: M. Chuck
|
||||
KW6#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#Agatha: Concierge#M. Chuck: Portier#frei: M. Gustave
|
||||
KW7#Agatha: Concierge#Zero Mustafa: Portier#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#frei: M. Jean
|
||||
KW8#Agatha: Concierge#M. Jean: Portier#Zero Mustafa: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Chuck
|
||||
KW9#M. Jean: Rezeptionist#M. Gustave: Portier#Agatha: Lobby-Boy#Zero Mustafa: Concierge#frei: M. Chuck
|
||||
KW10#Agatha: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Gustave: Portier#M. Chuck: Concierge#frei: M. Jean
|
||||
KW11#M. Jean: Concierge#Agatha: Lobby-Boy#M. Chuck: Rezeptionist#Zero Mustafa: Portier#frei: M. Gustave
|
||||
KW12#M. Jean: Rezeptionist#Agatha: Portier#M. Gustave: Concierge#M. Chuck: Lobby-Boy#frei: Zero Mustafa
|
||||
KW13#Agatha: Lobby-Boy#M. Chuck: Portier#M. Gustave: Rezeptionist#Zero Mustafa: Concierge#frei: M. Jean
|
||||
KW14#M. Chuck: Concierge#Agatha: Portier#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#frei: M. Gustave
|
||||
KW15#Zero Mustafa: Portier#Agatha: Concierge#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Chuck
|
||||
KW16#M. Jean: Rezeptionist#Zero Mustafa: Lobby-Boy#M. Chuck: Portier#Agatha: Concierge#frei: M. Gustave
|
||||
KW17#Zero Mustafa: Rezeptionist#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#frei: M. Jean
|
||||
KW18#M. Chuck: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#Agatha: Lobby-Boy#frei: M. Jean
|
||||
KW19#M. Gustave: Lobby-Boy#M. Chuck: Rezeptionist#Agatha: Portier#Zero Mustafa: Concierge#frei: M. Jean
|
||||
KW20#M. Gustave: Lobby-Boy#Zero Mustafa: Concierge#M. Chuck: Portier#M. Jean: Rezeptionist#frei: Agatha
|
||||
KW21#Agatha: Portier#Zero Mustafa: Concierge#M. Jean: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Chuck
|
||||
KW22#Agatha: Lobby-Boy#Zero Mustafa: Portier#M. Jean: Rezeptionist#M. Chuck: Concierge#frei: M. Gustave
|
||||
KW23#M. Gustave: Lobby-Boy#Agatha: Rezeptionist#M. Chuck: Concierge#Zero Mustafa: Portier#frei: M. Jean
|
||||
KW24#Zero Mustafa: Lobby-Boy#M. Gustave: Concierge#M. Chuck: Rezeptionist#M. Jean: Portier#frei: Agatha
|
||||
KW25#M. Jean: Concierge#Agatha: Lobby-Boy#M. Chuck: Portier#Zero Mustafa: Rezeptionist#frei: M. Gustave
|
||||
KW26#M. Chuck: Rezeptionist#Agatha: Concierge#M. Gustave: Lobby-Boy#Zero Mustafa: Portier#frei: M. Jean
|
||||
KW27#M. Chuck: Rezeptionist#M. Gustave: Concierge#Agatha: Lobby-Boy#Zero Mustafa: Portier#frei: M. Jean
|
||||
KW28#Zero Mustafa: Rezeptionist#M. Jean: Lobby-Boy#Agatha: Portier#M. Chuck: Concierge#frei: M. Gustave
|
||||
KW29#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Lobby-Boy#M. Jean: Concierge#frei: Zero Mustafa
|
||||
KW30#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Portier#M. Gustave: Concierge#frei: Agatha
|
||||
KW31#M. Chuck: Portier#Agatha: Lobby-Boy#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: M. Jean
|
||||
KW32#M. Gustave: Concierge#M. Jean: Lobby-Boy#Zero Mustafa: Portier#M. Chuck: Rezeptionist#frei: Agatha
|
||||
KW33#Zero Mustafa: Portier#Agatha: Concierge#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#frei: M. Gustave
|
||||
KW34#M. Gustave: Lobby-Boy#M. Chuck: Concierge#Zero Mustafa: Portier#M. Jean: Rezeptionist#frei: Agatha
|
||||
KW35#M. Gustave: Rezeptionist#Zero Mustafa: Concierge#M. Chuck: Lobby-Boy#Agatha: Portier#frei: M. Jean
|
||||
KW36#Agatha: Portier#M. Chuck: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Concierge#frei: M. Gustave
|
||||
KW37#M. Chuck: Lobby-Boy#Zero Mustafa: Concierge#M. Jean: Portier#Agatha: Rezeptionist#frei: M. Gustave
|
||||
KW38#Agatha: Lobby-Boy#M. Chuck: Portier#Zero Mustafa: Rezeptionist#M. Gustave: Concierge#frei: M. Jean
|
||||
KW39#M. Jean: Rezeptionist#Zero Mustafa: Portier#M. Gustave: Concierge#M. Chuck: Lobby-Boy#frei: Agatha
|
||||
KW40#M. Chuck: Concierge#Zero Mustafa: Portier#Agatha: Lobby-Boy#M. Gustave: Rezeptionist#frei: M. Jean
|
||||
KW41#Agatha: Concierge#Zero Mustafa: Portier#M. Jean: Rezeptionist#M. Gustave: Lobby-Boy#frei: M. Chuck
|
||||
KW42#M. Chuck: Lobby-Boy#Zero Mustafa: Portier#M. Gustave: Rezeptionist#M. Jean: Concierge#frei: Agatha
|
||||
KW43#Agatha: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Zero Mustafa
|
||||
KW44#M. Chuck: Lobby-Boy#Agatha: Portier#M. Jean: Rezeptionist#Zero Mustafa: Concierge#frei: M. Gustave
|
||||
KW45#M. Chuck: Concierge#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#Zero Mustafa: Portier#frei: Agatha
|
||||
KW46#M. Gustave: Lobby-Boy#Agatha: Concierge#M. Jean: Rezeptionist#M. Chuck: Portier#frei: Zero Mustafa
|
||||
KW47#Agatha: Lobby-Boy#Zero Mustafa: Rezeptionist#M. Jean: Portier#M. Gustave: Concierge#frei: M. Chuck
|
||||
KW48#M. Jean: Rezeptionist#Agatha: Portier#M. Chuck: Lobby-Boy#M. Gustave: Concierge#frei: Zero Mustafa
|
||||
KW49#Agatha: Concierge#M. Chuck: Lobby-Boy#M. Jean: Portier#M. Gustave: Rezeptionist#frei: Zero Mustafa
|
||||
KW50#Zero Mustafa: Lobby-Boy#M. Gustave: Rezeptionist#Agatha: Portier#M. Chuck: Concierge#frei: M. Jean
|
||||
KW51#Zero Mustafa: Lobby-Boy#Agatha: Rezeptionist#M. Gustave: Portier#M. Chuck: Concierge#frei: M. Jean
|
||||
KW52#Zero Mustafa: Concierge#M. Chuck: Portier#M. Gustave: Lobby-Boy#M. Jean: Rezeptionist#frei: Agatha
|
||||
|
|
Loading…
Reference in New Issue