Module: Spree::UserMethods

Extended by:
ActiveSupport::Concern
Includes:
UserAddressBook, UserApiAuthentication, UserReporting
Included in:
LegacyUser
Defined in:
app/models/concerns/spree/user_methods.rb

Instance Method Summary collapse

Methods included from UserAddressBook

#bill_address=, #bill_address_attributes=, #mark_default_bill_address, #mark_default_ship_address, #persist_order_address, #remove_from_address_book, #save_in_address_book, #ship_address=, #ship_address_attributes=

Methods included from UserReporting

#average_order_value, #lifetime_value, #order_count

Methods included from DisplayMoney

#money_methods

Methods included from UserApiAuthentication

#clear_spree_api_key, #clear_spree_api_key!, #generate_spree_api_key, #generate_spree_api_key!

Instance Method Details

#auto_generate_spree_api_keyObject



47
48
49
50
51
52
53
# File 'app/models/concerns/spree/user_methods.rb', line 47

def auto_generate_spree_api_key
  return if !respond_to?(:spree_api_key) || spree_api_key.present?

  if Spree::Config.generate_api_key_for_all_roles || (spree_roles.map(&:name) & Spree::Config.roles_for_auto_api_key).any?
    generate_spree_api_key!
  end
end

#available_store_credit_total(currency:) ⇒ Object



67
68
69
70
71
# File 'app/models/concerns/spree/user_methods.rb', line 67

def available_store_credit_total(currency:)
  store_credits.to_a.
    select { |credit| credit.currency == currency }.
    sum(&:amount_remaining)
end

#display_available_store_credit_total(currency:) ⇒ Object



73
74
75
76
77
78
# File 'app/models/concerns/spree/user_methods.rb', line 73

def display_available_store_credit_total(currency:)
  Spree::Money.new(
    available_store_credit_total(currency: currency),
    currency: currency,
  )
end

#has_spree_role?(role_in_question) ⇒ Boolean

has_spree_role? simply needs to return true or false whether a user has a role or not.

Returns:

  • (Boolean)


43
44
45
# File 'app/models/concerns/spree/user_methods.rb', line 43

def has_spree_role?(role_in_question)
  spree_roles.any? { |role| role.name == role_in_question.to_s }
end

#last_incomplete_spree_order(store: nil, only_frontend_viewable: true) ⇒ Spree::Order

since the customer’s last complete order.

Returns:

  • (Spree::Order)

    the most-recently-created incomplete order



57
58
59
60
61
62
63
64
65
# File 'app/models/concerns/spree/user_methods.rb', line 57

def last_incomplete_spree_order(store: nil, only_frontend_viewable: true)
  self_orders = orders
  self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
  self_orders = self_orders.where(store: store) if store
  self_orders = self_orders.where('updated_at > ?', Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
  self_orders = self_orders.where('created_at > ?', Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
  last_order = self_orders.order(:created_at).last
  last_order unless last_order.try!(:completed?)
end

#walletObject



38
39
40
# File 'app/models/concerns/spree/user_methods.rb', line 38

def wallet
  @wallet ||= Spree::Wallet.new(self)
end