# Restaurant Reiskorn
## Installation
1. Herunterladen des aktuellen [Release](https://gogs.sebse.de/Caesar2011/html5-restaurant/releases).
2. Starten der `main.js` im Hauptprojekt-Ordner.
- `node path/to/main.js`
- Relative und absolute Pfade erlaubt
## Dateistruktur
### data
- Daten zur Speicherung der
- Reservierungen
- Speisekarte
- Benutzerliste
- Mit jeweiligen Beispielwerten zum manuellen Einladen
### modules
- eigene nodejs-Module
- entspricht im MVC-Modell einem Model
- CRUD-Routinen
- Reservierungen
- Speisekarte
- Benutzerliste
### node_modules
- von npm installierte Pakete
### public
- Client-Assets
- CSS
- Client-JS
- Bilder
- Bootstrap/AngularJS
- werden über HTML nachgeladen
### views
- JADE-Views
- HTML-Template-Engine
## Requests
| Min. Vers. | Methode | URI | Parameter | Beschreibung | Benötige Rechte |
| --- | --- | --- | --- | --- | --- | --- |
| 0.1 | GET | / | keine | Zeigt die Startseite an | keine |
| 0.1 | GET | /speisekarte | keine | Zeigt die Speisekarte an | keine (Bearbeitungsfunktionen mit MENU) |
| 0.1 | POST | /speisekarte | nametag:
`[f\|d]-[Index in der Liste "food"/"drinks"]-new`
name:
`[Name des Gerichts]`
desc:
`[Beschreibung des Menüeintrags]` | Hinzufügen eines Menüeintrags | MENU |
| 0.1 | POST | /speisekarte | nametag:
`[f\|d]-[Index in der Liste "food"/"drinks"]-[Index in der Liste "items"]`
name:
`[Name des Gerichts]`
desc:
`[Beschreibung des Menüeintrags]` | Aktualisieren der Informationen eines Eintrages | MENU |
| 0.1 | POST | /speisekarte | nametag: `[f\|d]-[Index in der Liste "food"/"drinks"]-[Index in der Liste "items"]-del` | Löschen eines Eintages aus der Speisekarte | MENU |
| 0.1 | GET | /kontakt | keine | Zeigt die Kontaktseite an | keine:
Reservierungsformular
RESERVATION:
Liste aller eingegangenen Reservierungen |
| 1.0 | GET | /kontakt | nametag:
`[Index der Reservierung]` | Öffnet das Fenster zum Bearbeiten eines Eintages | RESERVATION |
| 1.0 | POST | /kontakt | nametag:
`new`
name:
`[Name des Reservierenden]`
desc:
`[Kommentarfeld]`
email:
`[gülige E-Mail-Adresse]`
person:
`[positive, natürliche Zahl]`
time:
`^(([01][0-9]\|2[0-4]):[0-5][0-9])$`
date:
`^(([0-2][0-9]\|3[01]).(0[0-9]\|1[012]).[0-9]{4})$` | Hinzufügen einer Reservierung | keine |
| 1.0 | POST | /kontakt | nametag:
`[Index der Reservierung]`
name:
`[Name des Reservierenden]`
desc:
`[Kommentarfeld]`
email:
`[gülige E-Mail-Adresse]`
person:
`[positive, natürliche Zahl]`
time:
`^(([01][0-9]\|2[0-4]):[0-5][0-9])$`
date:
`^(([0-2][0-9]\|3[01]).(0[0-9]\|1[012]).[0-9]{4})$` | Aktualisieren der Informationen einer Reservierung | RESERVATION |
| 1.0 | POST | /kontakt | nametag:
`[Index der Reservierung]-del` | Löschen einer Reservierung aus der Liste | RESERVATION |