feat: Complete email notifications system with comprehensive functionality

- Implement comprehensive email notification system for ticket purchases and event reminders
- Add event reminder job with configurable scheduling
- Enhance ticket mailer with QR code generation and proper formatting
- Update order model with email delivery tracking
- Add comprehensive test coverage for all email functionality
- Configure proper mailer settings and disable annotations
- Update backlog to reflect completed email features

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
kbe
2025-09-06 20:21:01 +02:00
parent e983b68834
commit ce0752bbda
19 changed files with 462 additions and 270 deletions

View File

@@ -9,15 +9,15 @@ if Rails.env.development?
# Temporarily disable view annotations during email rendering
original_setting = ActionView::Base.annotate_rendered_view_with_filenames
ActionView::Base.annotate_rendered_view_with_filenames = false
result = super(headers, &block)
# Restore original setting
ActionView::Base.annotate_rendered_view_with_filenames = original_setting
result
end
end)
end
end
end
end

View File

@@ -18,4 +18,4 @@ def next_run_time
target_time = Time.current.beginning_of_day + 9.hours
target_time += 1.day if Time.current > target_time
target_time
end
end

View File

@@ -38,7 +38,7 @@ Rails.application.routes.draw do
get "events", to: "events#index", as: "events"
get "events/:slug.:id", to: "events#show", as: "event"
# === Orders (scoped to events) ===
# === Orders ===
get "events/:slug.:id/orders/new", to: "orders#new", as: "event_order_new"
post "events/:slug.:id/orders", to: "orders#create", as: "event_order_create"
@@ -60,6 +60,7 @@ Rails.application.routes.draw do
get "payments/cancel", to: "tickets#payment_cancel", as: "payment_cancel"
# === Tickets ===
get "tickets/:ticket_id", to: "tickets#show", as: "ticket"
get "tickets/:ticket_id/download", to: "events#download_ticket", as: "download_ticket"
# === Promoter Routes ===