You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/lib/submissions/assign_defined_submitters.rb

55 lines
1.6 KiB

# frozen_string_literal: true
module Submissions
module AssignDefinedSubmitters
module_function
def call(submission)
submission.submitters_order = 'preserved'
assign_defined_submitters(submission)
assign_linked_submitters(submission)
if submission.submitters.size == 1 && submission.template.submitters.size == 2 && submission.source != 'embed'
submission.submitters.new(
account_id: submission.account_id,
uuid: submission.template.submitters.find { |e| e['uuid'] != submission.submitters.first.uuid }['uuid'],
email: submission.template.author.email
)
end
submission
end
def assign_defined_submitters(submission)
submission.template.submitters.to_a.select do |item|
next if item['email'].blank? && item['is_requester'].blank?
next if submission.submitters.any? { |e| e.uuid == item['uuid'] }
submission.submitters.new(
account_id: submission.account_id,
uuid: item['uuid'],
email: item['is_requester'] ? submission.template.author.email : item['email']
)
end
end
def assign_linked_submitters(submission)
submission.template.submitters.to_a.select do |item|
next if item['linked_to_uuid'].blank?
next if submission.submitters.any? { |e| e.uuid == item['uuid'] }
email = submission.submitters.find { |s| s.uuid == item['linked_to_uuid'] }&.email
next unless email
submission.submitters.new(
account_id: submission.account_id,
uuid: item['uuid'],
email:
)
end
end
end
end