Sha256: 3c98d37ddcd0ce45c23f63399123129937ce92dd33620070ecf026d333147ae4

Contents?: true

Size: 656 Bytes

Versions: 13

Compression:

Stored size: 656 Bytes

Contents

module Spree
  class Promotion
    module Rules
      class FirstOrder < PromotionRule
        attr_reader :user, :email

        def eligible?(order, options = {})
          @user = order.try(:user) || options[:user]
          @email = order.email

          if user || email
            completed_orders.blank? || (completed_orders.first == order)
          else
            false
          end
        end

        private
          def completed_orders
            user ? user.orders.complete : orders_by_email
          end

          def orders_by_email
            Spree::Order.where(email: email).complete
          end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
spree_core-2.1.12 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.11 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.10 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.9 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.8 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.7 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.6 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.5 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.4 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.3 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.2 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.1 app/models/spree/promotion/rules/first_order.rb
spree_core-2.1.0 app/models/spree/promotion/rules/first_order.rb