mirror of https://github.com/docusealco/docuseal
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.
65 lines
2.5 KiB
65 lines
2.5 KiB
# frozen_string_literal: true
|
|
|
|
class SubmittersResubmitController < ApplicationController
|
|
load_and_authorize_resource :submitter, parent: false
|
|
|
|
def update
|
|
return redirect_to submit_form_path(slug: @submitter.slug) if @submitter.email != current_user.email
|
|
|
|
submission = @submitter.account.submissions.new(created_by_user: current_user,
|
|
submitters_order: :preserved,
|
|
**@submitter.submission.slice(:template_fields,
|
|
:account_id,
|
|
:name,
|
|
:template_id,
|
|
:template_schema,
|
|
:template_submitters,
|
|
:preferences))
|
|
|
|
@submitter.submission.submitters.each do |submitter|
|
|
new_submitter = submission.submitters.new(submitter.slice(:uuid, :email, :phone, :name,
|
|
:preferences, :metadata, :account_id))
|
|
|
|
next unless submitter.uuid == @submitter.uuid
|
|
|
|
assign_submitter_values(new_submitter, submitter)
|
|
|
|
@new_submitter ||= new_submitter
|
|
end
|
|
|
|
submission.save!
|
|
|
|
@submitter.submission.documents_attachments.each do |attachment|
|
|
submission.documents_attachments.create!(uuid: attachment.uuid, blob_id: attachment.blob_id)
|
|
end
|
|
|
|
redirect_to submit_form_path(slug: @new_submitter.slug)
|
|
end
|
|
|
|
private
|
|
|
|
def assign_submitter_values(new_submitter, submitter)
|
|
attachments_index = submitter.attachments.index_by(&:uuid)
|
|
|
|
submitter.submission.template_fields.each do |field|
|
|
next if field['submitter_uuid'] != submitter.uuid
|
|
next if field['default_value'] == '{{date}}'
|
|
next if field['type'] == 'stamp'
|
|
next if field['type'] == 'signature'
|
|
next if field.dig('preferences', 'formula').present?
|
|
|
|
value = submitter.values[field['uuid']]
|
|
|
|
next if value.blank?
|
|
|
|
if field['type'].in?(%w[image file initials])
|
|
Array.wrap(value).each do |attachment_uuid|
|
|
new_submitter.attachments << attachments_index[attachment_uuid].dup
|
|
end
|
|
end
|
|
|
|
new_submitter.values[field['uuid']] = value
|
|
end
|
|
end
|
|
end
|