diff options
Diffstat (limited to 'lib/decorators/api/controllers/solidus_subscriptions/spree/api/line_items_controller/create_subscription_line_items.rb')
-rw-r--r-- | lib/decorators/api/controllers/solidus_subscriptions/spree/api/line_items_controller/create_subscription_line_items.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/decorators/api/controllers/solidus_subscriptions/spree/api/line_items_controller/create_subscription_line_items.rb b/lib/decorators/api/controllers/solidus_subscriptions/spree/api/line_items_controller/create_subscription_line_items.rb new file mode 100644 index 0000000..7872a2a --- /dev/null +++ b/lib/decorators/api/controllers/solidus_subscriptions/spree/api/line_items_controller/create_subscription_line_items.rb @@ -0,0 +1,36 @@ +# 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 Api + module LineItemsController + module CreateSubscriptionLineItems + include SolidusSubscriptions::SubscriptionLineItemBuilder + + def self.prepended(base) + base.after_action( + :handle_subscription_line_items, + only: [:create, :update], + if: ->{ params[:subscription_line_item] } + ) + end + + private + + def handle_subscription_line_items + create_subscription_line_item(@line_item) + end + end + end + end + end +end + +Spree::Api::LineItemsController.prepend(SolidusSubscriptions::Spree::Api::LineItemsController::CreateSubscriptionLineItems) |