Module: SolidusSubscriptions::SubscriptionGenerator

Extended by:
SubscriptionGenerator
Included in:
SubscriptionGenerator
Defined in:
app/models/solidus_subscriptions/subscription_generator.rb

Defined Under Namespace

Classes: SubscriptionConfiguration

Instance Method Summary collapse

Instance Method Details

#activate(subscription_line_items) ⇒ SolidusSubscriptions::Subscription

Create and persist a subscription for a collection of subscription

line items

Parameters:

Returns:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/models/solidus_subscriptions/subscription_generator.rb', line 16

def activate(subscription_line_items)
  return if subscription_line_items.empty?

  order = subscription_line_items.first.order
  configuration = subscription_configuration(subscription_line_items.first)

  subscription_attributes = {
    user: order.user,
    line_items: subscription_line_items,
    store: order.store,
    shipping_address: order.ship_address,
    **configuration.to_h
  }

  Subscription.create!(subscription_attributes) do |sub|
    sub.actionable_date = sub.next_actionable_date
  end
end

#group(subscription_line_items) ⇒ Array<Array<SolidusSubscriptions::LineItem>>

Group a collection of line items by common subscription configuration options. Grouped subscription_line_items can belong to a single subscription.

Parameters:

Returns:



43
44
45
46
47
48
# File 'app/models/solidus_subscriptions/subscription_generator.rb', line 43

def group(subscription_line_items)
  subscription_line_items.group_by do |li|
    subscription_configuration(li)
  end.
  values
end