add submitter metadata
This commit is contained in:
+1
-1
@@ -44,7 +44,7 @@ Layout/LineLength:
|
||||
AllowedPatterns: ['\A\s*#']
|
||||
|
||||
Metrics/AbcSize:
|
||||
Max: 35
|
||||
Max: 40
|
||||
|
||||
Metrics/ModuleLength:
|
||||
Max: 500
|
||||
|
||||
@@ -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]] }]]
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddSubmitterMetadata < ActiveRecord::Migration[7.1]
|
||||
class MigrationSubmitter < ApplicationRecord
|
||||
self.table_name = 'submitters'
|
||||
end
|
||||
|
||||
def change
|
||||
add_column :submitters, :metadata, :text
|
||||
|
||||
MigrationSubmitter.where(metadata: nil).update_all(metadata: '{}')
|
||||
|
||||
change_column_null :submitters, :metadata, false
|
||||
end
|
||||
end
|
||||
+2
-1
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_01_31_212010) do
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_02_01_210319) do
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
@@ -173,6 +173,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_01_31_212010) do
|
||||
t.string "phone"
|
||||
t.string "external_id"
|
||||
t.text "preferences", null: false
|
||||
t.text "metadata", null: false
|
||||
t.index ["email"], name: "index_submitters_on_email"
|
||||
t.index ["slug"], name: "index_submitters_on_slug", unique: true
|
||||
t.index ["submission_id"], name: "index_submitters_on_submission_id"
|
||||
|
||||
@@ -69,6 +69,7 @@ module Params
|
||||
format(submitter_params, :phone, /\A\+\d+\z/,
|
||||
message: 'phone should start with +<country code> and contain only digits')
|
||||
type(submitter_params, :values, Hash)
|
||||
type(submitter_params, :metadata, Hash)
|
||||
boolean(submitter_params, :send_email)
|
||||
boolean(submitter_params, :send_sms)
|
||||
type(submitter_params, :completed_redirect_url, String)
|
||||
|
||||
@@ -139,6 +139,7 @@ module Submissions
|
||||
completed_at: attrs[:completed] ? Time.current : nil,
|
||||
sent_at: mark_as_sent && email.present? && is_order_sent ? Time.current : nil,
|
||||
values: attrs[:values] || {},
|
||||
metadata: attrs[:metadata] || {},
|
||||
preferences: preferences.merge(submitter_preferences)
|
||||
.merge({ default_values: attrs[:values] }.compact_blank)
|
||||
.except('bcc_completed'),
|
||||
|
||||
@@ -30,7 +30,6 @@ module Submitters
|
||||
)
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics
|
||||
def generate_stamp_image(submitter)
|
||||
logo = Vips::Image.new_from_buffer(load_logo(submitter).read, '')
|
||||
|
||||
@@ -82,7 +81,6 @@ module Submitters
|
||||
|
||||
Vips::Image.text(text, width: WIDTH, height: HEIGHT)
|
||||
end
|
||||
# rubocop:enable Metrics
|
||||
|
||||
def load_logo(_submitter)
|
||||
PdfIcons.logo_io
|
||||
|
||||
@@ -19,7 +19,7 @@ module Submitters
|
||||
serialize_params = {
|
||||
include: {},
|
||||
only: %i[id slug uuid name email phone completed_at external_id
|
||||
opened_at sent_at created_at updated_at],
|
||||
metadata opened_at sent_at created_at updated_at],
|
||||
methods: %i[status application_key]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user