Architecture Kata „Pizza Online“
Entwickle eine Anwendung, mit der Kunden online bei einem Pizza Bringdienst bestellen können. Die Bestellungen sollen beim Bringdienst allerdings nur ausgedruckt werden [1].
Zum Bestellen ruft der Kunde im Webbrowser die Seite mit der Speisekarte des Pizza Dienstes auf. Dort trägt er bei den Pizzen, die er bestellen möchte, die Bestellmenge ein (default: 0). Und am Schluss gibt er Name, Anschrift, Telefonnummer und Email an.
Wenn er diese Daten „abschickt“, wird eine Seite mit den zusammengefassten Bestallangaben inkl. Bestellnummer gezeigt. Erst wenn der Kunde diese Seite bestätigt, wird die Bestellung an den Pizza Dienst übermittelt und eine Quittungsemail an den Kunden geschickt.
Falls der Kunde unzufrieden ist mit der Zusammenfassung, kann er zurück zur Speisekarte gehen. Die ist dann mit seinen Angaben vorausgefüllt, so dass er nur noch korrigieren muss, was nicht gefällt. Für zukünftige Bestellungen werden seine persönlichen Angaben nach Bestätigung in einem Cookie vorgehalten.
Beim Pizza Dienst wird die Bestellung nach Empfang automatisch gedruckt [2] und als XML- oder Json-Datei archiviert.
Daten
Die Speisekarte ist eine CSV-Datei speisekarte.txt mit zugehörigen Produktbildern. Ihr Format:
Nr | Beschreibung | PreisKlein | PreisMittel | PreisGroß | Bild |
1 | Pizza Tonno | 5,60 | 6,50 | 7,80 | Tonno.jpg |
2 | Pizza Salami | 5,40 | 6,20 | 7,40 | Salami.jpg |
… |
Zu jeder Pizza gibt es Preise für unterschiedliche Pizzagrößen Die Bilder liegen im selben Verzeichnis wie die Speisekarte und haben die Namen wie in der letzten Spalte angegeben.
Endnoten
[1] Mit einem Ausdruck der Bestellung fügt sich die online Bestellung nahtlos in den bisherigen Produktionsprozess ein. Bisher hat der Pizza Dienst Bestellungen per Telefon bzw. an der Ladenkasse aufgenommen und sie als Zettel Kassenbon an die Küche weitergegeben.
[2] Stellen Sie sich dafür einen kleinen Thermo-Drucker vor, wie er in Kassen oder Kartenlegegeräten benutzt wird. Für die Bearbeitung der Aufgabe ist aber natürlich auch ein Laserdrucker ausreichend.