Class: SolidusSubscriptions::Processor
- Inherits:
-
Object
- Object
- SolidusSubscriptions::Processor
- Defined in:
- lib/solidus_subscriptions/processor.rb
Instance Attribute Summary collapse
- #users ⇒ Array<Spree.user_class> readonly
Class Method Summary collapse
-
.run ⇒ Object
Find all actionable subscriptions and intallments, group them together by user, and schedule a processing job for the group as a batch.
Instance Method Summary collapse
-
#build_jobs ⇒ Object
Create ‘ProcessInstallmentsJob`s for the users used to initalize the instance.
-
#initialize(users) ⇒ SolidusSubscriptions::Processor
constructor
Get a new instance of the SolidusSubscriptions::Processor.
Constructor Details
#initialize(users) ⇒ SolidusSubscriptions::Processor
Get a new instance of the SolidusSubscriptions::Processor
51 52 53 54 |
# File 'lib/solidus_subscriptions/processor.rb', line 51 def initialize(users) @users = users @installments = {} end |
Instance Attribute Details
#users ⇒ Array<Spree.user_class> (readonly)
43 44 45 |
# File 'lib/solidus_subscriptions/processor.rb', line 43 def users @users end |
Class Method Details
.run ⇒ Object
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_jobs ⇒ Object
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 |