Class: Spree::Promotion::Rules::FirstRepeatPurchaseSince

Inherits:
Spree::PromotionRule show all
Defined in:
app/models/spree/promotion/rules/first_repeat_purchase_since.rb

Instance Method Summary collapse

Methods inherited from Spree::PromotionRule

#actionable?, #eligibility_errors, for, #to_partial_path

Methods inherited from Base

display_includes, #initialize_preference_defaults, page, preference

Methods included from Spree::Preferences::Preferable

#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

Instance Method Details

#applicable?(promotable) ⇒ Boolean

This promotion is applicable to orders only.



9
10
11
# File 'app/models/spree/promotion/rules/first_repeat_purchase_since.rb', line 9

def applicable?(promotable)
  promotable.is_a?(Spree::Order)
end

#eligible?(order, _options = {}) ⇒ Boolean

This is never eligible if the order does not have a user, and that user does not have any previous completed orders.

This is eligible if the user’s most recently completed order is more than the preferred days ago



18
19
20
21
22
23
24
25
# File 'app/models/spree/promotion/rules/first_repeat_purchase_since.rb', line 18

def eligible?(order, _options = {})
  return false unless order.user

  last_order = last_completed_order(order.user)
  return false unless last_order

  last_order.completed_at < preferred_days_ago.days.ago
end