Class: SpreeCmCommissioner::RedisStock::Restock

Inherits:
Base
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/redis_stock/restock.rb

Instance Method Summary collapse

Methods inherited from Base

#line_items, #schedule_sync_inventory, #warm_redis_keys!

Methods included from ServiceModuleThrowable

#call!

Instance Method Details

#call(line_item_ids:) ⇒ Object

override



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/spree_cm_commissioner/redis_stock/restock.rb', line 5

def call(line_item_ids:)
  @line_item_ids = line_item_ids

  keys = []
  quantities = []
  inventory_ids = []
  max_capacities = []
  inventory_items = []

  line_items.each do |li|
    li.inventory_items.each do |item|
      keys << item.redis_key
      quantities << li.quantity
      inventory_ids << item.id
      max_capacities << item.max_capacity
      inventory_items << item
    end
  end

  warm_redis_keys!(inventory_items)

  return failure(nil, :unable_to_restock) unless restock(keys, quantities, max_capacities)

  inventory_id_and_quantities = inventory_ids.map.with_index do |inventory_id, i|
    { inventory_id: inventory_id, quantity: quantities[i] }
  end

  schedule_sync_inventory(inventory_id_and_quantities)
  success(nil)
end