mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-11-05 12:42:48 -05:00
- 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.
24 lines
1.0 KiB
Ruby
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
|