Class: Workarea::Pricing::Discount::ProductAttribute::ItemQualifier

Inherits:
Object
  • Object
show all
Defined in:
app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb

Overview

This class determines whether an item can qualify for a Workarea::Pricing::Discount::ProductAttribute discount.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(discount, item) ⇒ ItemQualifier

Returns a new instance of ItemQualifier.



11
12
13
14
# File 'app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb', line 11

def initialize(discount, item)
  @discount = discount
  @item = item
end

Instance Attribute Details

#discountObject (readonly)

Returns the value of attribute discount.



8
9
10
# File 'app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb', line 8

def discount
  @discount
end

#itemObject (readonly)

Returns the value of attribute item.



8
9
10
# File 'app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb', line 8

def item
  @item
end

Instance Method Details

#qualifies?Boolean

Whether the item qualifies, as defined by an optionaize comparision of keys and value or any element of the array if the item has an array.

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
31
32
# File 'app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb', line 22

def qualifies?
  !!details.detect do |key, value|
    next unless key.to_s.optionize == attribute_name.optionize

    if value.respond_to?(:any?)
      value.any? { |v| v.to_s.optionize == attribute_value.optionize }
    else
      value.to_s.optionize == attribute_value.optionize
    end
  end
end