From e9f2e743ce63e906c27f96b2fe57ecc22f49e3ce Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 19 Mar 2015 12:17:09 +1100 Subject: [PATCH] Replacing old representative template for OCs with active model serializers --- .../admin/order_cycles_controller.rb | 4 ++- .../api/admin/enterprise_fee_serializer.rb | 3 ++ .../api/admin/exchange_serializer.rb | 12 ++++++++ .../api/admin/order_cycle_serializer.rb | 18 ++++++++++++ app/views/admin/order_cycles/show.rep | 28 ------------------- 5 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 app/serializers/api/admin/enterprise_fee_serializer.rb create mode 100644 app/serializers/api/admin/exchange_serializer.rb create mode 100644 app/serializers/api/admin/order_cycle_serializer.rb delete mode 100644 app/views/admin/order_cycles/show.rep diff --git a/app/controllers/admin/order_cycles_controller.rb b/app/controllers/admin/order_cycles_controller.rb index f7c623c6eb..d42665cbd2 100644 --- a/app/controllers/admin/order_cycles_controller.rb +++ b/app/controllers/admin/order_cycles_controller.rb @@ -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 diff --git a/app/serializers/api/admin/enterprise_fee_serializer.rb b/app/serializers/api/admin/enterprise_fee_serializer.rb new file mode 100644 index 0000000000..5f5755507e --- /dev/null +++ b/app/serializers/api/admin/enterprise_fee_serializer.rb @@ -0,0 +1,3 @@ +class Api::Admin::EnterpriseFeeSerializer < ActiveModel::Serializer + attributes :id, :enterprise_id +end diff --git a/app/serializers/api/admin/exchange_serializer.rb b/app/serializers/api/admin/exchange_serializer.rb new file mode 100644 index 0000000000..34d5c3cf9b --- /dev/null +++ b/app/serializers/api/admin/exchange_serializer.rb @@ -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 diff --git a/app/serializers/api/admin/order_cycle_serializer.rb b/app/serializers/api/admin/order_cycle_serializer.rb new file mode 100644 index 0000000000..a4c129774e --- /dev/null +++ b/app/serializers/api/admin/order_cycle_serializer.rb @@ -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 diff --git a/app/views/admin/order_cycles/show.rep b/app/views/admin/order_cycles/show.rep deleted file mode 100644 index c38bb99e85..0000000000 --- a/app/views/admin/order_cycles/show.rep +++ /dev/null @@ -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