From 5ec541d854fd8d6f5d0cb689418b53488ad4a0c8 Mon Sep 17 00:00:00 2001 From: Du Peng Date: Sun, 21 Aug 2022 19:08:10 +0200 Subject: [PATCH] add checkout controller and refactoring cart controller --- app/controllers/api/cart_controller.rb | 14 ++------------ app/controllers/api/checkout_controller.rb | 6 ++++++ app/controllers/concerns/api/order_concern.rb | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 app/controllers/api/checkout_controller.rb create mode 100644 app/controllers/concerns/api/order_concern.rb diff --git a/app/controllers/api/cart_controller.rb b/app/controllers/api/cart_controller.rb index a41cb6b4c..f26d97469 100644 --- a/app/controllers/api/cart_controller.rb +++ b/app/controllers/api/cart_controller.rb @@ -2,6 +2,8 @@ # API Controller for manage user's cart class API::CartController < API::ApiController + include API::OrderConcern + before_action :current_order, except: %i[create] before_action :ensure_order, except: %i[create] @@ -37,18 +39,6 @@ class API::CartController < API::ApiController private - def order_token - request.headers['X-Fablab-Order-Token'] || cart_params[:order_token] - end - - def current_order - @current_order = Order.find_by(token: order_token) - end - - def ensure_order - raise ActiveRecord::RecordNotFound if @current_order.nil? - end - def orderable Product.find(cart_params[:orderable_id]) end diff --git a/app/controllers/api/checkout_controller.rb b/app/controllers/api/checkout_controller.rb new file mode 100644 index 000000000..4c9425747 --- /dev/null +++ b/app/controllers/api/checkout_controller.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +# API Controller for cart checkout +class API::CheckoutController < API::ApiController + include ::API::OrderConcern +end diff --git a/app/controllers/concerns/api/order_concern.rb b/app/controllers/concerns/api/order_concern.rb new file mode 100644 index 000000000..eb38d42d0 --- /dev/null +++ b/app/controllers/concerns/api/order_concern.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# Concern for CartController and CheckoutController +module API::OrderConcern + private + + def order_token + request.headers['X-Fablab-Order-Token'] || cart_params[:order_token] + end + + def current_order + @current_order = Order.find_by(token: order_token) + end + + def ensure_order + raise ActiveRecord::RecordNotFound if @current_order.nil? + end +end