Class: SpreeCmCommissioner::Trips::PreloadInventory

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base, SpreeCmCommissioner::Transit::TripHelper
Defined in:
app/services/spree_cm_commissioner/trips/preload_inventory.rb

Instance Method Summary collapse

Methods included from SpreeCmCommissioner::Transit::TripHelper

#minutes_since_midnight, #normalize_date, #parse_date, #parse_time

Instance Method Details

#call(date:, leg_trips: nil, inventory_keys: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/spree_cm_commissioner/trips/preload_inventory.rb', line 7

def call(date:, leg_trips: nil, inventory_keys: nil)
  failure('Date is required') if date.blank?
  failure('Either inventory_keys or leg_trips must be provided') if inventory_keys.blank? && leg_trips.blank?
  failure('leg_trips must not be empty') if leg_trips.present? && leg_trips.empty?

  @date = normalize_date(date)
  @cache = {}

  preload_keys = inventory_keys || leg_trips.map.with_index do |leg, idx|
    day_offset = calculate_day_offset_for_leg(leg_trips, idx)
    [leg.product_id, @date.to_date + day_offset]
  end

  preload!(preload_keys)

  success(@cache)
rescue StandardError => e
  failure(nil, e.message)
end