VGBC 2026 Ticket Toewijzing & PDF Generatie - 7 januari 2026¶
Doel¶
Implementatie van post-purchase ticket assignment systeem voor VGBC 2026 tickets waarbij ticketkopers tickets kunnen toewijzen aan andere personen, inclusief PDF generatie en email notificaties.
Context¶
- Voortbouwend op sessie 20260107-qr-codes-invoice-emails-ticket-activatie
- Routing crisis opgelost (1615 routes werkend)
- Basis license systeem met QR codes operationeel
- Focus op user experience voor ticket management
Inhoud¶
Ticket Management Interface¶
Mijn Tickets Block
- Custom block plugin: MyTicketsBlock.php
- Toont alle tickets van gebruiker in tabelvorm
- Kolommen: Ticket ID, Product, Status, Operations
- Operations dropdown met "Bewerken" en "Download PDF" opties
- Verwijderd: QR Code kolom (alleen in detail view)
Ticket Edit Page
- Route: /ticket/edit/{license}
- Controller: TicketController::edit()
- Components:
- "Terug naar Mijn Tickets" buttons (boven en onder)
- Ticket details (ID, Product, QR code)
- PDF download button
- Ticket toewijzen form (collapsible details)
- Security: alleen eigenaar heeft toegang
Ticket Assignment Flow¶
Scenario A: Bestaande Gebruiker
1. Pietje zoekt Willem via autocomplete (email of naam)
2. System vindt Willem Kaandorp (user 51)
3. Ticket ownership wordt direct overgedragen via setOwner()
4. Email notificatie naar Willem
5. Ticket verschijnt in Willem's account
6. Pietje verliest toegang tot ticket
Scenario B: Nieuwe Gebruiker (Marietje)
1. Pietje voert marietje@mail.com in
2. System vindt geen bestaande user
3. Email opgeslagen in field_attendee_email
4. Status: "Wacht op marietje@mail.com"
5. Uitnodiging email met registratie link
6. "Verstuur opnieuw" button beschikbaar
7. Na registratie: automatic ticket transfer (via TicketActivationController)
User Autocomplete
- Route: /vg_commerce/autocomplete/user/{field}
- Controller: UserAutocompleteController
- Email field: zoekt op email, toont naam in parentheses
- Naam field: zoekt op naam, toont email in parentheses
- Cross-lookup: Willem Kaandorp ↔ sjoerd@sjoerdkaandorp.nl
Email Notificaties¶
hook_mail implementatie in vg_commerce.module
ticket_assigned (bestaande gebruiker) - Subject: "Je hebt een VGBC 2026 ticket ontvangen" - Content: sender naam, ticket details, account URL - Trigger: immediate transfer
ticket_invitation (nieuwe gebruiker) - Subject: "Uitnodiging: VGBC 2026 ticket" - Content: sender naam, registratie instructies, email verificatie - Trigger: pending assignment - Resend: via "Verstuur opnieuw" button
PDF Generatie¶
Technologie Stack - wkhtmltopdf binary (zelfde als facturen) - mikehaertl/phpwkhtmltopdf wrapper library - Endroid QR Code voor QR image generatie
Fonts
- GAP Zuid VG custom font (4 varianten)
- Font URLs: absolute HTTPS URLs naar /sites/default/files/fonts/
- GAPZuidVG-Regular.ttf
- GAPZuidVG-Bold.ttf
- GAPZuidVG-Italic.ttf
- GAPZuidVG-BoldItalic.ttf
PDF Layout - Logo: logo-factuur.svg (zelfde als invoices) - QR code: 300x300 PNG als data URI - A4 formaat met 10mm margins - Styling: gecentreerd, groen thema (#2d5f2e) - Content: Ticket ID, Product naam, QR code, instructies
Belangrijke Bugfixes
- Font URLs moeten absolute HTTPS zijn (niet relatieve paths)
- setOwner() gebruiken in plaats van set('owner_id')
- --no-outline optie verwijderd (problemen met unpatched Qt)
- Simpele wkhtmltopdf configuratie zonder problematische opties
UI/UX Verbeteringen¶
Navigatie - Consistent redirect gedrag naar ticket edit page - Annuleer button gaat terug naar ticket (niet account) - Duidelijke "Terug naar Mijn Tickets" links
Status Feedback - Groene success messages bij toewijzing - Warning message bij pending assignments - Error logging voor PDF/email failures
Gin Theme Integration - Admin routes voor alle ticket management pages - Consistente button styling met Drupal admin - Dropdown operations zoals content overview
Resultaat¶
Werkende Functionaliteit¶
✅ Mijn Tickets overzicht in user account ✅ Ticket edit page met alle details ✅ PDF download met GAP Zuid VG font en QR code ✅ User autocomplete (email ↔ naam cross-lookup) ✅ Ticket assignment aan bestaande gebruikers ✅ Email notificaties (assigned + invitation) ✅ Pending assignments met resend functionaliteit ✅ Security: alleen eigenaar kan ticket beheren
Test Resultaten¶
- PDF generatie: werkt met wkhtmltopdf
- Ticket 54 toegewezen aan Willem Kaandorp (user 51, sjoerd@sjoerdkaandorp.nl)
- Ownership transfer succesvol
- Security check werkt: Pietje heeft geen toegang meer na transfer
- Willem kan ticket zien, downloaden als PDF
Technische Implementatie¶
Nieuwe Files
- src/Plugin/Block/MyTicketsBlock.php
- src/Controller/TicketController.php (edit, download)
- src/Controller/UserAutocompleteController.php
- src/Form/TicketAssignForm.php
Routes
- vg_commerce.ticket_edit
- vg_commerce.ticket_download
- vg_commerce.user_autocomplete
hook_mail
- ticket_assigned
- ticket_invitation
Git Commits¶
- "WIP: Ticket assignment system" (0fea90d)
- "Ticket assignment improvements: autocomplete, redirects, navigation" (4d81678)
- "Email notifications en PDF generatie voor tickets" (ceada3f)
- "Ticket PDF: wkhtmltopdf met GAP Zuid VG font" (467a16e)
- "Fixes: PDF werkt + ticket assignment ownership" (a2e077d)
Open Issues & TODO voor Volgende Sessie¶
Hoog Prioriteit¶
- Ticket teruggave functionaliteit
- User 54 (ontvanger) kan nu ticket opnieuw toewijzen
- Moet beperkt worden tot "ticket teruggeven aan originele koper"
-
Alleen originele koper mag ticket aan anderen toewijzen
-
Mailchimp integratie herstellen
- Mailchimp modules zijn disabled (routing conflict)
- Moet gefixed worden zoals op dev environment
-
ECA workflows ook gebroken
-
Login check bij product aankoop
- Check of gebruiker is ingelogd voor checkout
- Zo niet: redirect naar login/registratie
- Voorkomt anonieme ticket aankopen
Medium Prioriteit¶
- PDF vormgeving verbeteren
- Betere layout en styling
- Extra velden voor VGBC editie info
-
Eventueel event datum/locatie
-
Database migratie preview → live
- Tickets en orders migreren
- Config sync
- Testing op live omgeving
Documentatie¶
- VGBC documentatie updaten
- Ticket assignment flow diagram
- Email templates documenteren
- Admin instructies voor ticket management
Tags¶
VGBC, Commerce, Tickets, License, PDF, wkhtmltopdf, Email, User Management, QR Code, Drupal 10