Bezoeker arriveert
│
├─ Toont QR-code (via email op telefoon)
│
Deur Medewerker B (met tablet/phone)
│
├─ Route: /scan (permission: "scan vgbc tickets")
├─ Camera interface opent
├─ Bezoeker houdt QR voor camera
├─ jsQR library scant code automatisch
│
Drupal valideert via API
│
├─ Route: /api/ticket/validate?code=VGBC2026-USER45-LICENSE123
├─ Zoekt License entity met code
├─ Checkt status (geldig? al gescand?)
├─ Update: status = "scanned", timestamp
│
Scan interface toont resultaat:
│
├─ GROEN ✓ = Welkom! (geldig ticket)
├─ ROOD ✗ = Probleem (al gebruikt/ongeldig)
│
Accreditatiebewijs wordt gegenereerd:
│
├─ PDF met logo, naam, event, datum en tijd van scan
├─ Downloadbaar op user account pagina
├─ Email naar customer via Symfony Mailer (niet via MailChimp), zoals nu ook al bij een invoice
│
End Result: Bezoeker heeft bewijs van deelname