Module: Spree::UserMethods
- Extended by:
- ActiveSupport::Concern
- Included in:
- LegacyUser
- Defined in:
- app/models/concerns/spree/user_methods.rb
Instance Method Summary collapse
-
#available_store_credits(store) ⇒ Array<Spree::Money>
Returns the available store credits for the current store per currency.
-
#can_be_deleted? ⇒ Boolean
Returns true if the user can be deleted.
-
#default_wishlist_for_store(current_store) ⇒ Spree::Wishlist
Returns the default wishlist for the current store if no default wishlist exists, it creates one.
-
#last_incomplete_spree_order(store, options = {}) ⇒ Spree::Order
Returns the last incomplete spree order for the current store.
-
#total_available_store_credit(currency = nil, store = nil) ⇒ Float
Returns the total available store credit for the current store per currency.
Methods included from UserReporting
#amount_spent_in, #average_order_value, #completed_orders_for_store, #display_amount_spent_in, #lifetime_value, #order_count, #report_values_for
Methods included from DisplayMoney
Instance Method Details
#available_store_credits(store) ⇒ Array<Spree::Money>
Returns the available store credits for the current store per currency
113 114 115 116 117 118 119 |
# File 'app/models/concerns/spree/user_methods.rb', line 113 def available_store_credits(store) store ||= Store.default store_credits.for_store(store).pluck(:currency).uniq.each_with_object([]) do |currency, arr| arr << Spree::Money.new(total_available_store_credit(currency, store), currency: currency) end end |
#can_be_deleted? ⇒ Boolean
Returns true if the user can be deleted
133 134 135 136 137 138 139 |
# File 'app/models/concerns/spree/user_methods.rb', line 133 def can_be_deleted? if role_users.where(resource: Spree::Store.current).exists? Spree::Store.current.users.where.not(id: id).exists? else orders.complete.none? end end |
#default_wishlist_for_store(current_store) ⇒ Spree::Wishlist
Returns the default wishlist for the current store if no default wishlist exists, it creates one
125 126 127 128 129 |
# File 'app/models/concerns/spree/user_methods.rb', line 125 def default_wishlist_for_store(current_store) wishlists.find_by(is_default: true, store_id: current_store.id) || ActiveRecord::Base.connected_to(role: :writing) do wishlists.create!(store: current_store, is_default: true, name: Spree.t(:default_wishlist_name)) end end |
#last_incomplete_spree_order(store, options = {}) ⇒ Spree::Order
Returns the last incomplete spree order for the current store
93 94 95 96 97 98 |
# File 'app/models/concerns/spree/user_methods.rb', line 93 def last_incomplete_spree_order(store, = {}) orders.where(store: store).incomplete.not_canceled. includes([:includes]). order('created_at DESC'). first end |
#total_available_store_credit(currency = nil, store = nil) ⇒ Float
Returns the total available store credit for the current store per currency
104 105 106 107 108 |
# File 'app/models/concerns/spree/user_methods.rb', line 104 def total_available_store_credit(currency = nil, store = nil) store ||= Store.default currency ||= store.default_currency store_credits.without_gift_card.for_store(store).where(currency: currency).reload.to_a.sum(&:amount_remaining) end |