diff --git a/classes/data/data_initializer.py b/classes/data/data_initializer.py
new file mode 100644
index 0000000..dbe7e37
--- /dev/null
+++ b/classes/data/data_initializer.py
@@ -0,0 +1,143 @@
+import xml.etree.ElementTree as ET
+from posilek import Posilek
+from klient import Klient
+from kelner import Kelner
+from stolik import Stolik
+from zamowenie import Zamowienie
+with open('database\\meals.xml', 'r') as file:
+ xml_data = file.read()
+tree = ET.ElementTree(ET.fromstring(xml_data))
+root = tree.getroot()
+
+meals = []
+for meal in root.findall('meal'):
+ name_element = meal.find('name')
+ name = name_element.text if name_element is not None else ''
+
+ surname_element = meal.find('type')
+ type = surname_element.text if surname_element is not None else ''
+
+ age_element = meal.find('price')
+ price = float(age_element.text) if age_element is not None and age_element.text else 0.0
+
+ alergens_element = meal.find('alergens')
+ alergens = [alergen.text for alergen in alergens_element] if alergens_element is not None else []
+
+ vegetarian_element = meal.find('vegetarian')
+ vegetarian = vegetarian_element.text == 'true' if vegetarian_element is not None else False
+
+ vegan_element = meal.find('vegan')
+ vegan = vegan_element.text == 'true' if vegan_element is not None else False
+
+ meat_element = meal.find('meat')
+ meat = meat_element.text == 'true' if meat_element is not None else False
+
+ meal_data = {
+ 'nazwa': name,
+ 'typ': type,
+ 'cena': price,
+ 'alergeny': alergens,
+ 'vegan_vegetarian_meat': (vegetarian, vegan, meat)
+ }
+
+ meals.append(Posilek(**meal_data))
+ # Use the posilek_instance as needed
+
+with open('database\\clients.xml', 'r') as file:
+ xml_data = file.read()
+
+tree = ET.ElementTree(ET.fromstring(xml_data))
+root = tree.getroot()
+
+
+
+clients = []
+for person in root.findall('person'):
+ name_element = person.find('name')
+ name = name_element.text if name_element is not None else ''
+
+ surname_element = person.find('surname')
+ surname = surname_element.text if surname_element is not None else ''
+
+ age_element = person.find('age')
+ age = int(age_element.text) if age_element is not None and age_element.text else 0
+
+ person_data = {
+ 'imie': name,
+ 'nazwisko': surname,
+ 'wiek': age
+ }
+
+ clients.append(Klient(**person_data))
+ # Use the person_instance as needed
+
+
+with open('database\\servers.xml', 'r') as file:
+ xml_data = file.read()
+
+tree = ET.ElementTree(ET.fromstring(xml_data))
+root = tree.getroot()
+
+servers = []
+for server in root.findall('server'):
+ name_element = server.find('name')
+ name = name_element.text if name_element is not None else ''
+
+ surname_element = server.find('surname')
+ surname = surname_element.text if surname_element is not None else ''
+
+ employee_number_element = server.find('employee_number')
+ employee_number = int(employee_number_element.text) if employee_number_element is not None and employee_number_element.text else 0
+
+ server_data = {
+ 'imie': name,
+ 'nazwisko': surname,
+ 'numer_pracowniczy': employee_number
+ }
+
+ servers.append(Kelner(**server_data))
+
+
+
+
+
+# Prezentacja uzycia przykładowego
+import random
+stoliki = []
+for i in range(3):
+ stolik = Stolik(i+1)
+ stoliki.append(stolik)
+ stolik.przypisz_kelner(servers[i%len(servers)])
+
+
+zamowienia = []
+for i in range(6):
+ zamowienie = []
+ for j in range(2):
+ zamowienie.append(meals[random.randint(0, len(meals)-1)])
+ zamowienia.append(Zamowienie(i+1, zamowienie))
+
+
+for stolik in stoliki:
+ klient = clients[random.randint(0, len(clients)-1)]
+ klient.zloz_zamowienie(zamowienia[random.randint(0, len(zamowienia)-1)], stolik)
+
+
+
+
+for klient in [k for k in clients if k.stolik is not None]:
+ print(f"Klient {klient.imie} {klient.nazwisko} ma następujące Zamowienia:")
+ print(f"\t{klient.rachunek} i sumą {klient.rachunek.suma()}")
+
+
+
+
+
+# for meal in meals:
+# print(meal)
+
+# for client in clients:
+# print(client)
+
+# for server in servers:
+# print(server)
\ No newline at end of file
diff --git a/classes/kelner.py b/classes/data/kelner.py
similarity index 66%
rename from classes/kelner.py
rename to classes/data/kelner.py
index 9cb9d1d..c6c4dd6 100644
--- a/classes/kelner.py
+++ b/classes/data/kelner.py
@@ -1,7 +1,9 @@
import pygame
-import prefs
class Kelner:
def __init__ (self, imie, nazwisko,numer_pracowniczy):
self.imie = imie
self.nazwisko = nazwisko
self.numer_pracowniczy = numer_pracowniczy
+ def __str__(self):
+ return f"{self.imie} {self.nazwisko} ({self.numer_pracowniczy})"
+
diff --git a/classes/klient.py b/classes/data/klient.py
similarity index 64%
rename from classes/klient.py
rename to classes/data/klient.py
index 3050149..7d9c85e 100644
--- a/classes/klient.py
+++ b/classes/data/klient.py
@@ -1,17 +1,23 @@
import pygame
-import prefs
+from rachunek import Rachunek
+import random
+
class Klient:
def __init__(self,imie,nazwisko,wiek):
self.imie = imie
self.nazwisko = nazwisko
self.wiek = wiek
self.stolik = None
+ self.rachunek = Rachunek(random.randint(1,1000))
def zloz_zamowienie(self,zamowienie,stolik):
if self.stolik is None:
self.stolik = stolik
- stolik.przypisz_kelnera(stolik.kelner)
- stolik.dodaj_zamowienie(zamowienie)
+ stolik.przypisz_kelner(stolik.kelner)
+ self.rachunek.dodaj_zamowienie(zamowienie)
print(f"Klinet {self.imie} {self.nazwisko} zlozyl zamowienie przy stoliku {stolik.numer_stolika} i przyjal je kelner {stolik.kelner.numer_pracowniczy}.")
else:
print("Klient ma juz przypisany stolik.")
+
+ def __str__(self):
+ return f"Klient: {self.imie} {self.nazwisko} {self.wiek}"
diff --git a/classes/data/posilek.py b/classes/data/posilek.py
new file mode 100644
index 0000000..b81b67d
--- /dev/null
+++ b/classes/data/posilek.py
@@ -0,0 +1,12 @@
+import pygame
+class Posilek:
+ def __init__(self,nazwa,typ,cena,alergeny,vegan_vegetarian_meat):
+ self.nazwa = nazwa
+ self.typ = typ
+ self.cena = cena
+ self.alergeny = alergeny
+ self.vegan_vegetarian_meat = vegan_vegetarian_meat
+
+ def __str__(self):
+ return f"Posilek: {self.nazwa}, Typ: {self.typ}, Cena: {self.cena}, Alergeny: {self.alergeny}, Vegan/Vegetarian/Meat: {self.vegan_vegetarian_meat}"
+
diff --git a/classes/data/rachunek.py b/classes/data/rachunek.py
new file mode 100644
index 0000000..dd55979
--- /dev/null
+++ b/classes/data/rachunek.py
@@ -0,0 +1,21 @@
+import pygame
+
+from zamowenie import Zamowienie
+class Rachunek:
+ def __init__(self,numer_zamowienia):
+ self.numer_zamowienia = numer_zamowienia
+ self.zamowienia = []
+
+ def dodaj_zamowienie(self,zamowienie):
+ self.zamowienia.append(zamowienie)
+
+ def suma(self):
+ suma_rachunek = 0
+ for zamowienie in self.zamowienia:
+ suma_rachunek += sum(zamowienie.sum() for zamowienie in self.zamowienia)
+
+ return suma_rachunek
+ def __str__(self):
+ print(self.zamowienia)
+ return f"Rachunek nr {self.numer_zamowienia}:\n\tSuma: {self.suma()}\n\tZamówienia:\n\t\t{''.join([str(zamowienie) for zamowienie in self.zamowienia])}"
+
diff --git a/classes/stolik.py b/classes/data/stolik.py
similarity index 93%
rename from classes/stolik.py
rename to classes/data/stolik.py
index 93eee9e..c940744 100644
--- a/classes/stolik.py
+++ b/classes/data/stolik.py
@@ -1,5 +1,4 @@
import pygame
-import prefs
class Stolik:
def __init__(self,numer_stolika):
self.numer_stolika = numer_stolika
diff --git a/classes/data/zamowenie.py b/classes/data/zamowenie.py
new file mode 100644
index 0000000..f413d22
--- /dev/null
+++ b/classes/data/zamowenie.py
@@ -0,0 +1,15 @@
+import pygame
+from stolik import Stolik
+from kelner import Kelner
+from posilek import Posilek
+class Zamowienie:
+ def __init__(self,numer_zamowienia,posilek):
+ self.numer_zamowienia = numer_zamowienia
+ print(type(posilek))
+ assert all(isinstance(p, Posilek) for p in posilek), "Zamowienie: posilek nie jest listą tylko typu Posilek"
+ self.posilek = posilek
+ def __str__(self):
+ return f"Zamowienie numer {self.numer_zamowienia} z posiłkami {[p.nazwa for p in self.posilek]}"
+ def sum(self):
+ return sum(p.cena for p in self.posilek)
+
diff --git a/classes/posilek.py b/classes/posilek.py
deleted file mode 100644
index 3167770..0000000
--- a/classes/posilek.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import pygame
-import prefs
-class Posilek:
- def __init__(self,nazwa,typ,cena,alergeny,czy_wege):
- self.nazwa = nazwa
- self.typ = typ
- self.cena = cena
- self.alergeny = alergeny
- self.czy_wege = czy_wege
-
diff --git a/classes/rachunek.py b/classes/rachunek.py
deleted file mode 100644
index ff115e8..0000000
--- a/classes/rachunek.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import pygame
-import prefs
-class Rachunek:
- def __init__(self,numer_zamowienia):
- self.numer_zamowienia = numer_zamowienia
- self.zamowienia = []
-
- def dodaj_zamowienie(self,zamowienie):
- if zamowienie.numer_zamowienia == self.numer_zamowienia:
- self.zamowienia.append(zamowienie)
-
- def suma(self):
- suma_rachunek = 0
- for zamowienie in self.zamowienia:
- suma_rachunek += zamowienie.posilek.cena
- return suma_rachunek
diff --git a/classes/zamowenie.py b/classes/zamowenie.py
deleted file mode 100644
index f536a4f..0000000
--- a/classes/zamowenie.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import pygame
-import prefs
-class Zamowienie:
- def __init__(self,numer_zamowienia,stolik,kelner,posilek):
- self.numer_zamowienia = numer_zamowienia
- self.stolik = stolik
- self.kelner = kelner
- self.posilek = posilek
\ No newline at end of file
diff --git a/database/clients.xml b/database/clients.xml
new file mode 100644
index 0000000..429312e
--- /dev/null
+++ b/database/clients.xml
@@ -0,0 +1,22 @@
+
+
+ David
+ Bowie
+ 21
+
+
+ Kamil
+ Stop
+ 17
+
+
+ Jon
+ Snow
+ 23
+
+
+ Andrzej
+ Kowalski
+ 44
+
+
\ No newline at end of file
diff --git a/database/meals.xml b/database/meals.xml
new file mode 100644
index 0000000..cc48d8e
--- /dev/null
+++ b/database/meals.xml
@@ -0,0 +1,115 @@
+
+
+ Spaghetti Bolognese
+ Main
+ 12.99
+
+ Gluten
+ Dairy
+
+ false
+ false
+ true
+
+
+ Schabowy
+ Main
+ 36.00
+
+ Gluten
+ Dairy
+
+ false
+ false
+ true
+
+
+ Grochówka
+ Soup
+ 20.00
+
+ Gluten
+ Dairy
+
+ true
+ false
+ false
+
+ Fielt z Piersi Kurczaka
+ Main
+ 34
+
+ Gluten
+ Dairy
+
+ false
+ false
+ true
+
+ Tatar
+ Starter
+ 24.00
+
+ Gluten
+ Dairy
+
+ false
+ false
+ true
+
+ Pyra z Gzikiem
+ Starter
+ 12.99
+
+ Gluten
+ Dairy
+
+ false
+ true
+ true
+
+ Pomidorowa z Makaronem
+ Soup
+ 18.00
+
+ Gluten
+ Dairy
+
+ true
+ false
+ false
+
+ Szczawiowa z Jajkiem
+ Soup
+ 20
+
+ Gluten
+ Dairy
+
+ true
+ false
+ false
+
+ Boczniaki w Panierce
+ Main
+ 34.00
+
+ Gluten
+ Dairy
+
+ true
+ false
+ false
+
+ Wątróbka z Cebulą
+ Main
+ 30.00
+
+ Gluten
+ Dairy
+
+ false
+ false
+ true
+
+
\ No newline at end of file
diff --git a/database/servers.xml b/database/servers.xml
new file mode 100644
index 0000000..f137e23
--- /dev/null
+++ b/database/servers.xml
@@ -0,0 +1,13 @@
+
+
+ Dzesika
+ Płot
+ 1
+
+
+ Mariusz
+ Kamień
+ 2
+
+
+
diff --git a/prolog.py b/prolog.py
deleted file mode 100644
index 38f337a..0000000
--- a/prolog.py
+++ /dev/null
@@ -1,78 +0,0 @@
-from pyswip import Prolog
-prolog = Prolog ()
-
-prolog.assertz("kelner(marta,komar,01)")
-prolog.assertz("kelner(adam,bocian,02)")
-prolog.assertz("kelner(wanda,sowa,03)")
-prolog.assertz("kelner(piotr,skowron,04)")
-
-
-prolog.assertz("klient(adam,kowalski,17)")
-prolog.assertz("klient(anna,nowak,19)")
-prolog.assertz("klient(jan,wisniewski,18)")
-prolog.assertz("klient(katarzyna,dabrowska,41)")
-prolog.assertz("klient(zofia,dabrowska,11)")
-prolog.assertz("klient(michal,lewandowski,67)")
-prolog.assertz("klient(magdadalena,wozniak,24)")
-prolog.assertz("klient(pawel,kaminski,33)")
-prolog.assertz("klient(karolina,kozlowska,39)")
-prolog.assertz("klient(tomasz,jankowski,29)")
-prolog.assertz("klient(monika,wieczorek,56)")
-
-
-prolog.assertz("posilek(rosol_z_makaronem,zupa,10.00,[seler,gluten,jaja],miesne)")
-prolog.assertz("posilek(pomidorowa,zupa,10.00,[gluten,seler],wegetarianskie)")
-prolog.assertz("posilek(zurek,zupa,10.00,[gluten,jaja,mleko,seler],miesne)")
-prolog.assertz("posilek(brokulowa,zupa,10.00,[seler],weganskie)")
-
-prolog.assertz("posilek(kotlet_schabowy,danie_glowne,20.00,[gluten,jaja,mleko],miesne)")
-prolog.assertz("posilek(devolay_z_maslem,danie_glowne,15.00,[gluten,jaja,mleko],miesne)")
-prolog.assertz("posilek(grillowany_filet_z_kurczaka,danie_glowne,20.00,[gluten,soja,mleko,seler],miesne")
-prolog.assertz("posilek(klopsiki_w_sosie_pomidorowym,danie_glowne,15.00,[gluten,jaja,seler],miesne)")
-prolog.assertz("posilek(pieczone_udko_z_kurczaka,danie_glowne,25.00,[soja,seler],miesne)")
-
-prolog.assertz("posilek(placki_ziemniaczane,danie_glowne,10.00,[gluten,jaja],wegetarianskie)")
-prolog.assertz("posilek(nalesniki_z_serem,danie_glowne,10.00,[gluten,jaja,mleko],wegeterianskie)")
-prolog.assertz("posilek(camembert_z_zurawina,danie_glowne,15.00,[gluten,mleko],wegetarianskie)")
-prolog.assertz("posilek(curry_z_tofu,danie_glowne,15.00,[soja,orzechy],weganskie)")
-
-prolog.assertz("posilek(ziemniaki,dodatek,8.00,[],weganskie)")
-prolog.assertz("posilek(ryz,dodatek,6.00,[gluten,soja],weganskie)")
-prolog.assertz("posilek(kasza_gryczna,dodatek,6.00,[gluten,soja],weganskie)")
-prolog.assertz("posilek(frytki,dodatek,9.00,[],weganskie)")
-
-prolog.assertz("posilek(sernik,deser,12.00,[mleko,jaja,gluten],wegetarianskie)")
-prolog.assertz("posilek(brownie,deser,15.00,[mleko,jaja,gluten,orzechy],wegetarianskie)")
-prolog.assertz("posilek(lody_waniliowe,deser,5.00,[mleko],wegetarianskie)")
-prolog.assertz("posilek(panna_cotta,deser,17.00,[mleko],wegetarianskie)")
-
-prolog.assertz("posilek(kawa_czarna,napoj_cieply,6.00,[],weganskie)")
-prolog.assertz("posilek(kawa_biala,napoj_cieply,7.00,[mleko],wegetarianskie)")
-prolog.assertz("posilek(herbata_zielona,napoj_cieply,5.00,[],weganskie)")
-
-prolog.assertz("posilek(cola,napoj_zimny,6.00,[],weganskie)")
-prolog.assertz("posilek(fanta,napoj_zimny,6.00,[],weganskie)")
-prolog.assertz("posilek(sprite,napoj_zimny,6.00,[],weganskie)")
-prolog.assertz("posilek(woda_niegazowana,napoj_zimny,3.00,[],weganskie)")
-prolog.assertz("posilek(woda_gazowana,napoj_zimny,3.00,[],weganskie)")
-prolog.assertz("posilek(ice_tea,napoj_zimny,6.00,[],weganskie)")
-
-prolog.assertz("posilek(piwo,napoj_alkoholowy,12.00,[jeczmien,gluten,siarczyny,drodze],weganskie)")
-prolog.assertz("posilek(whiskey,napoj_alkoholowy,15.00,[gluten],weganskie)")
-prolog.assertz("posilek(wino,napoj_alkoholowy,17.00,[siarczyny],weganskie)")
-prolog.assertz("posilek(wodka,napoj_alkoholowy,8.00,[],weganskie)")
-
-
-prolog.assertz("stolik(1)")
-prolog.assertz("stolik(2)")
-prolog.assertz("stolik(3)")
-prolog.assertz("stolik(4)")
-prolog.assertz("stolik(5)")
-prolog.assertz("stolik(6)")
-prolog.assertz("stolik(7)")
-prolog.assertz("stolik(8)")
-prolog.assertz("stolik(9)")
-prolog.assertz("stolik(10)")
-
-
-prolog.assertz("zamowienie(Numer_zamowienia, Stolik, Kelner, Posilek) :- stolik(Stolik), kelner(_, _, Kelner), klient(_, _, _), posilek(Posilek, _, _, _, _).")