Class: DupPackageService

Inherits:
Object
  • Object
show all
Includes:
ImageHelper
Defined in:
app/services/dup_package_service.rb

Overview

typed: ignore

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ImageHelper

#fix_image_url

Constructor Details

#initialize(package_class, package_id) ⇒ DupPackageService

Returns a new instance of DupPackageService.



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

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.



5
6
7
# File 'app/services/dup_package_service.rb', line 5

def new_package
  @new_package
end

#old_packageObject

Returns the value of attribute old_package.



5
6
7
# File 'app/services/dup_package_service.rb', line 5

def old_package
  @old_package
end

Instance Method Details

#dup_agendasObject



50
51
52
53
54
55
56
# File 'app/services/dup_package_service.rb', line 50

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

#dup_kids_pricesObject



130
131
132
133
134
135
136
# File 'app/services/dup_package_service.rb', line 130

def dup_kids_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
39
40
41
42
43
44
45
46
47
48
# File 'app/services/dup_package_service.rb', line 32

def dup_package
  self.new_package = old_package.dup
  if old_package.cover_image.present? && old_package.cover_image.file.exists?
    new_package.remote_cover_image_url = fix_image_url(old_package.cover_image_url)
  else
    new_package.cover_image = ''
  end
  if old_package.tnc_image.present? && old_package.tnc_image.file.exists?
    new_package.remote_tnc_image_url = fix_image_url(old_package.tnc_image_url)
  else
    new_package.tnc_image = ''
  end
  new_package.save!
  new_package
  url = "#{AdminSetting.hh_menu_host}duplicates/execute?old_package=#{old_package.id}&new_package=#{new_package.id}&package_type=#{old_package.class.name}"
  Faraday.get(url) if HhPackage::COMBINE_MENU_V2.include?(old_package.menu_type)
end

#dup_package_attrObject



82
83
84
85
86
# File 'app/services/dup_package_service.rb', line 82

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

#dup_package_benefitsObject



138
139
140
141
142
143
144
145
146
# File 'app/services/dup_package_service.rb', line 138

def dup_package_benefits
  return unless old_package.benefit_type == HhPackage::PackageBenefit::EXTRA_BENEFIT

  old_package.package_benefits.find_each do |old_package_benefit|
    package_benefit = old_package_benefit.dup
    package_benefit.package = new_package
    package_benefit.save!
  end
end

#dup_package_menusObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'app/services/dup_package_service.rb', line 101

def dup_package_menus
  old_package.package_menus.each do |old_package_menu|
    package_menu = old_package_menu.dup
    if old_package_menu.image.present? && old_package_menu.image.file.exists?
      request = Faraday.get fix_image_url(old_package_menu.image_url)
      File.binwrite("tmp/#{old_package_menu.id}.jpg", request.body)
      package_menu.image = File.open("tmp/#{old_package_menu.id}.jpg")
    else
      package_menu.image = ''
    end
    package_menu.package = new_package
    package_menu.save!
  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_pricing_groupsObject



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

def dup_pricing_groups
  old_package.pricing_groups.each do |old_pricing_groups|
    pricing_groups = old_pricing_groups.dup
    pricing_groups.package = new_package
    pricing_groups.save!
  end
end

#dup_pricing_menusObject



74
75
76
77
78
79
80
# File 'app/services/dup_package_service.rb', line 74

def dup_pricing_menus
  old_package.pricing_menus.each do |old_pricing_menu|
    pricing_menu = old_pricing_menu.dup
    pricing_menu.package = new_package
    pricing_menu.save!
  end
end

#dup_pricingsObject



58
59
60
61
62
63
64
# File 'app/services/dup_package_service.rb', line 58

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



88
89
90
91
92
93
94
95
96
97
98
99
# File 'app/services/dup_package_service.rb', line 88

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
    # to avoid validation errors
    rest_pack.end_date = rest_pack.start_date if rest_pack.end_date < rest_pack.start_date
    rest_pack.active = false if rest_pack.end_date < Date.today
    rest_pack.save!
  end
end

#executeObject



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

def execute
  valid = false
  ActiveRecord::Base.transaction do
    dup_package
    dup_package_attr
    dup_kids_prices
    dup_agendas
    dup_pricings
    dup_pricing_groups
    dup_pricing_menus
    dup_restaurant_packages
    dup_package_menus
    dup_package_benefits

    HhPackage::PackageAttrGenerator.perform_async(package_id: new_package.id, package_type: new_package.class.name)
    valid = true
  end

  valid
end