Files
docuseal/lib/submissions/normalize_param_utils.rb
T

75 lines
2.3 KiB
Ruby
Raw Normal View History

2023-12-17 18:39:10 +02:00
# frozen_string_literal: true
module Submissions
module NormalizeParamUtils
module_function
2025-12-19 11:55:25 +02:00
def normalize_submissions_params!(submissions_params, template, add_fields: false)
2023-12-17 18:39:10 +02:00
attachments = []
2025-12-19 11:55:25 +02:00
fields = []
2023-12-17 18:39:10 +02:00
Array.wrap(submissions_params).each do |submission|
submission[:submitters].each_with_index do |submitter, index|
2025-12-19 11:55:25 +02:00
_, new_attachments, new_fields = normalize_submitter_params!(submitter, template, index, add_fields:)
2023-12-17 18:39:10 +02:00
attachments.push(*new_attachments)
2025-12-19 11:55:25 +02:00
fields.push(*new_fields)
2023-12-17 18:39:10 +02:00
end
end
2025-12-19 11:55:25 +02:00
[submissions_params, attachments, fields]
2023-12-17 18:39:10 +02:00
end
2025-12-19 11:55:25 +02:00
def normalize_submitter_params!(submitter_params, template, index = nil, for_submitter: nil, add_fields: false)
2025-03-21 13:42:20 +02:00
with_values = submitter_params[:values].present?
default_values = with_values ? submitter_params[:values] : {}
2023-12-17 18:39:10 +02:00
submitter_params[:fields]&.each do |f|
2024-04-28 16:33:11 +03:00
default_values[f[:name].presence || f[:uuid]] = f[:default_value] if f.key?(:default_value)
default_values[f[:name].presence || f[:uuid]] = f[:value] if f.key?(:value)
2023-12-17 18:39:10 +02:00
end
return submitter_params if default_values.blank?
2025-12-19 11:55:25 +02:00
values, new_attachments, new_fields =
2026-01-07 00:01:47 +02:00
Submitters::NormalizeValues.call(
template,
default_values,
submitter_name: submitter_params[:role] ||
(submitter_params[:uuid] &&
template.submitters.find { |s| s['uuid'] == submitter_params[:uuid] }&.dig('name')) ||
template.submitters.dig(index, 'name'),
role_names: submitter_params[:roles],
for_submitter:,
add_fields:,
throw_errors: !with_values
)
2023-12-17 18:39:10 +02:00
submitter_params[:values] = values
2025-12-19 11:55:25 +02:00
[submitter_params, new_attachments, new_fields]
2023-12-17 18:39:10 +02:00
end
def save_default_value_attachments!(attachments, submitters)
return if attachments.blank?
attachments_index = attachments.index_by(&:uuid)
submitters.each do |submitter|
2023-12-22 23:12:00 +02:00
submitter.values.each_value do |value|
2024-09-05 15:03:43 +03:00
Array.wrap(value).each do |v|
attachment = attachments_index[v]
2023-12-17 18:39:10 +02:00
2024-09-05 15:03:43 +03:00
next unless attachment
2023-12-17 18:39:10 +02:00
2024-09-05 15:03:43 +03:00
attachment.record = submitter
2023-12-17 18:39:10 +02:00
2024-09-05 15:03:43 +03:00
attachment.save!
end
2023-12-17 18:39:10 +02:00
end
end
end
end
end