Replacing old representative template for OCs with active model serializers

This commit is contained in:
Rob Harrington
2015-03-19 12:17:09 +11:00
parent 1c09b8b76f
commit e9f2e743ce
5 changed files with 36 additions and 29 deletions

View File

@@ -13,7 +13,9 @@ module Admin
def show
respond_to do |format|
format.html
format.json
format.json do
render json: Api::Admin::OrderCycleSerializer.new(@order_cycle, current_user: spree_current_user).to_json
end
end
end

View File

@@ -0,0 +1,3 @@
class Api::Admin::EnterpriseFeeSerializer < ActiveModel::Serializer
attributes :id, :enterprise_id
end

View File

@@ -0,0 +1,12 @@
class Api::Admin::ExchangeSerializer < ActiveModel::Serializer
attributes :id, :sender_id, :receiver_id, :incoming, :variants, :pickup_time, :pickup_instructions
has_many :enterprise_fees, serializer: Api::Admin::EnterpriseFeeSerializer
def variants
Hash[
OpenFoodNetwork::Permissions.new(options[:current_user]).
visible_variants_within(object).map { |v| [v.id, true] }
]
end
end

View File

@@ -0,0 +1,18 @@
class Api::Admin::OrderCycleSerializer < ActiveModel::Serializer
attributes :id, :name, :orders_open_at, :orders_close_at, :coordinator_id, :exchanges
has_many :coordinator_fees, serializer: Api::IdSerializer
def orders_open_at
object.orders_open_at.to_s
end
def orders_close_at
object.orders_close_at.to_s
end
def exchanges
scoped_exchanges = OpenFoodNetwork::Permissions.new(options[:current_user]).order_cycle_exchanges(object).order('id ASC')
ActiveModel::ArraySerializer.new(scoped_exchanges, {each_serializer: Api::Admin::ExchangeSerializer, current_user: options[:current_user] })
end
end

View File

@@ -1,28 +0,0 @@
r.element :order_cycle, @order_cycle do
r.element :id
r.element :name
r.element :orders_open_at, @order_cycle.orders_open_at.to_s
r.element :orders_close_at, @order_cycle.orders_close_at.to_s
r.element :coordinator_id
r.list_of :coordinator_fees do |fee|
r.element :id
end
r.list_of :exchanges, OpenFoodNetwork::Permissions.new(spree_current_user).order_cycle_exchanges(@order_cycle).order('id ASC') do |exchange|
r.element :id
r.element :sender_id
r.element :receiver_id
r.element :incoming
r.element :variants, Hash[ OpenFoodNetwork::Permissions.new(spree_current_user).visible_variants_within(exchange).map { |v| [v.id, true] } ], {}
r.list_of :enterprise_fees do |fee|
r.element :id
r.element :enterprise_id
end
r.element :pickup_time
r.element :pickup_instructions
end
end