Class: PartnerService::Packages::DupPackageService

Inherits:
Object
  • Object
show all
Defined in:
app/services/partner_service/packages/dup_package_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(package_class, package_id) ⇒ DupPackageService

Returns a new instance of DupPackageService.



9
10
11
# File 'app/services/partner_service/packages/dup_package_service.rb', line 9

def initialize(package_class, package_id)
  self.old_package = package_class.find package_id
end

Instance Attribute Details

#new_packageObject

Returns the value of attribute new_package.



7
8
9
# File 'app/services/partner_service/packages/dup_package_service.rb', line 7

def new_package
  @new_package
end

#old_packageObject

Returns the value of attribute old_package.



7
8
9
# File 'app/services/partner_service/packages/dup_package_service.rb', line 7

def old_package
  @old_package
end

Instance Method Details

#dup_agendasObject



40
41
42
43
44
45
46
# File 'app/services/partner_service/packages/dup_package_service.rb', line 40

def dup_agendas
  old_package.agendas.each do |old_agenda|
    agenda = old_agenda.dup
    agenda.package = new_package
    agenda.save!
  end
end

#dup_kid_pricesObject



56
57
58
59
60
61
62
# File 'app/services/partner_service/packages/dup_package_service.rb', line 56

def dup_kid_prices
  old_package.kids_prices.each do |old_kids_price|
    kids_price = old_kids_price.dup
    kids_price.package = new_package
    kids_price.save!
  end
end

#dup_packageObject



32
33
34
35
36
37
38
# File 'app/services/partner_service/packages/dup_package_service.rb', line 32

def dup_package
  self.new_package = old_package.dup
  new_package.save!
  new_package
  url = "#{AdminSetting.hh_menu_host}duplicates/execute?old_package=#{old_package.id}&new_package=#{new_package.id}"
  Faraday.get(url) if HhPackage::COMBINE_MENU_V2.include?(old_package.menu_type)
end

#dup_package_attrObject



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'app/services/partner_service/packages/dup_package_service.rb', line 98

def dup_package_attr
  package_attr = old_package.fetch_package_attr.dup
  package_attr.package = new_package
  package_attr.save!

  # dup payment_type
  old_package.fetch_package_attr.package_payment_types.each do |old_package_payment_type|
    package_payment_type = old_package_payment_type.dup
    package_payment_type.package_attr = package_attr
    package_payment_type.save!
  end

  # dup charge_policy_images
  old_package.fetch_package_attr.charge_policy_images.each do |old_charge_policy_image|
    charge_policy_image = old_charge_policy_image.dup
    charge_policy_image.package_attr = package_attr
    charge_policy_image.image = old_charge_policy_image.image
    charge_policy_image.save!
    charge_policy_image.image.recreate_versions!
  end
end

#dup_package_menusObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/services/partner_service/packages/dup_package_service.rb', line 74

def dup_package_menus
  old_package.package_menus.each do |old_package_menu|
    package_menu = old_package_menu.dup
    package_menu.package = new_package
    package_menu.image = old_package_menu.image
    package_menu.save!
    package_menu.image.recreate_versions!
  end

  old_package.menu_sections.each do |old_menu_section|
    menu_section = old_menu_section.dup
    menu_section.package = new_package
    menu_section.save!

    old_menu_section.menus.each do |old_menu|
      menu = old_menu.dup
      menu.section = menu_section
      menu.image = old_menu.image
      menu.save!
      menu.image.recreate_versions!
    end
  end
end

#dup_pricingsObject



48
49
50
51
52
53
54
# File 'app/services/partner_service/packages/dup_package_service.rb', line 48

def dup_pricings
  old_package.pricings.each do |old_pricing|
    pricing = old_pricing.dup
    pricing.package = new_package
    pricing.save!
  end
end

#dup_restaurant_packagesObject



64
65
66
67
68
69
70
71
72
# File 'app/services/partner_service/packages/dup_package_service.rb', line 64

def dup_restaurant_packages
  old_package.restaurant_packages.find_each do |restaurant_package|
    rest_pack = restaurant_package.dup
    rest_pack.package = new_package
    rest_pack.rank = generate_rank
    rest_pack.setup_slug
    rest_pack.save!
  end
end

#executeObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/services/partner_service/packages/dup_package_service.rb', line 13

def execute
  valid = false
  ActiveRecord::Base.transaction do
    dup_package
    dup_agendas
    dup_pricings
    dup_kid_prices
    dup_restaurant_packages
    dup_package_menus
    dup_package_attr
    HhPackage::PackageAttrGenerator.new.perform(
      package_id: new_package.id, package_type: new_package.class.name, old_package_id: old_package.id,
    )
    valid = true
  end

  valid
end