Class: SpreeCmCommissioner::Show::Clone

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

Instance Method Summary collapse

Instance Method Details

#call(source_season:, vendor:, attributes: {}) ⇒ Object



6
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/show/clone.rb', line 6

def call(source_season:, vendor:, attributes: {})
  raise ArgumentError, 'source_season must be a season' unless source_season.season?

  ActiveRecord::Base.transaction do
    new_show = clone_show(source_season.show, vendor, attributes)
    new_season = clone_season(new_show, vendor, source_season, attributes)
    clone_contestants(source_season, new_season)
    clone_show_people_assignments(source_season, new_season)
    clone_episodes(source_season, new_season, vendor)
    clone_vote_packages(source_season, new_season)

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