From 6abe0b375cb4f1b1c0d2986d4fd2ba6329a3c011 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 12 May 2021 16:31:49 +0100 Subject: [PATCH] Refactor stock levels check in CartController --- app/controllers/cart_controller.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/controllers/cart_controller.rb b/app/controllers/cart_controller.rb index edd9e69b6d..e35aedad28 100644 --- a/app/controllers/cart_controller.rb +++ b/app/controllers/cart_controller.rb @@ -11,11 +11,7 @@ class CartController < BaseController order.cap_quantity_at_stock! order.recreate_all_fees! - variant_ids = order.line_items.pluck(:variant_id) - - render json: { error: false, - stock_levels: VariantsStockLevels.new.call(order, variant_ids) }, - status: :ok + render json: { error: false, stock_levels: stock_levels(order) }, status: :ok else render json: { error: cart_service.errors.full_messages.join(",") }, status: :precondition_failed @@ -24,6 +20,13 @@ class CartController < BaseController private + def stock_levels(order) + variants_in_cart = order.line_items.pluck(:variant_id) + variants_in_request = raw_params[:variants]&.map(&:first) || [] + + VariantsStockLevels.new.call(order, (variants_in_cart + variants_in_request).uniq) + end + def check_authorization session[:access_token] ||= params[:token] order = Spree::Order.find_by(number: params[:id]) || current_order