Class: Effective::Datatables::Orders

Inherits:
Effective::Datatable
  • Object
show all
Defined in:
app/models/effective/datatables/orders.rb

Instance Method Summary collapse

Instance Method Details

#collectionObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/models/effective/datatables/orders.rb', line 36

def collection
  collection = Effective::Order.unscoped.purchased
    .joins(:user)
    .joins(:order_items)
    .group('users.email')
    .group('orders.id')
    .select('users.email AS email')
    .select('orders.*')
    .select("#{query_total} AS total")
    .select("string_agg(order_items.title, '!!OI!!') AS order_items")

  if attributes[:user_id].present?
    collection.where(:user_id => attributes[:user_id])
  else
    collection
  end

end

#query_totalObject



55
56
57
# File 'app/models/effective/datatables/orders.rb', line 55

def query_total
  "SUM((order_items.price * order_items.quantity) + (CASE order_items.tax_exempt WHEN true THEN 0 ELSE ((order_items.price * order_items.quantity) * order_items.tax_rate) END))"
end

#search_column(collection, table_column, search_term) ⇒ Object



59
60
61
62
63
64
65
# File 'app/models/effective/datatables/orders.rb', line 59

def search_column(collection, table_column, search_term)
  if table_column[:name] == 'total'
    collection.having("#{query_total} = ?", (search_term.gsub(/[^0-9.]/, '').to_f * 100.0).to_i)
  else
    super
  end
end