Sha256: 2d6288cd1daaa7dfa3f982eaf484d88c5c7fd8398f5fd7300f8ba86849cb1399

Contents?: true

Size: 894 Bytes

Versions: 1

Compression:

Stored size: 894 Bytes

Contents

module Shopper
  module CheckoutWizard
    extend ActiveSupport::Concern
    include ::Wicked::Wizard

    EmptyCardError = Class.new(RuntimeError)
    CantAccessError = Class.new(RuntimeError)

    included do
      steps :address, :delivery, :payment, :confirm, :complete

      helper_method :finish_wizard_path

      before_action :set_manager
    end

    def set_manager
      @manager = CheckoutManager.new(current_order)
    end

    def finish_wizard_path
      checkout_path(:complete)
    end

    def redirect_to_next_step
      redirect_to checkout_path(@manager.next_step)
    end

    def minimal_accessible_step
      @manager.minimal_accessible_step
    end

    private

    def check_empty_cart
      raise EmptyCardError if current_order.order_items.empty?
    end

    def check_accesability
      raise CantAccessError unless @manager.can_access?(step)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoppper-0.1.0 lib/shopper/checkout_wizard.rb