Module: PackageLabelGenerator
- Extended by:
- ActiveSupport::Concern
- Includes:
- ElasticAPM::SpanHelpers
- Defined in:
- app/services/concerns/package_label_generator.rb
Overview
Shared module for generating package custom labels This module can be included in any service that needs to generate package labels
Constant Summary collapse
- DEFAULT_LABEL_TYPE =
Default label type when no specific type is defined
:features
Instance Method Summary collapse
-
#generate_label_names_for_package(restaurant_package) ⇒ Array<String>
Generates custom label names for a restaurant package.
-
#generate_labels_for_package(restaurant_package) ⇒ Array<Hash>
Generates custom labels hash for a restaurant package.
Instance Method Details
#generate_label_names_for_package(restaurant_package) ⇒ Array<String>
Generates custom label names for a restaurant package
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'app/services/concerns/package_label_generator.rb', line 67 def generate_label_names_for_package(restaurant_package) @restaurant_package = restaurant_package @package = restaurant_package.package custom_label_names = [] # Add custom label names based on defined label types defined_custom_labels.find_each do |custom_label_obj| custom_label_names.push(formatted_label(custom_label_obj)) if send(:"#{custom_label_obj.defined_label}?") end # Add package-specific custom label names if @package&.package_attr&.custom_labels.present? custom_label_names += @package.fetch_package_attr.custom_labels.map do |custom_label| formatted_label(custom_label) end end custom_label_names end |
#generate_labels_for_package(restaurant_package) ⇒ Array<Hash>
Generates custom labels hash for a restaurant package
Hash structure:
[
{
name: 'Label Name',
icon_url: 'https://example.com/icon.png',
description: 'Label Description',
type: 'features', # or other defined label types
expiry_date: Date or nil
},
...
]
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 |
# File 'app/services/concerns/package_label_generator.rb', line 31 def generate_labels_for_package(restaurant_package) @restaurant_package = restaurant_package @package = restaurant_package.package custom_labels = [] # Add custom labels based on defined label types defined_custom_labels.find_each do |custom_label_obj| custom_labels.push(custom_label(custom_label_obj)) if send(:"#{custom_label_obj.defined_label}?") end # Add package-specific custom labels if @package&.package_attr&.custom_labels.present? custom_labels += @package.fetch_package_attr.custom_labels.map do |custom_label| { name: formatted_label(custom_label), icon_url: custom_label.icon_url, description: custom_label.description, type: custom_label.defined_label || DEFAULT_LABEL_TYPE.to_s, expiry_date: restaurant_package.comemore_payless_expiry, } end end custom_labels end |