Pluck line_item ids instead of all line_items

This commit is contained in:
Matt-Yorkley
2019-09-25 20:09:20 +01:00
parent 112adb11db
commit a5d2579c69

View File

@@ -12,11 +12,11 @@ module OpenFoodNetwork
line_items = permissions.visible_line_items.merge(Spree::LineItem.where(order_id: orders))
line_items = line_items.supplied_by_any(params[:supplier_id_in]) if params[:supplier_id_in].present?
# If empty array is passed in, the where clause will return all line_items, which is bad
line_items_with_hidden_details =
permissions.editable_line_items.empty? ? line_items : line_items.where('"spree_line_items"."id" NOT IN (?)', permissions.editable_line_items)
hidden_line_items = line_items_with_hidden_details(permissions, line_items)
line_items.select{ |li| line_items_with_hidden_details.include? li }.each do |line_item|
line_items.select{ |li|
hidden_line_items.include? li
}.each do |line_item|
# TODO We should really be hiding customer code here too, but until we
# have an actual association between order and customer, it's a bit tricky
line_item.order.bill_address.andand.assign_attributes(firstname: I18n.t('admin.reports.hidden'), lastname: "", phone: "", address1: "", address2: "", city: "", zipcode: "", state: nil)
@@ -25,6 +25,16 @@ module OpenFoodNetwork
end
line_items
end
def self.line_items_with_hidden_details(permissions, line_items)
editable_line_items = permissions.editable_line_items.pluck(:id)
if editable_line_items.empty?
line_items
else
line_items.where('"spree_line_items"."id" NOT IN (?)', editable_line_items)
end
end
end
end
end