mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-17 00:07:24 +00:00
Replacing old representative template for OCs with active model serializers
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
3
app/serializers/api/admin/enterprise_fee_serializer.rb
Normal file
3
app/serializers/api/admin/enterprise_fee_serializer.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
class Api::Admin::EnterpriseFeeSerializer < ActiveModel::Serializer
|
||||
attributes :id, :enterprise_id
|
||||
end
|
||||
12
app/serializers/api/admin/exchange_serializer.rb
Normal file
12
app/serializers/api/admin/exchange_serializer.rb
Normal 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
|
||||
18
app/serializers/api/admin/order_cycle_serializer.rb
Normal file
18
app/serializers/api/admin/order_cycle_serializer.rb
Normal 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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user