mirror of https://github.com/docusealco/docuseal
parent
44e848a1f0
commit
37de5e0d0d
@ -0,0 +1,58 @@
|
|||||||
|
# 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.template.submissions.new(created_by_user: current_user,
|
||||||
|
submitters_order: :preserved,
|
||||||
|
**@submitter.submission.slice(:template_fields,
|
||||||
|
:account_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!
|
||||||
|
|
||||||
|
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
|
||||||
Loading…
Reference in new issue