Sha256: cb01170b37a0151151098d906645da2e58f1297eb2c2df0b9a37fd2b55fef574

Contents?: true

Size: 970 Bytes

Versions: 104

Compression:

Stored size: 970 Bytes

Contents

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

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

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

          if user || email
            if !completed_orders.blank? && completed_orders.first != order
              eligibility_errors.add(:base, eligibility_error_message(:not_first_order))
            end
          else
            eligibility_errors.add(:base, eligibility_error_message(:no_user_or_email_specified))
          end

          eligibility_errors.empty?
        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

104 entries across 104 versions & 3 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/promotion/rules/first_order.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/promotion/rules/first_order.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/promotion/rules/first_order.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/promotion/rules/first_order.rb
spree_core-3.2.9 app/models/spree/promotion/rules/first_order.rb
spree_core-3.1.14 app/models/spree/promotion/rules/first_order.rb
spree_core-3.3.6 app/models/spree/promotion/rules/first_order.rb
spree_core-3.2.8 app/models/spree/promotion/rules/first_order.rb
spree_core-3.1.13 app/models/spree/promotion/rules/first_order.rb
spree_core-3.3.5 app/models/spree/promotion/rules/first_order.rb
spree_core-3.3.4 app/models/spree/promotion/rules/first_order.rb
spree_core-3.2.7 app/models/spree/promotion/rules/first_order.rb
spree_core-3.1.12 app/models/spree/promotion/rules/first_order.rb
solidus_core-1.2.3 app/models/spree/promotion/rules/first_order.rb
solidus_core-1.1.4 app/models/spree/promotion/rules/first_order.rb
solidus_core-1.0.7 app/models/spree/promotion/rules/first_order.rb
spree_core-3.3.3 app/models/spree/promotion/rules/first_order.rb
spree_core-3.2.6 app/models/spree/promotion/rules/first_order.rb
spree_core-3.1.11 app/models/spree/promotion/rules/first_order.rb
spree_core-3.1.10 app/models/spree/promotion/rules/first_order.rb