Sha256: caaf3c6bab7b9d77d015ed83a43067abccd38382ffe82093fe677bf03ef1af6d

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

class TbCommerce::OrdersController < ApplicationController

  def index
    @orders = orders_query_for_current_session.includes(active_record_includes_for_index()).order(:created_at => :desc).paginate(:page => params[:page], :per_page => 5)
    render 'index'
  end  

  def show
    @order = orders_query_for_current_session.find_by!(:id => params[:id])
    render 'show'
  end

private

  # This should build a query that only returns orders for the current user
  # If the user is logged in we use spud_user_id, otherwise we use session_id
  #
  def orders_query_for_current_session
    query = TbCommerce::Order.where(:status => [TbCommerce::Order::Status::PLACED, TbCommerce::Order::Status::SHIPPED]).joins(:cart)
    if current_user
      return query.where(:tb_commerce_carts => {:spud_user_id => current_user.id})
    else
      return query.where(:tb_commerce_carts => {:session_id => session.id})
    end
  end

  # Hash of relationships that should be eager loaded on the order history page
  #
  def active_record_includes_for_index
    return {
      :cart => {
        :cart_items => {:product_sku => {:product => [:category, :images]}}
      }
    }
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tb_commerce-0.0.4 app/controllers/tb_commerce/orders_controller.rb
tb_commerce-0.0.3 app/controllers/tb_commerce/orders_controller.rb
tb_commerce-0.0.2 app/controllers/tb_commerce/orders_controller.rb