Files
growstuff/app/controllers/admin/reminder_stats_controller.rb
T
Brenda Wallace 5313578d98 Add ReminderEvent tracking for planting and harvest reminders
- Update the growstuff rake tasks to log ReminderEvent when planting and harvest reminders are sent.
- Create a factory for ReminderEvent to facilitate testing.
- Implement model specs for ReminderEvent, including validations and weekly counts.
- Add request specs for Admin::ReminderStatsController to verify reminder statistics.
- Enhance unsubscribe specs to ensure ReminderEvent is logged correctly on unsubscriptions.
- Update task specs for growstuff to verify ReminderEvent counts for sent reminders.
2026-10-31 19:29:54 +13:00

24 lines
1.0 KiB
Ruby

# frozen_string_literal: true
module Admin
# How many reminder emails go out each week, and how many members unsubscribe from them.
class ReminderStatsController < ApplicationController
before_action :authenticate_member!
before_action { authorize! :manage, :all }
REMINDERS = {
'planting_reminder' => { title: 'Planting reminders', setting: :send_planting_reminder, feature: :enable_planting_reminders },
'harvest_reminder' => { title: 'Harvest reminders', setting: :send_harvest_reminder, feature: :enable_harvest_reminders }
}.freeze
def index
@reminders = REMINDERS.map do |kind, reminder|
reminder.merge(kind:, weeks: ReminderEvent.weekly(kind), enabled: Feature.enabled?(reminder[:feature]),
subscribed: Member.confirmed.where(reminder[:setting] => true).count,
opted_out: Member.confirmed.where(reminder[:setting] => false).count,
last_sent_on: ReminderEvent.of_kind(kind).where(event: 'sent').maximum(:created_at))
end
end
end
end