Class: SolidusSubscriptions::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/solidus_subscriptions/processor.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(users) ⇒ SolidusSubscriptions::Processor

Get a new instance of the SolidusSubscriptions::Processor

Parameters:

  • users (Array<Spree.user_class>)

    A list of users with actionable subscriptions or installments



51
52
53
54
# File 'lib/solidus_subscriptions/processor.rb', line 51

def initialize(users)
  @users = users
  @installments = {}
end

Instance Attribute Details

#usersArray<Spree.user_class> (readonly)

Returns:

  • (Array<Spree.user_class>)


43
44
45
# File 'lib/solidus_subscriptions/processor.rb', line 43

def users
  @users
end

Class Method Details

.runObject

Find all actionable subscriptions and intallments, group them together by user, and schedule a processing job for the group as a batch



15
16
17
# File 'lib/solidus_subscriptions/processor.rb', line 15

def run
  batched_users_to_be_processed.each { |batch| new(batch).build_jobs }
end

Instance Method Details

#build_jobsObject

Create ‘ProcessInstallmentsJob`s for the users used to initalize the instance



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/solidus_subscriptions/processor.rb', line 58

def build_jobs
  users.map do |user|
    installemts_by_address_and_user = installments(user).group_by do |i|
      i.subscription.shipping_address_id
    end

    installemts_by_address_and_user.values.each do |grouped_installments|
      ProcessInstallmentsJob.perform_later grouped_installments.map(&:id)
    end
  end
end