Files
openfoodnetwork/app/serializers/api/order_serializer.rb
2019-11-10 18:42:43 +00:00

59 lines
1.3 KiB
Ruby

module Api
class OrderSerializer < ActiveModel::Serializer
attributes :number, :completed_at, :total, :state, :shipment_state, :payment_state,
:outstanding_balance, :payments, :path, :cancel_path,
:changes_allowed, :changes_allowed_until, :item_count,
:shop_id
has_many :payments, serializer: Api::PaymentSerializer
def payments
object.payments.joins(:payment_method).completed
end
def shop_id
object.distributor_id
end
def item_count
object.line_items.sum(&:quantity)
end
def completed_at
object.completed_at.blank? ? "" : I18n.l(object.completed_at, format: "%b %d, %Y %H:%M")
end
def changes_allowed_until
return I18n.t(:not_allowed) unless object.changes_allowed?
I18n.l(object.order_cycle.andand.orders_close_at, format: "%b %d, %Y %H:%M")
end
def shipment_state
object.shipment_state || nil
end
def payment_state
object.payment_state || nil
end
def state
object.state || nil
end
def path
Spree::Core::Engine.routes_url_helpers.order_path(object)
end
def cancel_path
return nil unless object.changes_allowed?
Spree::Core::Engine.routes_url_helpers.cancel_order_path(object)
end
def changes_allowed
object.changes_allowed?
end
end
end