mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Refactor to simplify outgoing_exchange_variant_ids
This commit is contained in:
@@ -157,7 +157,7 @@ module OpenFoodNetwork
|
||||
variants[variant_id.to_i] = value if permitted.include?(variant_id.to_i)
|
||||
end
|
||||
|
||||
variants.select { |k, v| v }.keys.map { |k| k.to_i }.sort
|
||||
variants_to_a variants
|
||||
end
|
||||
|
||||
def outgoing_exchange_variant_ids(attrs)
|
||||
@@ -167,27 +167,36 @@ module OpenFoodNetwork
|
||||
sender = @order_cycle.coordinator
|
||||
receiver = exchange.andand.receiver || Enterprise.find(attrs[:enterprise_id])
|
||||
permitted = editable_variant_ids_for_outgoing_exchange_between(sender, receiver)
|
||||
incoming = incoming_variant_ids
|
||||
|
||||
# Only change visibility for variants I have permission to edit
|
||||
attrs[:variants].each do |variant_id, value|
|
||||
variant_id = variant_id.to_i
|
||||
|
||||
if !incoming.include? variant_id
|
||||
# When a variant has been removed from incoming but remains
|
||||
# in outgoing, remove it from outgoing too
|
||||
variants[variant_id] = false
|
||||
|
||||
elsif permitted.include? variant_id
|
||||
variants[variant_id] = value
|
||||
end
|
||||
variants = update_outgoing_variants(variants, permitted, variant_id, value)
|
||||
end
|
||||
|
||||
variants.select { |k, v| v }.keys.map(&:to_i).sort
|
||||
variants_to_a variants
|
||||
end
|
||||
|
||||
def update_outgoing_variants(variants, permitted, variant_id, value)
|
||||
if !incoming_variant_ids.include? variant_id
|
||||
# When a variant has been removed from incoming but remains
|
||||
# in outgoing, remove it from outgoing too
|
||||
variants[variant_id] = false
|
||||
|
||||
elsif permitted.include? variant_id
|
||||
variants[variant_id] = value
|
||||
end
|
||||
|
||||
variants
|
||||
end
|
||||
|
||||
def incoming_variant_ids
|
||||
@order_cycle.supplied_variants.map &:id
|
||||
end
|
||||
|
||||
def variants_to_a(variants)
|
||||
variants.select { |k, v| v }.keys.map(&:to_i).sort
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user