Class: Spree::Overview
- Inherits:
-
Object
- Object
- Spree::Overview
- Defined in:
- app/models/spree/overview.rb
Constant Summary collapse
- DEFAULT_COLORS =
['#0093DA', '#FF3500', '#92DB00', '#1AB3FF', '#FFB800'].freeze
Instance Attribute Summary collapse
-
#from ⇒ Object
Returns the value of attribute from.
-
#name ⇒ Object
Returns the value of attribute name.
-
#to ⇒ Object
Returns the value of attribute to.
-
#value ⇒ Object
Returns the value of attribute value.
Instance Method Summary collapse
- #abandoned_carts ⇒ Object
- #abandoned_carts_products(limit = 5) ⇒ Object
- #best_selling_taxons(limit = 5) ⇒ Object
- #best_selling_variants(limit = 5) ⇒ Object
- #biggest_spenders(limit = 5) ⇒ Object
- #checkout_steps(limit = 5) ⇒ Object
-
#initialize(params) ⇒ Overview
constructor
A new instance of Overview.
- #last_orders(limit = 5) ⇒ Object
- #orders_adjustment_total ⇒ Object
- #orders_by_day ⇒ Object
- #orders_line_total ⇒ Object
- #orders_total ⇒ Object
- #out_of_stock_products ⇒ Object
- #top_grossing_variants(limit = 5) ⇒ Object
Constructor Details
#initialize(params) ⇒ Overview
Returns a new instance of Overview.
8 9 10 11 12 13 |
# File 'app/models/spree/overview.rb', line 8 def initialize(params) @to = params[:to] @from = params[:from] @name = params[:name] @value = params[:value] end |
Instance Attribute Details
#from ⇒ Object
Returns the value of attribute from.
3 4 5 |
# File 'app/models/spree/overview.rb', line 3 def from @from end |
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'app/models/spree/overview.rb', line 3 def name @name end |
#to ⇒ Object
Returns the value of attribute to.
3 4 5 |
# File 'app/models/spree/overview.rb', line 3 def to @to end |
#value ⇒ Object
Returns the value of attribute value.
3 4 5 |
# File 'app/models/spree/overview.rb', line 3 def value @value end |
Instance Method Details
#abandoned_carts ⇒ Object
49 50 51 52 |
# File 'app/models/spree/overview.rb', line 49 def abandoned_carts [ [I18n.t('spree.simple_dash.abandoned_carts'), Spree::Order.abandoned_carts.size], [I18n.t('spree.simple_dash.completed_carts'), Spree::Order.complete.size] ] end |
#abandoned_carts_products(limit = 5) ⇒ Object
54 55 56 57 58 |
# File 'app/models/spree/overview.rb', line 54 def abandoned_carts_products(limit = 5) line_items = Spree::LineItem.abandoned_orders.first(limit) line_items.sort { |x, y| y[1] <=> x[1] } end |
#best_selling_taxons(limit = 5) ⇒ Object
94 95 96 |
# File 'app/models/spree/overview.rb', line 94 def best_selling_taxons(limit = 5) Spree::LineItem.top_selling_by_taxons.first(limit) end |
#best_selling_variants(limit = 5) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/models/spree/overview.rb', line 70 def best_selling_variants(limit = 5) line_items = Spree::LineItem.top_selling_by_variants.first(5) items = line_items.map do |li| next unless variant = Spree::Variant.with_deleted.find_by(id: li[0]) [variant.name, li[1]] end.compact items.sort { |x, y| y[1] <=> x[1] } end |
#biggest_spenders(limit = 5) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'app/models/spree/overview.rb', line 111 def biggest_spenders(limit = 5) spenders = Spree::Order.biggest_spenders.first(limit) items = spenders.map do |o| next unless user = Spree::User.find_by(id: o[0]) orders = user.orders qty = orders.size [orders.first.email, qty, o[1]] end.compact items.sort { |x,y| y[2] <=> x[2] } end |
#checkout_steps(limit = 5) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'app/models/spree/overview.rb', line 60 def checkout_steps(limit = 5) orders = Spree::Order.abandoned_carts_steps.first(limit) items = orders.map do |o| [o[0].titleize, o[1]] end items.sort { |x, y| y[1] <=> x[1] } end |
#last_orders(limit = 5) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'app/models/spree/overview.rb', line 98 def last_orders(limit = 5) orders = Spree::Order.last_orders_by_line_items.first(limit) items = orders.map do |o| next unless o.line_items qty = o.line_items.inject(0) { |sum, li| sum + li.quantity } [o.email, qty, o.total] end.compact items end |
#orders_adjustment_total ⇒ Object
45 46 47 |
# File 'app/models/spree/overview.rb', line 45 def orders_adjustment_total Spree::Order.where(conditions).sum(:adjustment_total) end |
#orders_by_day ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/models/spree/overview.rb', line 15 def orders_by_day if value == 'Count' orders = Spree::Order.select(:created_at).where(conditions) orders = orders.group_by { |o| o.created_at.to_date } fill_empty_entries(orders) orders.keys.sort.map do |key| [ key.strftime('%Y-%m-%d'), orders[key].size ] end else orders = Spree::Order.select([:created_at, :total]).where(conditions) orders = orders.group_by { |o| o.created_at.to_date } fill_empty_entries(orders) orders.keys.sort.map do |key| [ key.strftime('%Y-%m-%d'), orders[key].inject(0) do |s, o| s += o.total end ] end end end |
#orders_line_total ⇒ Object
37 38 39 |
# File 'app/models/spree/overview.rb', line 37 def orders_line_total Spree::Order.where(conditions).sum(:item_total) end |
#orders_total ⇒ Object
41 42 43 |
# File 'app/models/spree/overview.rb', line 41 def orders_total Spree::Order.where(conditions).sum(:total) end |
#out_of_stock_products ⇒ Object
125 126 127 |
# File 'app/models/spree/overview.rb', line 125 def out_of_stock_products Spree::Product.out_of_stock.first(5) end |
#top_grossing_variants(limit = 5) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'app/models/spree/overview.rb', line 82 def top_grossing_variants(limit = 5) line_items = Spree::LineItem.top_grossing_by_variants.first(limit) items = line_items.map do |li| next unless variant = Spree::Variant.with_deleted.find_by(id: li[0]) [variant.name, li[1]] end.compact items.sort { |x, y| y[1] <=> x[1] } end |