# Anwendungsfallbeschreibung
Im folgenden Dokument werden für die drei Use-Cases Reservierung anlegen, Reservierung ändern, Reservierung bestätigen auf Basis unserer Ausarbeitungen in Aufgabe 1.1 die Anwendungsfallbeschreibungen erstellt.
## Tischreservierung tätigen
### Änderungshistorie
|Datum|Version|Beschreibung|Autor|Zustand|
|:-----:|:-----:|:----------:|:---:|:-----:|
| 23.12.2022 | 1.0 | Initiale Formulierung | Benjamin Maier | geplant|
| Use Case | Tischreservierung tätigen|
| :------------------ |:--------------------|
| Kurze Beschreibung: | Dem Kunden stehen die Möglichkeiten einer Online- oder Telefonischen Reservierung über einen Mitarbeiter zur Verfügung. Geschieht die Reservierung telefonisch, werden die im Standardablauf beschriebenen Schritte vom Mitarbeiter erledigt. Bei direkter Online-Reservierung werden diese vom Kunden erledigt.|
| Akteure: | Angestellte/Benutzer |
| Auslöser: | Eine Person möchte einen Tisch im Lokal reservieren. |
| Vorbedingungen: | Der Benutzer muss im System angemeldet sein oder telefonisch einen Angestellten beauftragen. Angestellte müssen ebenso im System angemeldet sein. |
| Standardablauf: | 1. Benutzer/Angestellter muss Anmeldung durchführen. \[Ausnahme: Fehlerhafte Daten\] <br> 2. Auswahl der Stadt <br> 3. Auswahl der Restaurants der Restaurantkette <br> 4. Eingabe der Reservierungsdaten (Datum, Uhrzeit, Personenanzahl,<br> Anzahl Kleinkinder) \[Ausnahme: Unvollständige Daten\] <br> 5. Optional: Auswahl Zusatzangebote (Dekoration, Hochstuhl, <br> Barrierefreiheit, Vorbestellung von Menüs) \[Ausnahme: Zusatzangebote nicht verfügbar\] <br> 6. Optional: Auswahl ob Reservierung exklusiv für einen Tag <br> 7. Kontrolle ob Reservierung möglich <br> \[Ausnahme: Reservierung nicht möglich\]<br> 8. Reservierung wird getätigt <br> <<include>> Email/SMS Bestätigung. <br> <<extends>> Contact-Tracing-Daten erfassen <br> <<include>> Archivierung durchführen |
| Fehlersituation: | 1. Timeout: Tritt auf, wenn über eine festgelegte Zeitspanne keine Benutzereingabe erfolgt.<br> 2. Kein Platz verfügbar: Im gewünschten Lokal ist kein Platz frei<br> 3. Kunde steht auf Blacklist (Hausverbot) <br> 4. Datenbank nicht erreichbar <br> 5. Kunde ist überfordert und erzeugt fehlerhafte Reservierungen|
| Alternativabläufe: | 1. Loginmaske wird neu geladen, und Fehlermeldung angezeigt <br> 4. Benutzer wird aufgefordert, fehlende Daten zu ergänzen <br> 5. Benutzer wird benachrichtigt, dass Zusatzangebote nicht verfügbar sind <br> 5a. Kunde bestätigt Reservierung ohne Zusatzangebote<br> 7. Benutzer wird benachrichtigt, dass Reservierung nicht möglich ist, Möglichkeit von Alternativen, bzw. Eintragung in Warteliste durch Angestellten <br> 7a. Falls Benutzer sich für Eintragung in Warteliste entscheidet, entfällt Schritt 8. |
<br>
## Tischreservierung ändern
### Änderungshistorie
|Datum|Version|Beschreibung|Autor|Zustand|
|:-----:|:-----:|:----------:|:---:|:-----:|
| 23.12.2022 | 1.0 | Initiale Formulierung | Tobias Lauß | geplant|
| Use Case | Tischreservierung ändern|
| :------------------ |:-------------------|
| Kurze Beschreibung: | Ein Kunde möchte eine bereits abgeschlossene und in der Zukuft liegende Reservierung ändern. Die Änderung kann entweder vom Kunden online oder per Telefon durchgeführt werden. Wird die Änderung per Telefon durchgeführt, führt ein Mitarbeiter die beschriebenen Schritte im Standardablauf durch.|
| Akteure: | Angestellte/Benutzer |
| Auslöser: | Eine Person möchte eine bereit bestehende Reservierung ändern. |
| Vorbedingungen: | Der Benutzer muss im System angemeldet sein und über eine in der Zukunft liegende Reservierung verfügen. |
| Standardablauf: | 1. Benutzer/Angestellter muss Anmeldung durchführen. \[Ausnahme: Fehlerhafte Daten\]<br> 2. Auswahl des Buttons "Reservierung ändern" <br> 3. Auswahl der zu ändernden Reservierung <br> 4. Eingabe der neuen Reservierungsdaten (Datum, Uhrzeit, Personenanzahl, Anzahl Kleinkinder) \[Ausnahme: Unvollständige Daten\] <br> 5. Optional: Auswahl Zusatzangebote (Dekoration, Hochstuhl, <br> Barrierefreiheit, Vorbestellung von Menüs) \[Ausnahme: Zusatzangebote nicht verfügbar\] <br> 6. Optional: Auswahl ob Reservierung exklusiv für einen Tag <br> 7. Kontrolle ob Reservierung möglich <br> \[Ausnahme: Reservierung nicht möglich\] <br> 8. Die Reservierung wird in der Datenbank aktualisiert<br> <<include>> Email/SMS Bestätigung.<br> <<extends>> Contact-Tracing-Daten erfassen <br> <<include>> Archivierung durchführen |
| Fehlersituation: | 1. Timeout: Tritt auf, wenn über eine festgelegte Zeitspanne keine <br> Benutzereingabe erfolgt.<br> 2. Kein Platz verfügbar: Im gewünschten Lokal ist zum neuen Zeitpunkt<br> keine Platz frei<br> 3. Datenbank nicht erreichbar <br> 4. Kunde ist überfordert und erzeugt fehlerhafte Reservierungen|
| Alternativabläufe: | 1. Loginmaske wird neu geladen, und Fehlermeldung angezeigt <br> 5. Benutzer wird benachrichtigt, dass Zusatzangebote nicht verfügbar sind <br> 5a. Kunde bestätigt Reservierung ohne Zusatzangebote <br> 7. Benutzer wird benachrichtigt, dass Reservierung nicht möglich ist, Möglichkeit von Alternativen, bzw. Eintragung in Warteliste durch Angestellten <br> 7a. Falls Benutzer sich für Eintragung in Warteliste entscheidet, entfällt Schritt 8. |
<br>
## Tischreservierung bestätigen
### Änderungshistorie
|Datum|Version|Beschreibung|Autor|Zustand|
|:-----:|:-----:|:----------:|:---:|:-----:|
| 23.12.2022 | 1.0 | Initiale Formulierung | Balduin Fuchs | geplant|
| Use Case | Tischreservierung bestätigen|
| :------------------ |:-------------------|
| Kurze Beschreibung: | Ein Kunde tätigt oder ändert eine Reservierung. Die (neue) Reservierung wird per SMS oder E-Mail an den Kunden bestätigt.|
| Akteure: | Angestellter/Benutzer, Internes Bestellsystem|
| Auslöser: | Eine Person tätigt oder ändert eine Reservierung. |
| Vorbedingungen: | Eine Person ändert eine bereits bestehende Reservierung oder legt eine neue an. Die Reservierungsdaten mussen fehlerfrei sein. Sowie die für die Änderung oder Löschung einer Reservierung nötigen Vorbedingungen.|
| Standardablauf: | 1. Ablauf der Änderung oder Löschung einer Reservierung. <br> 2. Reservierung wird auf der Datenbank festgeschrieben. \[Ausnahme: Datenbank nicht erreichbar\] <br> 3. Trigger wird ausgelöst und versendet SMS oder E-Mail (je nach <br> Kundenauswahl) mit den Reservierungsdaten \[Ausnahme: Zustellung nicht möglich\] <br> 4. Reservierung ist bestätigt.<br> <<include>> Archivierung durchführen <br> <<extends>> Internes Bestellsystem|
| Fehlersituation: | 1. Timeout: Tritt auf, wenn über eine festgelegte Zeitspanne keine <br> Benutzereingabe erfolgt.<br> 2. Falsche E-Mail-Addresse oder Telefonnummer => Bestätigung kann <br> nicht zugestellt werden. <br> 3. Datenbanktrigger löst nicht aus weil die Datenbank nicht erreichbar<br> ist. |
| Alternativabläufe: | 2. Fehlermeldung wird ausgegeben, Benachrichtigung an Systemadministrator versendet <br> 3. Kunde wird benachrichtigt, dass Daten fehlerhaft sind, bzw. Bestätigung nicht zugestellt werden konnte <br> 3a. Benutzer ergänzt fehlerhafte Daten |