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 EmailLogsrc/Entity/EmailLog.php— Delivery tracking entitysrc/Entity/EmailTemplate.php— Template with {{variable}} substitutionconfig/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