Skip to content

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

  1. "WIP: Ticket assignment system" (0fea90d)
  2. "Ticket assignment improvements: autocomplete, redirects, navigation" (4d81678)
  3. "Email notifications en PDF generatie voor tickets" (ceada3f)
  4. "Ticket PDF: wkhtmltopdf met GAP Zuid VG font" (467a16e)
  5. "Fixes: PDF werkt + ticket assignment ownership" (a2e077d)

Open Issues & TODO voor Volgende Sessie

Hoog Prioriteit

  1. Ticket teruggave functionaliteit
  2. User 54 (ontvanger) kan nu ticket opnieuw toewijzen
  3. Moet beperkt worden tot "ticket teruggeven aan originele koper"
  4. Alleen originele koper mag ticket aan anderen toewijzen

  5. Mailchimp integratie herstellen

  6. Mailchimp modules zijn disabled (routing conflict)
  7. Moet gefixed worden zoals op dev environment
  8. ECA workflows ook gebroken

  9. Login check bij product aankoop

  10. Check of gebruiker is ingelogd voor checkout
  11. Zo niet: redirect naar login/registratie
  12. Voorkomt anonieme ticket aankopen

Medium Prioriteit

  1. PDF vormgeving verbeteren
  2. Betere layout en styling
  3. Extra velden voor VGBC editie info
  4. Eventueel event datum/locatie

  5. Database migratie preview → live

  6. Tickets en orders migreren
  7. Config sync
  8. Testing op live omgeving

Documentatie

  1. VGBC documentatie updaten
  2. Ticket assignment flow diagram
  3. Email templates documenteren
  4. Admin instructies voor ticket management

Tags

VGBC, Commerce, Tickets, License, PDF, wkhtmltopdf, Email, User Management, QR Code, Drupal 10