diff options
author | Alberto Vena <kennyadsl@gmail.com> | 2021-04-26 18:28:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-26 18:28:51 +0200 |
commit | c37007ab822968851e246a416145d028c1865435 (patch) | |
tree | 110a41deabd7cbed23d34e64cf46062c2160b480 /lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb | |
parent | 4d758f51852a081c13104129521547a1f8664649 (diff) | |
parent | d1d131b62b9c27dc7ebd131b878e14192020971b (diff) |
Merge pull request #221 from solidusio-contrib/fix-orders-controller-decoration
Fix Spree::OrdersController decoration
Diffstat (limited to 'lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb')
-rw-r--r-- | lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb b/lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb new file mode 100644 index 0000000..6b39b4c --- /dev/null +++ b/lib/decorators/frontend/controllers/solidus_subscriptions/spree/orders_controller/create_subscription_line_items.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +# Create new subscription line items associated to the current order, when +# a line item is added to the cart which includes subscription_line_item +# params. +# +# The Subscriptions::LineItem acts as a line item place holder for a +# Subscription, indicating that it has been added to the order, but not +# yet purchased +module SolidusSubscriptions + module Spree + module OrdersController + module CreateSubscriptionLineItems + include SolidusSubscriptions::SubscriptionLineItemBuilder + + def self.prepended(base) + base.after_action( + :handle_subscription_line_items, + only: :populate, + if: ->{ params[:subscription_line_item] } + ) + end + + private + + def handle_subscription_line_items + line_item = @current_order.line_items.find_by(variant_id: params[:variant_id]) + create_subscription_line_item(line_item) + end + end + end + end +end + +Spree::OrdersController.prepend(SolidusSubscriptions::Spree::OrdersController::CreateSubscriptionLineItems) |