Sha256: 74b24c4f57937229255feb8e645e64a9a1d26337196b7607738632905f775416

Contents?: true

Size: 938 Bytes

Versions: 2

Compression:

Stored size: 938 Bytes

Contents

require_dependency "shopping_cart/application_controller"

module ShoppingCart
  class CheckoutController < ApplicationController
    include Wicked::Wizard

    before_action :set_steps
    before_action :setup_wizard
    before_action :set_order

    def show
      @checkout_data = GetCheckoutData.call(@order, step)
      ValidateStep.call(@step, @order) do
        on(:ok)       { render_wizard }
        on(:invalid)  { redirect_to previous_wizard_path }
      end
    end

    def update
      ProceedCheckout.call(params, @order, step) do
        on(:ok)         { render_wizard @order }
        on(:invalid)    { redirect_to root_path }
        on(:validation) { render_wizard }
      end
    end

    private

    def set_order
      @order = OrderForCheckout.new(current_user.id, step).query
      redirect_to(root_path) unless @order
    end

    def set_steps
      self.steps = ShoppingCart.checkout_steps
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shopping-cart-0.1.1 app/controllers/shopping_cart/checkout_controller.rb
shopping-cart-0.1.0 app/controllers/shopping_cart/checkout_controller.rb