summaryrefslogtreecommitdiff
path: root/lib/solidus_subscriptions/reminder.rb
blob: 82bed0a16147522261f5b655d35506afd7aa1bf6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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