Refactor to simplify outgoing_exchange_variant_ids

This commit is contained in:
Rohan Mitchell
2015-11-24 14:38:07 +11:00
parent 243ef4ee16
commit 1e397a41ae

View File

@@ -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