Class: Item::Materials::Checks::CerazorbLimit
- Inherits:
-
BaseService
- Object
- BaseService
- Item::Materials::Checks::CerazorbLimit
- Defined in:
- app/services/item/materials/checks/cerazorb_limit.rb
Overview
OBSOLETE DO NOT USE ####
Cerazorb is no longer sold, ThermalSheet does not have these constraints
Defined Under Namespace
Classes: Result
Constant Summary collapse
- THRESHOLD_MAX =
100
Instance Method Summary collapse
- #cz_2x2_lines(container) ⇒ Object protected
- #cz_2x2_quantities(container) ⇒ Object protected
- #process(container:, options: {}) ⇒ Object
- #qualify?(container) ⇒ Boolean
Instance Method Details
#cz_2x2_lines(container) ⇒ Object (protected)
26 27 28 |
# File 'app/services/item/materials/checks/cerazorb_limit.rb', line 26 def cz_2x2_lines(container) container.line_items.joins(:item).where(items: { sku: %w(CZRG-SH5MM-24X24 CZRG-SH5MM-24X24-P12) }) end |
#cz_2x2_quantities(container) ⇒ Object (protected)
30 31 32 |
# File 'app/services/item/materials/checks/cerazorb_limit.rb', line 30 def cz_2x2_quantities(container) cz_2x2_lines(container).map{|li| li.item.is_kit? ? li.quantity*li.item.kit_target_item_relations.sum(:quantity) : li.quantity }.sum end |
#process(container:, options: {}) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'app/services/item/materials/checks/cerazorb_limit.rb', line 15 def process(container:, options:{}) return Result.new(status: :skipped) unless qualify?(container) material_alerts = [] if (qty = cz_2x2_quantities(container)) > THRESHOLD_MAX material_alerts << Item::Materials::Alert.new(name: "You're exceeding the maximum recommended number of 2x2 Cerazorb sheets (#{qty}, maximum recommended: #{THRESHOLD_MAX}), please switch to 4x4 sheets", container: container) end Result.new(status: :ok, alerts: material_alerts) end |
#qualify?(container) ⇒ Boolean
11 12 13 |
# File 'app/services/item/materials/checks/cerazorb_limit.rb', line 11 def qualify?(container) cz_2x2_lines(container).exists? end |