add submitter metadata

This commit is contained in:
Pete Matsyburka
2024-02-01 23:29:27 +02:00
parent 3781b0aa72
commit 07f0fbb50f
11 changed files with 30 additions and 9 deletions
@@ -132,7 +132,7 @@ module Api
include: {
submitters: { only: %i[id slug uuid name email phone
completed_at opened_at sent_at
created_at updated_at external_id],
created_at updated_at external_id metadata],
methods: %i[status application_key] },
template: { only: %i[id name created_at updated_at] },
created_by_user: { only: %i[id email first_name last_name] }
@@ -147,7 +147,7 @@ module Api
message: %i[subject body],
submitters: [[:send_email, :send_sms, :completed_redirect_url, :uuid, :name, :email, :role,
:completed, :phone, :application_key, :external_id,
{ values: {}, readonly_fields: [], message: %i[subject body],
{ metadata: {}, values: {}, readonly_fields: [], message: %i[subject body],
fields: [%i[name default_value title description
readonly validation_pattern invalid_message]] }]]
}
+2 -1
View File
@@ -72,7 +72,7 @@ module Api
submitter_params.permit(
:send_email, :send_sms, :uuid, :name, :email, :role,
:completed, :phone, :application_key, :external_id,
{ values: {}, readonly_fields: [], message: %i[subject body],
{ metadata: {}, values: {}, readonly_fields: [], message: %i[subject body],
fields: [%i[name default_value readonly validation_pattern invalid_message]] }
)
end
@@ -86,6 +86,7 @@ module Api
submitter.completed_at = attrs[:completed] ? Time.current : submitter.completed_at
submitter.external_id = attrs[:application_key] if attrs.key?(:application_key)
submitter.external_id = attrs[:external_id] if attrs.key?(:external_id)
submitter.metadata = attrs[:metadata] if attrs.key?(:metadata)
assign_submission_fields(submitter.submission)
assign_preferences(submitter, attrs)
+2 -1
View File
@@ -57,7 +57,8 @@ class StartFormController < ApplicationController
ip: request.remote_ip,
ua: request.user_agent,
values: resubmit_submitter&.preferences&.fetch('default_values', nil) || {},
preferences: resubmit_submitter&.preferences.presence || { 'send_email' => true }
preferences: resubmit_submitter&.preferences.presence || { 'send_email' => true },
metadata: resubmit_submitter&.metadata.presence || {}
)
if submitter.values.present?
+3
View File
@@ -8,6 +8,7 @@
# completed_at :datetime
# email :string
# ip :string
# metadata :text not null
# name :string
# opened_at :datetime
# phone :string
@@ -39,10 +40,12 @@ class Submitter < ApplicationRecord
attribute :values, :string, default: -> { {} }
attribute :preferences, :string, default: -> { {} }
attribute :metadata, :string, default: -> { {} }
attribute :slug, :string, default: -> { SecureRandom.base58(14) }
serialize :values, coder: JSON
serialize :preferences, coder: JSON
serialize :metadata, coder: JSON
has_many_attached :documents
has_many_attached :attachments