Class: Item::Materials::Checks::CerazorbLimit

Inherits:
BaseService
  • Object
show all
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

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

Returns:

  • (Boolean)


11
12
13
# File 'app/services/item/materials/checks/cerazorb_limit.rb', line 11

def qualify?(container)
  cz_2x2_lines(container).exists?
end