Refactor order_cycle_serializer

This commit is contained in:
Matt-Yorkley
2019-08-07 21:49:24 +01:00
committed by luisramos0
parent 2a5403e23f
commit 170bc94d92

View File

@@ -25,10 +25,7 @@ class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
end
def exchanges
scoped_exchanges =
OpenFoodNetwork::OrderCyclePermissions.
new(options[:current_user], object).
visible_exchanges.by_enterprise_name
scoped_exchanges = permissions.visible_exchanges.by_enterprise_name
ActiveModel::ArraySerializer.
new(scoped_exchanges, each_serializer: Api::Admin::ExchangeSerializer,
@@ -39,9 +36,7 @@ class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
# For each enterprise that the current user is able to see in this order cycle,
# work out which variants should be editable within incoming exchanges from that enterprise
editable = {}
permissions = OpenFoodNetwork::OrderCyclePermissions.new(options[:current_user], object)
enterprises = permissions.visible_enterprises
enterprises.each do |enterprise|
visible_enterprises.each do |enterprise|
variants = permissions.editable_variants_for_incoming_exchanges_from(enterprise).pluck(:id)
editable[enterprise.id] = variants if variants.any?
end
@@ -52,9 +47,7 @@ class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
# For each enterprise that the current user is able to see in this order cycle,
# work out which variants should be editable within incoming exchanges from that enterprise
editable = {}
permissions = OpenFoodNetwork::OrderCyclePermissions.new(options[:current_user], object)
enterprises = permissions.visible_enterprises
enterprises.each do |enterprise|
visible_enterprises.each do |enterprise|
variants = permissions.editable_variants_for_outgoing_exchanges_to(enterprise).pluck(:id)
editable[enterprise.id] = variants if variants.any?
end
@@ -65,9 +58,7 @@ class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
# For each enterprise that the current user is able to see in this order cycle,
# work out which variants should be visible within outgoing exchanges from that enterprise
visible = {}
permissions = OpenFoodNetwork::OrderCyclePermissions.new(options[:current_user], object)
enterprises = permissions.visible_enterprises
enterprises.each do |enterprise|
visible_enterprises.each do |enterprise|
# This is hopefully a temporary measure, pending the arrival of multiple named inventories
# for shops. We need this here to allow hubs to restrict visible variants to only those in
# their inventory if they so choose
@@ -84,4 +75,14 @@ class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
end
visible
end
private
def permissions
@permissions ||= OpenFoodNetwork::OrderCyclePermissions.new(options[:current_user], object)
end
def visible_enterprises
@visible_enterprises ||= permissions.visible_enterprises
end
end