Files
openfoodnetwork/app/serializers/api/admin/enterprise_serializer.rb
2025-09-24 10:40:43 +10:00

75 lines
2.7 KiB
Ruby

# frozen_string_literal: true
module Api
module Admin
class EnterpriseSerializer < ActiveModel::Serializer
attributes :name, :id, :is_primary_producer, :is_distributor, :sells, :category, :permalink,
:payment_method_ids, :shipping_method_ids, :producer_profile_only,
:long_description, :preferred_product_selection_from_inventory_only,
:preferred_shopfront_message, :preferred_shopfront_closed_message,
:preferred_shopfront_taxon_order, :preferred_shopfront_producer_order,
:preferred_shopfront_order_cycle_order, :show_customer_names_to_suppliers,
:show_customer_contacts_to_suppliers,
:preferred_shopfront_product_sorting_method, :owner, :contact, :users,
:require_login, :allow_guest_orders, :allow_order_changes,
:logo, :promo_image, :terms_and_conditions,
:terms_and_conditions_file_name, :terms_and_conditions_updated_at,
:preferred_invoice_order_by_supplier, :preferred_product_low_stock_display,
:visible, :hide_ofn_navigation, :white_label_logo,
:white_label_logo_link, :external_billing_id
has_one :owner, serializer: Api::Admin::UserSerializer
has_many :users, serializer: Api::Admin::UserSerializer
has_one :address, serializer: Api::AddressSerializer
has_one :business_address, serializer: Api::AddressSerializer
def logo
attachment_urls(object.logo, Enterprise::LOGO_SIZES)
end
def promo_image
attachment_urls(object.promo_image, Enterprise::PROMO_IMAGE_SIZES)
end
def white_label_logo
attachment_urls(object.white_label_logo, Enterprise::WHITE_LABEL_LOGO_SIZES)
end
def terms_and_conditions
return unless object.terms_and_conditions.attached?
Rails.application.routes.url_helpers.
url_for(object.terms_and_conditions)
end
def terms_and_conditions_file_name
object.terms_and_conditions_blob&.filename
end
def terms_and_conditions_updated_at
object.terms_and_conditions_blob&.created_at&.to_s
end
private
# Returns a hash of URLs for specified versions of an attachment.
#
# Example result:
#
# {
# thumb: LOGO_THUMB_URL,
# small: LOGO_SMALL_URL,
# medium: LOGO_MEDIUM_URL
# }
def attachment_urls(attachment, styles)
return unless attachment.variable?
styles.index_with do |style|
Rails.application.routes.url_helpers.
url_for(attachment.variant(style))
end
end
end
end
end