Preskoči na sadržaj

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
  • .envMAILER_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