Sha256: 469adb4b6ce6f42767239a13428fa101f6331017c19ab664f20265026e74ebd2

Contents?: true

Size: 1.91 KB

Versions: 5

Compression:

Stored size: 1.91 KB

Contents

module Refinery
  module Stores
    class StoresController < ::ApplicationController

      before_filter :find_all_stores, :only => :index
      before_filter :find_page, :except => [:index, :add_to_cart, :empty_cart, :checkout]
      before_filter :find_cart, :except => :empty_cart

      def index
        # you can use meta fields from your model instead (e.g. browser_title)
        # by swapping @page for @store in the line below:
        present(@page)
      end

      def show
        @store = Store.find(params[:id])

        # you can use meta fields from your model instead (e.g. browser_title)
        # by swapping @page for @store in the line below:
        present(@page)
      end

  def add_to_cart
    begin                     
      product = ::Refinery::Products::Product.find(params[:id])  
    rescue ActiveRecord::RecordNotFound
      logger.error("Attempt to access invalid product #{params[:id]}")
      redirect_to_index("Invalid product")
    else
      @current_item = @cart.add_product(product)
      redirect_to_index unless request.xhr?
    end
  end

  def empty_cart
    session[:cart] = nil
    redirect_to_index
  end

  
  def checkout
    if @cart.items.empty?
      redirect_to_index("Your cart is empty")
    else
      @order = ::Refinery::Orders::Order.checkout!( @cart )
      session[:cart] = nil
      redirect_to   refinery.edit_orders_order_path( @order )
    end
  end
  
  private
  
  def redirect_to_index(msg = nil)
    flash[:notice] = msg if msg
    redirect_to refinery.stores_store_path( find_first_store )
  end
    
  
  def find_cart
    @cart = (session[:cart] ||= Cart.new)
  end
  
    protected

      def find_first_store
        @store = Store.order('position ASC').first
      end


      def find_all_stores
        @stores = Store.order('position ASC')
      end

      def find_page
        @page = ::Refinery::Page.where(:link_url => "/stores").first
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
refinerycms-stores-0.0.5 app/controllers/refinery/stores/stores_controller.rb
refinerycms-stores-0.0.4 app/controllers/refinery/stores/stores_controller.rb
refinerycms-stores-0.0.3 app/controllers/refinery/stores/stores_controller.rb
refinerycms-stores-0.0.2 app/controllers/refinery/stores/stores_controller.rb
refinerycms-stores-0.0.1 app/controllers/refinery/stores/stores_controller.rb