# Event Center Email-System - Quick Start Guide

## ✅ Was wurde implementiert

### 1. Eigenes Admin-Frontend für Event Center Email-Templates
- ✅ Separates Frontend unabhängig vom normalen Buchungssystem
- ✅ Vollständige CRUD-Funktionen (Create, Read, Update, Delete)
- ✅ Live-Platzhalter-Ansicht mit Click-to-Copy
- ✅ Paket-spezifische Templates möglich
- ✅ Visual Editor mit Syntax-Highlighting

### 2. Asynchroner Email-Versand
- ✅ Symfony Messenger Integration
- ✅ Automatische Retry bei Fehlern
- ✅ Nicht-blockierend

### 3. Template-System
- ✅ 20+ Platzhalter verfügbar
- ✅ HTML-Templates mit CSS
- ✅ Standard-Template als Fallback
- ✅ Aktivieren/Deaktivieren von Templates

---

## 🚀 Sofort starten (3 Schritte)

### Schritt 1: Zum Admin-Frontend navigieren

```
URL: https://dp-smartsolutions.de/ksbdueren/public/admin/event-center/email-templates
```

Oder über Navigation:
```
Admin-Panel → BewegungsZentrum → E-Mail Templates
```

### Schritt 2: Erstes Template erstellen

1. Klicke auf **"Neues Template"**
2. Fülle aus:
   - **Name:** `Standard Buchungsbestätigung`
   - **Betreff:** `Ihre Buchung im BewegungsZentrum - {buchungs_token}`
   - **Inhalt:** Standard-Template wird automatisch eingefügt
   - **Aktiv:** ✓ Ja
3. Klicke auf **"Speichern"**

### Schritt 3: Messenger Queue starten

**Option A - Supervisor (empfohlen für Produktion):**
```bash
sudo nano /etc/supervisor/conf.d/messenger-worker.conf
```

Inhalt:
```ini
[program:messenger-consume]
command=php /var/www/html/ksbdueren/bin/console messenger:consume async --time-limit=3600
user=www-data
numprocs=2
startsecs=0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
```

Aktivieren:
```bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start messenger-consume:*
```

**Option B - Cronjob (Alternative):**
```bash
crontab -e
```

Hinzufügen:
```bash
*/2 * * * * cd /var/www/html/ksbdueren && php bin/console messenger:consume async --limit=10 --time-limit=60 >> /var/log/messenger.log 2>&1
```

---

## 📋 Verfügbare Platzhalter

Klicke im Admin-Frontend auf einen Platzhalter um ihn zu kopieren!

### Buchungsinformationen:
- `{buchungs_token}` - Buchungsnummer
- `{paket_name}` - Event-Paket
- `{dauer}` - Dauer (z.B. "90 Minuten")
- `{datum}` - Datum (z.B. "15.12.2025")
- `{start_zeit}` - Startzeit (z.B. "14:00")
- `{end_zeit}` - Endzeit (z.B. "15:30")
- `{preis}` - Preis (z.B. "89,00 €")
- `{status}` - Status

### Kundendaten:
- `{eltern_name}` - Vollständiger Name
- `{eltern_vorname}` - Vorname
- `{eltern_nachname}` - Nachname
- `{eltern_email}` - E-Mail
- `{eltern_telefon}` - Telefon

### Geburtstagskind:
- `{kind_name}` - Vollständiger Name
- `{kind_vorname}` - Vorname
- `{kind_nachname}` - Nachname
- `{kind_alter}` - Alter

### Weitere:
- `{anzahl_kinder}` - Gesamtzahl Kinder
- `{anmerkungen}` - Besondere Wünsche
- `{erstellt_am}` - Erstellungsdatum
- `{admin_email}` - Kontakt-E-Mail

---

## 🎯 Features

### 1. Template-Verwaltung
- **Erstellen:** Neues Template mit HTML-Editor
- **Bearbeiten:** Template ändern
- **Löschen:** Template entfernen
- **Aktivieren/Deaktivieren:** Template an/ausschalten

### 2. Paket-spezifische Templates
- Templates können bestimmten Event-Paketen zugeordnet werden
- Beispiel: "Kindergeburtstag 6-8 Jahre" bekommt eigenes Template
- Leere Auswahl = gilt für alle Pakete (Standard)

### 3. Priorität bei Template-Auswahl
1. **Paket-spezifisch:** Wenn Template einem Paket zugeordnet ist
2. **Allgemein:** Template ohne Paketzuordnung
3. **Standard:** Hardcodiertes Fallback-Template

---

## 🧪 Testen

### Test 1: Template erstellen
```
1. Öffne: /admin/event-center/email-templates
2. Klicke "Neues Template"
3. Fülle Formular aus
4. Speichern
→ Template erscheint in der Liste ✓
```

### Test 2: Platzhalter kopieren
```
1. Klicke auf beliebigen Platzhalter (z.B. {paket_name})
→ Toast-Nachricht "Kopiert: {paket_name}" erscheint ✓
2. Füge in Editor ein (Strg+V)
→ Platzhalter ist eingefügt ✓
```

### Test 3: Buchung mit Template
```
1. Erstelle Template und aktiviere es
2. Mache Testbuchung: /ksbdueren/public/event-center/booking
3. Prüfe Messenger Queue:
   php bin/console messenger:stats
4. Verarbeite Queue:
   php bin/console messenger:consume async -vv --limit=1
→ Email wird mit deinem Template versendet ✓
```

### Test 4: Mehrere Templates
```
1. Erstelle Template "Allgemein" (kein Paket zugeordnet)
2. Erstelle Template "Kindergeburtstag" (Paket zugeordnet)
3. Buche mit Kindergeburtstag-Paket
→ Verwendet "Kindergeburtstag" Template (paket-spezifisch hat Priorität) ✓
4. Buche mit anderem Paket
→ Verwendet "Allgemein" Template ✓
```

---

## 📊 Architektur

```
Event Center Booking
         ↓
  Controller dispatcht Message
         ↓
   Messenger Queue (async)
         ↓
 SendEventCenterEmailMessageHandler
         ↓
    Sucht passendes Template
    (1. Paket-spezifisch, 2. Allgemein, 3. Standard)
         ↓
  Ersetzt Platzhalter
         ↓
    Versendet Email
```

---

## 🔧 Verwaltung

### Templates anzeigen:
```
URL: /ksbdueren/public/admin/event-center/email-templates
```

### Template bearbeiten:
```
1. Klicke auf "Bearbeiten"-Button (Stift-Icon)
2. Ändere Inhalt
3. Speichern
```

### Template deaktivieren:
```
1. Klicke auf "Power"-Button
→ Template wird grau und inaktiv
```

### Template löschen:
```
1. Klicke auf "Löschen"-Button (Mülleimer-Icon)
2. Bestätige
→ Template ist gelöscht
```

---

## 🚨 Fehlerbehebung

### Keine Emails kommen an:
```bash
# 1. Prüfe Messenger Queue
php bin/console messenger:stats

# 2. Verarbeite Messages manuell
php bin/console messenger:consume async -vv --limit=5

# 3. Prüfe Logs
tail -f var/log/prod.log | grep "Event Center"
```

### Template wird nicht verwendet:
```bash
# 1. Prüfe ob Template aktiv ist
→ Im Admin-Panel: Template sollte grünen "Aktiv"-Badge haben

# 2. Prüfe Paketzuordnung
→ Wenn Template einem Paket zugeordnet ist, wird es nur für dieses Paket verwendet

# 3. Prüfe Logs
tail -f var/log/prod.log | grep "template"
```

### Platzhalter werden nicht ersetzt:
```
→ Stelle sicher dass Platzhalter exakt geschrieben sind: {buchungs_token} nicht {buchungs_nummer}
→ Alle verfügbaren Platzhalter sind im Admin-Frontend aufgelistet
```

---

## 📁 Dateien

### Neu erstellt:
- `src/Controller/Admin/EventCenterEmailTemplateController.php` - Admin-Controller
- `src/Message/SendEventCenterEmailMessage.php` - Messenger Message
- `src/MessageHandler/SendEventCenterEmailMessageHandler.php` - Handler
- `templates/admin/event_center/email_templates/index.html.twig` - Frontend
- `migrations/Version20251204143000.php` - Datenbank-Migration

### Geändert:
- `src/Entity/EmailTemplate.php` - Erweitert für EventPackage-Relation
- `src/Controller/EventCenterBookingController.php` - Nutzt Messenger
- `config/services.yaml` - MessageHandler konfiguriert

---

## 🎉 Fertig!

Das System ist **sofort einsatzbereit**:
- ✅ Funktioniert auch OHNE Template (verwendet Standard-Template)
- ✅ Eigenes Admin-Frontend für Event Center
- ✅ Unabhängig vom normalen Buchungssystem
- ✅ Asynchroner Versand über Messenger

**Viel Erfolg!** 🚀

