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.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							2.1 KiB
						
					
					
				# frozen_string_literal: true
 | 
						|
 | 
						|
module ReplaceEmailVariables
 | 
						|
  TEMAPLTE_NAME = '{{template.name}}'
 | 
						|
  SUBMITTER_LINK = '{{submitter.link}}'
 | 
						|
  ACCOUNT_NAME = '{{account.name}}'
 | 
						|
  SUBMITTER_EMAIL = '{{submitter.email}}'
 | 
						|
  SUBMITTER_NAME = '{{submitter.name}}'
 | 
						|
  SUBMISSION_LINK = '{{submission.link}}'
 | 
						|
  SUBMISSION_SUBMITTERS = '{{submission.submitters}}'
 | 
						|
  DOCUMENTS_LINKS = '{{documents.links}}'
 | 
						|
 | 
						|
  module_function
 | 
						|
 | 
						|
  def call(text, submitter:)
 | 
						|
    submitter_link = build_submitter_link(submitter)
 | 
						|
 | 
						|
    submission_link = build_submission_link(submitter.submission) if submitter.submission
 | 
						|
 | 
						|
    text = text.gsub(TEMAPLTE_NAME, submitter.template.name) if submitter.template
 | 
						|
    text = text.gsub(SUBMITTER_EMAIL, submitter.email) if submitter.email
 | 
						|
    text = text.gsub(SUBMITTER_NAME, submitter.name || submitter.email || submitter.phone)
 | 
						|
    text = text.gsub(SUBMITTER_LINK, submitter_link)
 | 
						|
    text = text.gsub(SUBMISSION_LINK, submission_link) if submission_link
 | 
						|
    if text.include?(SUBMISSION_SUBMITTERS)
 | 
						|
      text = text.gsub(SUBMISSION_SUBMITTERS, build_submission_submitters(submitter.submission))
 | 
						|
    end
 | 
						|
    text = text.gsub(DOCUMENTS_LINKS, build_documents_links_text(submitter))
 | 
						|
 | 
						|
    text = text.gsub(ACCOUNT_NAME, submitter.template.account.name) if submitter.template
 | 
						|
 | 
						|
    text
 | 
						|
  end
 | 
						|
 | 
						|
  def build_documents_links_text(submitter)
 | 
						|
    submitter.documents.map do |document|
 | 
						|
      link =
 | 
						|
        Rails.application.routes.url_helpers.rails_blob_url(
 | 
						|
          document, **Docuseal.default_url_options
 | 
						|
        )
 | 
						|
 | 
						|
      "#{link}\n"
 | 
						|
    end.join
 | 
						|
  end
 | 
						|
 | 
						|
  def build_submitter_link(submitter)
 | 
						|
    Rails.application.routes.url_helpers.submit_form_url(
 | 
						|
      slug: submitter.slug,
 | 
						|
      t: SubmissionEvents.build_tracking_param(submitter, 'click_email'),
 | 
						|
      **Docuseal.default_url_options
 | 
						|
    )
 | 
						|
  end
 | 
						|
 | 
						|
  def build_submission_link(submission)
 | 
						|
    Rails.application.routes.url_helpers.submission_url(submission, **Docuseal.default_url_options)
 | 
						|
  end
 | 
						|
 | 
						|
  def build_submission_submitters(submission)
 | 
						|
    submission.submitters.order(:completed_at).map { |e| e.name || e.email || e.phone }.join(', ')
 | 
						|
  end
 | 
						|
end
 |