recipient fields config
This commit is contained in:
@@ -7,7 +7,8 @@ module Submissions
|
||||
module_function
|
||||
|
||||
# rubocop:disable Metrics
|
||||
def call(template:, user:, submissions_attrs:, source:, submitters_order:, params: {}, with_template: true)
|
||||
def call(template:, user:, submissions_attrs:, source:, submitters_order:, params: {}, with_template: true,
|
||||
new_fields: nil)
|
||||
preferences = Submitters.normalize_preferences(user.account, user, params)
|
||||
|
||||
submissions = Array.wrap(submissions_attrs).filter_map do |attrs|
|
||||
@@ -67,7 +68,7 @@ module Submissions
|
||||
preferences: preferences.merge(submission_preferences))
|
||||
end
|
||||
|
||||
maybe_set_template_fields(submission, attrs[:submitters], with_template:)
|
||||
maybe_set_template_fields(submission, attrs[:submitters], with_template:, new_fields:)
|
||||
|
||||
if submission.submitters.size > template.submitters.size
|
||||
raise BaseError, 'Defined more signing parties than in template'
|
||||
@@ -92,7 +93,6 @@ module Submissions
|
||||
|
||||
submissions
|
||||
end
|
||||
# rubocop:enable Metrics
|
||||
|
||||
def maybe_enqueue_expire_at(submissions)
|
||||
submissions.each do |submission|
|
||||
@@ -135,7 +135,8 @@ module Submissions
|
||||
}.compact_blank
|
||||
end
|
||||
|
||||
def maybe_set_template_fields(submission, submitters_attrs, default_submitter_uuid: nil, with_template: true)
|
||||
def maybe_set_template_fields(submission, submitters_attrs, default_submitter_uuid: nil, with_template: true,
|
||||
new_fields: nil)
|
||||
template_fields = (submission.template_fields || submission.template.fields).deep_dup
|
||||
|
||||
submitters = submission.template_submitters || submission.template.submitters
|
||||
@@ -149,9 +150,9 @@ module Submissions
|
||||
process_fields_param(submitter_attrs[:fields], template_fields, submitter_uuid)
|
||||
end
|
||||
|
||||
if template_fields != (submission.template_fields || submission.template.fields) ||
|
||||
if template_fields != (submission.template_fields || submission.template.fields) || new_fields.present? ||
|
||||
submitters_attrs.any? { |e| e[:completed].present? } || !with_template || submission.variables.present?
|
||||
submission.template_fields = template_fields
|
||||
submission.template_fields = new_fields ? new_fields + template_fields : template_fields
|
||||
submission.template_schema = submission.template.schema if submission.template_schema.blank?
|
||||
submission.variables_schema = submission.template.variables_schema if submission.template &&
|
||||
submission.variables_schema.blank?
|
||||
@@ -159,6 +160,7 @@ module Submissions
|
||||
|
||||
submission
|
||||
end
|
||||
# rubocop:enable Metrics
|
||||
|
||||
def merge_submitters_and_fields(submitter_attrs, template_submitters, template_fields)
|
||||
selected_submitters = submitter_attrs[:roles].map do |role|
|
||||
|
||||
@@ -4,21 +4,23 @@ module Submissions
|
||||
module NormalizeParamUtils
|
||||
module_function
|
||||
|
||||
def normalize_submissions_params!(submissions_params, template)
|
||||
def normalize_submissions_params!(submissions_params, template, add_fields: false)
|
||||
attachments = []
|
||||
fields = []
|
||||
|
||||
Array.wrap(submissions_params).each do |submission|
|
||||
submission[:submitters].each_with_index do |submitter, index|
|
||||
_, new_attachments = normalize_submitter_params!(submitter, template, index)
|
||||
_, new_attachments, new_fields = normalize_submitter_params!(submitter, template, index, add_fields:)
|
||||
|
||||
attachments.push(*new_attachments)
|
||||
fields.push(*new_fields)
|
||||
end
|
||||
end
|
||||
|
||||
[submissions_params, attachments]
|
||||
[submissions_params, attachments, fields]
|
||||
end
|
||||
|
||||
def normalize_submitter_params!(submitter_params, template, index = nil, for_submitter: nil)
|
||||
def normalize_submitter_params!(submitter_params, template, index = nil, for_submitter: nil, add_fields: false)
|
||||
with_values = submitter_params[:values].present?
|
||||
|
||||
default_values = with_values ? submitter_params[:values] : {}
|
||||
@@ -30,18 +32,19 @@ module Submissions
|
||||
|
||||
return submitter_params if default_values.blank?
|
||||
|
||||
values, new_attachments =
|
||||
values, new_attachments, new_fields =
|
||||
Submitters::NormalizeValues.call(template,
|
||||
default_values,
|
||||
submitter_name: submitter_params[:role] ||
|
||||
template.submitters.dig(index, 'name'),
|
||||
role_names: submitter_params[:roles],
|
||||
for_submitter:,
|
||||
add_fields:,
|
||||
throw_errors: !with_values)
|
||||
|
||||
submitter_params[:values] = values
|
||||
|
||||
[submitter_params, new_attachments]
|
||||
[submitter_params, new_attachments, new_fields]
|
||||
end
|
||||
|
||||
def save_default_value_attachments!(attachments, submitters)
|
||||
|
||||
Reference in New Issue
Block a user