mirror of https://github.com/docusealco/docuseal
				
				
				
			
							parent
							
								
									92da790e77
								
							
						
					
					
						commit
						2389c3fc40
					
				| @ -1,4 +1,4 @@ | |||||||
| <% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %> | <% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %> | ||||||
| <% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| f['submitter_uuid'] == submitter.uuid }.to_json %> | <% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| f['submitter_uuid'] == submitter.uuid }.to_json %> | ||||||
| <% configs = Submitters::FormConfigs.call(submitter) %> | <% configs = Submitters::FormConfigs.call(submitter) %> | ||||||
| <submission-form data-is-demo="<%= Docuseal.demo? %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'] %>" data-completed-message="<%= configs[:completed_message].to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>"></submission-form> | <submission-form data-is-demo="<%= Docuseal.demo? %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'] %>" data-completed-message="<%= configs[:completed_message].to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>"></submission-form> | ||||||
|  | |||||||
| @ -0,0 +1,38 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | module Submitters | ||||||
|  |   module MaybeAssignDefaultSignature | ||||||
|  |     module_function | ||||||
|  | 
 | ||||||
|  |     def call(submitter, params, attachments_index) | ||||||
|  |       return if params[:t].present? && params[:t] != SubmissionEvents.build_tracking_param(submitter, 'click_email') | ||||||
|  |       return if params[:t].blank? && !submitter.submission_events.exists?(event_type: :click_email) | ||||||
|  | 
 | ||||||
|  |       signature_attachment = find_previous_signature(submitter) | ||||||
|  | 
 | ||||||
|  |       return if signature_attachment.blank? | ||||||
|  | 
 | ||||||
|  |       existing_attachment = attachments_index.values.find { |a| a.blob_id == signature_attachment.blob_id } | ||||||
|  | 
 | ||||||
|  |       return existing_attachment if existing_attachment | ||||||
|  | 
 | ||||||
|  |       attachment = submitter.attachments_attachments.create!(blob_id: signature_attachment.blob_id) | ||||||
|  | 
 | ||||||
|  |       attachments_index[attachment.uuid] = attachment | ||||||
|  | 
 | ||||||
|  |       attachment | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def find_previous_signature(submitter) | ||||||
|  |       return if submitter.email.blank? | ||||||
|  | 
 | ||||||
|  |       submitters_query = | ||||||
|  |         Submitter.where(email: submitter.email) | ||||||
|  |                  .where.not(completed_at: nil) | ||||||
|  |                  .where(SubmissionEvent.where(Submitter.arel_table[:id].eq(SubmissionEvent.arel_table[:submitter_id])) | ||||||
|  |                                        .where(event_type: :click_email).limit(1).arel.exists) | ||||||
|  | 
 | ||||||
|  |       ActiveStorage::Attachment.where(name: :signature, record: submitters_query).order(:id).last | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
					Loading…
					
					
				
		Reference in new issue