summaryrefslogtreecommitdiff
path: root/lib/solidus_subscriptions/reminder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/solidus_subscriptions/reminder.rb')
-rw-r--r--lib/solidus_subscriptions/reminder.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/solidus_subscriptions/reminder.rb b/lib/solidus_subscriptions/reminder.rb
new file mode 100644
index 0000000..82bed0a
--- /dev/null
+++ b/lib/solidus_subscriptions/reminder.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require_relative 'subscription_reminder_policy'
+
+module SolidusSubscriptions
+ class Reminder
+ class << self
+ def run
+ SolidusSubscriptions::Subscription
+ .where(installments: SolidusSubscriptions::Installment.unfulfilled)
+ .or(SolidusSubscriptions::Subscription.where.not(state: ["canceled", "inactive"]))
+ .distinct
+ .find_each
+ .select { |subscription| SubscriptionReminderPolicy.new(subscription).send_reminder? }
+ .map do |subscription|
+ SolidusSubscriptions::ProcessReminderJob.perform_later(subscription)
+ end
+ end
+ end
+ end
+end \ No newline at end of file