Skip to content

E15: Notifications & Communications - Tasks

Epic: E15: Notifications & Communications


E15-F1: Transactional Email Service

Feature: E15-F1: Transactional Email Service

Implementation Note

Email delivery uses Symfony Mailer with configurable transport. Local dev uses Mailpit (http://localhost:8026). Production uses Mailgun via MAILER_DSN env var.

Status Task Verification
✅ Configure email provider (Symfony Mailer + Mailpit for dev, Mailgun for prod) MAILER_DSN loaded, Mailpit catches emails at http://localhost:8026
✅ Create EmailLog entity and repository Entity maps to email_logs table, repository with findByRecipient/findByTemplateKey
✅ Create email template for order confirmation Template renders with {{variable}} substitution
✅ Create email template for quota invitation Template renders
✅ Create email template for ticket delivery Template renders
✅ Implement sendEmail function (EmailService) Builds Symfony Email from template, sends via Mailer, persists EmailLog
✅ Log delivery status to EmailLog table EmailLog created with SENT/FAILED status, sentAt, errorMessage
✅ Wire cross-phase notifications (10 integrations) All services call EmailService.send() — see BLOCKERS.md

Cross-Phase Email Integrations (All Wired)

Feature Email Sent Service
E4-F8 Order confirmation TicketGenerationService
E2-F6 Match update notification MatchController.update()
E2-F7 Match cancellation notification MatchController.cancel()
E7-F6 Subquota delegation email SubquotaService
E9-F5 Transfer email (new + original holder) TicketTransferService
E9-F8 Cancellation confirmation email TicketCancellationService

Key Files

  • src/Service/EmailService.php — Sends via Symfony Mailer, persists EmailLog
  • src/Entity/EmailLog.php — Delivery tracking entity
  • src/Entity/EmailTemplate.php — Template with {{variable}} substitution
  • config/packages/mailer.yaml — Mailer DSN config
  • .env — MAILER_DSN=smtp://hns-ticketing-mailpit:1025 (dev), MAILER_SENDER=noreply@hns-ticketing.hr

E15-F2: Push Notification Service (Firebase)

Feature: E15-F2: Push Notification Service

Status Task Verification
⬜ Configure Firebase project and credentials BLOCKED — requires Firebase credentials
✅ Store user FCM tokens in database Tokens stored via PushToken entity
✅ Implement sendPush function (PushService) Push logged to DB (actual Firebase sending blocked)
✅ Support priority levels (normal, high) Priority respected
✅ Log delivery to PushLog table Log created

Last Updated: February 2026