app/controllers/comable/orders_controller.rb in comable_frontend-0.2.2 vs app/controllers/comable/orders_controller.rb in comable_frontend-0.2.3
- old
+ new
@@ -1,27 +1,36 @@
module Comable
class OrdersController < Comable::ApplicationController
prepend Comable::ShipmentAction
prepend Comable::PaymentAction
+ include Comable::PermittedAttributes
+ helper_method :next_order_path
+
+ # TODO: Change the method name to load_order_with_params
before_filter :load_order
before_filter :verify
+ # TODO: Remove
after_filter :save_order, except: :create
rescue_from Comable::InvalidOrder, with: :order_invalid
+ def new
+ redirect_to next_order_path unless agreement_required?
+ end
+
def orderer
case request.method_symbol
when :post
- redirect_to comable.delivery_order_path
+ redirect_to next_order_path if @order.save
end
end
def delivery
case request.method_symbol
when :post
- redirect_to next_order_path
+ redirect_to next_order_path if @order.save
end
end
def create
order = current_customer.order
@@ -38,21 +47,40 @@
def send_order_complete_mail
Comable::OrderMailer.complete(@order).deliver if current_store.email_activate?
end
+ # TODO: Switch to state_machine
+ # rubocop:disable all
def next_order_path(target_action_name = nil)
case (target_action_name || action_name).to_sym
+ when :new
+ orderer_required? ? comable.orderer_order_path : next_order_path(:orderer)
+ when :orderer
+ delivery_required? ? comable.delivery_order_path : next_order_path(:delivery)
when :delivery
shipment_required? ? comable.shipment_order_path : next_order_path(:shipment)
when :shipment
payment_required? ? comable.payment_order_path : next_order_path(:payment)
else
comable.confirm_order_path
end
end
+ # rubocop:enable all
+ def agreement_required?
+ @order.customer.nil?
+ end
+
+ def orderer_required?
+ @order.bill_address.nil?
+ end
+
+ def delivery_required?
+ @order.ship_address.nil?
+ end
+
def verify
return if current_customer.cart.any?
flash[:alert] = I18n.t('comable.carts.empty')
redirect_to comable.cart_path
end
@@ -75,22 +103,19 @@
end
end
def order_params_for_orderer
params.require(:order).permit(
- :family_name,
- :first_name,
- :email
+ :family_name, # TODO: Remove
+ :first_name, # TODO: Remove
+ :email,
+ bill_address_attributes: permitted_address_attributes
)
end
def order_params_for_delivery
params.require(:order).permit(
- order_deliveries_attributes: [
- :id,
- :family_name,
- :first_name
- ]
+ ship_address_attributes: permitted_address_attributes
)
end
def order_invalid
flash[:alert] = I18n.t('comable.orders.failure')