scinote-web/app/serializers/step_form_response_serializer.rb

48 lines
1.3 KiB
Ruby

# frozen_string_literal: true
class StepFormResponseSerializer < ActiveModel::Serializer
include Canaid::Helpers::PermissionsHelper
include Rails.application.routes.url_helpers
attributes :id, :created_at, :form_id, :urls, :submitted_by_full_name, :status, :submitted_at, :parent_type
has_one :form, serializer: FormSerializer
has_many :form_fields, serializer: FormFieldSerializer do
object.form.form_fields
end
has_many :form_field_values do
object.form_field_values.latest
end
def parent_type
:step
end
def submitted_by_full_name
object.submitted_by&.full_name
end
def submitted_at
I18n.l(object.submitted_at, format: :full) if object.submitted_at
end
def urls
user = scope[:user] || @instance_options[:user]
list = {
add_value: form_response_form_field_values_path(object)
}
list[:submit] = submit_step_form_response_path(object.step, object) if can_submit_form_response?(user, object)
list[:reset] = reset_step_form_response_path(object.step, object) if can_reset_form_response?(user, object)
if can_manage_step?(user, object.step)
list[:move_url] = move_step_form_response_path(object.step, object)
list[:move_targets_url] = move_targets_step_text_path(object.step, object)
list[:delete_url] = step_form_response_path(object.step, object)
end
list
end
end