Class: SpreeCmCommissioner::Webhooks::Rules::OrderVendors
- Inherits:
-
SubscriberRule
- Object
- Spree::Base
- Base
- SubscriberRule
- SpreeCmCommissioner::Webhooks::Rules::OrderVendors
- Defined in:
- app/models/spree_cm_commissioner/webhooks/rules/order_vendors.rb
Constant Summary collapse
- MATCH_POLICIES =
%w[any all].freeze
- SUPPORTED_EVENTS =
[ 'order.create', 'order.delete', 'order.update', 'order.canceled', 'order.placed', 'order.resumed', 'order.shipped' ].freeze
Instance Method Summary collapse
-
#filter(orders) ⇒ Object
TODO: support all match policy.
- #matches?(webhook_payload_body, _options = {}) ⇒ Boolean
- #supported?(event) ⇒ Boolean
- #vendor_ids ⇒ Object
Instance Method Details
#filter(orders) ⇒ Object
TODO: support all match policy
25 26 27 28 29 30 |
# File 'app/models/spree_cm_commissioner/webhooks/rules/order_vendors.rb', line 25 def filter(orders) case preferred_match_policy when 'any' orders.joins(:line_items).where(line_items: { vendor_id: vendor_ids }) end end |
#matches?(webhook_payload_body, _options = {}) ⇒ Boolean
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/spree_cm_commissioner/webhooks/rules/order_vendors.rb', line 36 def matches?(webhook_payload_body, = {}) return false if vendor_ids.empty? payload_body = JSON.parse(webhook_payload_body) vendor_ids = payload_body['included'].filter_map do |include| include['attributes']['vendor_id'].to_s if include['type'] == 'line_item' end return false if vendor_ids.empty? case preferred_match_policy when 'any' preferred_vendors.any? { |vendor_id| vendor_ids.include?(vendor_id) } when 'all' preferred_vendors.all? { |vendor_id| vendor_ids.include?(vendor_id) } end end |
#supported?(event) ⇒ Boolean
32 33 34 |
# File 'app/models/spree_cm_commissioner/webhooks/rules/order_vendors.rb', line 32 def supported?(event) SUPPORTED_EVENTS.include?(event) end |
#vendor_ids ⇒ Object
20 21 22 |
# File 'app/models/spree_cm_commissioner/webhooks/rules/order_vendors.rb', line 20 def vendor_ids preferred_vendors || [] end |