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