Class: SpreeCmCommissioner::Trips::Clone

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/trips/clone.rb

Instance Method Summary collapse

Instance Method Details

#call(vendor:, original_trip:, current_store:, params:) ⇒ Object



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

def call(vendor:, original_trip:, current_store:, params:)
  ActiveRecord::Base.transaction do
    cloned_product = create_cloned_product(vendor, current_store, original_trip.product, params)
    cloned_trip    = create_cloned_trip(vendor, original_trip, cloned_product, params)
    clone_trip_stop_details(cloned_trip, params)
    clone_variants(original_trip, cloned_trip)
    clone_service_calendar(cloned_product, params)

    cloned_trip.save!

    success(cloned_trip: cloned_trip)
  end
rescue StandardError => e
  CmAppLogger.error(
    label: 'SpreeCmCommissioner::Trips::Clone#call',
    data: { error_class: e.class.name, error_message: e.message }
  )
  failure(nil, e.message)
end