5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'app/workers/menu_section_generator_worker.rb', line 5
def perform(restaurant_package_id, locale)
restaurant_package = HhPackage::RestaurantPackage.fetch restaurant_package_id
restaurant = restaurant_package.restaurant
return if restaurant.blank?
package = restaurant_package.fetch_package
= restaurant..select('UNIQUE(package_menu_id), active').pluck(:package_menu_id,
:active)
= .map(&:first)
= package.fetch_package_attr&. == true
data = I18n.with_locale locale do
package..includes(:translations, menus: :translations).order_by_rank.map do |ms|
{
id: ms.id,
quantity_limit: ms.quantity_limit,
name: ms.name,
menus: ms..includes(:custom_label,
subsections: :translations).order_by_rank.where(id: ).map do ||
{
id: .id,
name: .name,
price: ( ? '0.0' : .price.amount),
currency: .price_currency,
priority: .index_number,
description: .description,
active: .active,
image: {
thumb: .image.present? ? .image.url : AdminSetting.,
original: .image.present? ? .image.url : AdminSetting.,
original_size: .image.present? ? .image.url : AdminSetting.,
},
custom_label: custom_label(),
sub_sections: .subsections.includes(menus: :translations).map do |subsection|
{
name: subsection.name,
id: subsection.id,
quantity_limit: subsection.quantity_limit,
sub_menus: subsection..map do |m|
{
name: m.name,
id: m.id,
}
end,
}
end,
}
end,
}
end.delete_if { |section| section[:menus].blank? }
end
Rails.cache.write(self.class.cache_key_for(restaurant, restaurant_package, locale),
data,
expires_in: CACHEFLOW.generate_expiry)
data
end
|