Handle JSON string item attributes in foodcourt menu
This commit is contained in:
@@ -1,3 +1,19 @@
|
||||
normalize_ids = lambda do |value|
|
||||
case value
|
||||
when Array
|
||||
value
|
||||
when String
|
||||
begin
|
||||
parsed = JSON.parse(value)
|
||||
parsed.is_a?(Array) ? parsed : []
|
||||
rescue JSON::ParserError
|
||||
[]
|
||||
end
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
json.id menu.id
|
||||
json.name menu.name
|
||||
json.is_ordering menu.is_ordering
|
||||
@@ -40,16 +56,18 @@ if (menu.menu_categories)
|
||||
# Format for attributes json
|
||||
attr_format = []
|
||||
# Format for attributes json
|
||||
if item.item_attributes.count > 0
|
||||
item_attributes = item.item_attributes.map(&:to_s)
|
||||
item_attributes = normalize_ids.call(item.item_attributes)
|
||||
if item_attributes.count > 0
|
||||
item_attributes = item_attributes.map(&:to_s)
|
||||
attr_format = @item_attributes.select { |x| item_attributes.include?(x.id.to_s) }.group_by {|att| att.attribute_type.strip }.map { |type, values| {type: type, values: values.map { |x| x.name.strip } } }
|
||||
end
|
||||
|
||||
# Format for option json
|
||||
opt_format = []
|
||||
# Format for attributes json
|
||||
if item.item_options.count > 0
|
||||
item_options = item.item_options.map(&:to_s)
|
||||
item_options = normalize_ids.call(item.item_options)
|
||||
if item_options.count > 0
|
||||
item_options = item_options.map(&:to_s)
|
||||
opt_format = @item_options.select { |x| item_options.include?(x.id.to_s) }.group_by {|opt| opt.option_type.strip }.map { |type, values| {type: type, values: values.map { |x| x.name.strip } } }
|
||||
end
|
||||
|
||||
@@ -84,7 +102,7 @@ if (menu.menu_categories)
|
||||
json.instances item.menu_item_instances do |is|
|
||||
if is.is_available
|
||||
# Convert id to name for attributes
|
||||
item_attributes = is.item_attributes.map(&:to_s)
|
||||
item_attributes = normalize_ids.call(is.item_attributes).map(&:to_s)
|
||||
instance_attr = @item_attributes.select{ |x| item_attributes.include?(x.id.to_s) }.pluck(:name)
|
||||
|
||||
json.id is.id
|
||||
|
||||
Reference in New Issue
Block a user