scinote-web/app/serializers/step_form_response_serializer.rb

62 lines
1.6 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, :in_repository, :icon, :name
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 in_repository
!object.step.protocol.my_module
end
def name
object&.form&.name
end
def icon
'sn-icon-forms'
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 = {}
if Form.forms_enabled?
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)
end
end
list[:delete_url] = step_form_response_path(object.step, object) if can_manage_step?(user, object.step)
list
end
end