automatically send emails when all parties completed the form

This commit is contained in:
Alex Turchyn
2023-09-09 00:43:32 +03:00
parent 2fab6984ea
commit 80ad166fd9
9 changed files with 86 additions and 42 deletions
+20 -10
View File
@@ -7,28 +7,24 @@ module ReplaceEmailVariables
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 =
Rails.application.routes.url_helpers.submit_form_url(
slug: submitter.slug, **Docuseal.default_url_options
)
submitter_link = build_submitter_link(submitter)
if submitter.submission
submission_link =
Rails.application.routes.url_helpers.submission_url(
submitter.submission, **Docuseal.default_url_options
)
end
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(submission))
end
text = text.gsub(DOCUMENTS_LINKS, build_documents_links_text(submitter))
text = text.gsub(ACCOUNT_NAME, submitter.template.account.name) if submitter.template
@@ -46,4 +42,18 @@ module ReplaceEmailVariables
"#{link}\n"
end.join
end
def build_submitter_link(submitter)
Rails.application.routes.url_helpers.submit_form_url(
slug: submitter.slug, **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
+2 -12
View File
@@ -13,19 +13,9 @@ module Submitters
submitter.submission.save!
return unless submitter.completed_at?
return submitter unless submitter.completed_at?
GenerateSubmitterResultAttachmentsJob.perform_later(submitter)
if submitter.account.encrypted_configs.exists?(key: EncryptedConfig::WEBHOOK_URL_KEY)
SendWebhookRequestJob.perform_later(submitter)
end
user = submitter.submission.created_by_user || submitter.template.author
if submitter.template.account.users.exists?(id: user.id)
SubmitterMailer.completed_email(submitter, user).deliver_later!
end
ProcessSubmitterCompletionJob.perform_later(submitter)
submitter
end