scinote-web/app/serializers/form_serializer.rb
2025-01-15 11:33:32 +01:00

48 lines
1.3 KiB
Ruby

# frozen_string_literal: true
class FormSerializer < ActiveModel::Serializer
include Canaid::Helpers::PermissionsHelper
include Rails.application.routes.url_helpers
attributes :id, :name, :archived, :published_on, :published_by, :updated_at, :description, :urls, :can_manage_form_draft
has_many :form_fields,
key: :form_fields,
serializer: FormFieldSerializer
def published_by
object.published_by&.full_name
end
def archived
object.archived?
end
def published_on
I18n.l(object.published_on, format: :full) if object.published_on
end
def updated_at
I18n.l(object.updated_at, format: :full) if object.updated_at
end
def can_manage_form_draft
user = scope[:user] || @instance_options[:user]
can_manage_form_draft?(user, object)
end
def urls
user = scope[:user] || @instance_options[:user]
list = { show: form_path(object) }
if can_manage_form_draft?(user, object)
list[:create_field] = form_form_fields_path(object)
list[:reorder_fields] = reorder_form_form_fields_path(object)
end
list[:publish] = publish_form_path(object) if can_publish_form?(user, object)
list[:unpublish] = unpublish_form_path(object) if can_unpublish_form?(user, object)
list
end
end