# Riccardo Gewinnspiel (RiccardoRaffle)

Live-Auslosung unter den Besuchern, die gerade im Shop sind. Alle Anwesenden
bekommen ein Popup; einer gewinnt Punkte für die Kundenkarte.

## Ablauf

1. **Anwesenheit.** Jeder Browser schickt alle 45 s ein Lebenszeichen (nur bei sichtbarem
   Tab). Gespeichert wird ein Hash des Session-Tokens und ein Zeitstempel, bei
   angemeldeten Kunden zusätzlich die Kunden-ID. Wer sich in den letzten 120 s gemeldet
   hat, gilt als „gerade auf der Seite“.
2. **Ziehung.** Täglich zur eingestellten Uhrzeit (Standard 19:00, Europe/Berlin) zieht
   eine geplante Aufgabe unter allen Anwesenden einen Gewinner. Unter der Mindestzahl
   Teilnehmer fällt die Ziehung aus. Von Hand: `bin/console riccardo:raffle:draw`.
3. **Popup.** Beim nächsten Lebenszeichen sieht jeder Teilnehmer sein Ergebnis.
   Verlierer einmal, der Gewinner bis er die Punkte abgeholt hat (Frist: 7 Tage).
4. **Punkte.** Angemeldete Kunden holen die Punkte direkt im Popup ab (Buchung Typ
   `raffle` auf der Kundenkarte, legt bei Bedarf eine Karte an). Nicht angemeldete
   Gewinner werden zur Anmeldung/Registrierung geführt; der Gewinn-Token bleibt im
   Browser, danach kann abgeholt werden.

## Voraussetzungen

- Plugin **RiccardoLoyalty** (Kundenkarte) muss installiert und aktiv sein.
- Geplante Aufgaben laufen (`shopware-dev-scheduler`). Nach der Installation einmal
  `bin/console scheduled-task:register` ausführen.

## Konfiguration

Erweiterungen → Riccardo Gewinnspiel → Konfigurieren: aktiv/inaktiv, Punkte,
Ziehungszeit, Mindestteilnehmer, Zeitfenster, Einlösefrist, Link auf Teilnahmebedingungen,
alle Popup-Texte. Pro Verkaufskanal überschreibbar.

## Befehle

```bash
bin/console riccardo:raffle:draw            # Ziehung jetzt, alle Kanäle mit Anwesenden
bin/console riccardo:raffle:draw --min=1    # Test mit einem einzigen Teilnehmer
bin/console riccardo:raffle:draw --points=250
bin/console riccardo:raffle:draw --list     # letzte Ziehungen
bin/console riccardo:raffle:claim <drawId> <customerId>  # Gewinn von Hand gutschreiben
```

## Rechtlicher Hinweis

Ein Gewinnspiel ist eine Werbemaßnahme. Für Tabakerzeugnisse und E-Zigaretten
gelten Werbebeschränkungen (TabakerzG). Vor Aktivierung Teilnahmebedingungen
erstellen (Veranstalter, Teilnahmeberechtigung ab 18, Gewinn, Ausschluss des
Rechtswegs) und die Aktion rechtlich freigeben lassen.

## Tabellen

`riccardo_raffle_presence`, `riccardo_raffle_draw`, `riccardo_raffle_result`
(werden beim Deinstallieren ohne „Daten behalten“ gelöscht).
