Module: Spree::UserMethods

Extended by:
ActiveSupport::Concern
Includes:
MultiSearchable, RansackableAttributes, UserPaymentSource, UserReporting, UserRoles
Included in:
LegacyUser
Defined in:
app/models/concerns/spree/user_methods.rb

Instance Method Summary collapse

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

#money_methods

Instance Method Details

#available_store_credits(store) ⇒ Array<Spree::Money>

Returns the available store credits for the current store per currency

Parameters:

Returns:



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

Returns:

  • (Boolean)


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

Parameters:

Returns:



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

Parameters:

Options Hash (options):

  • :includes (Array<Symbol>)

Returns:



93
94
95
96
97
98
# File 'app/models/concerns/spree/user_methods.rb', line 93

def last_incomplete_spree_order(store, options = {})
  orders.where(store: store).incomplete.not_canceled.
    includes(options[: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

Parameters:

  • store (Spree::Store) (defaults to: nil)
  • currency (String) (defaults to: nil)

Returns:

  • (Float)


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