From dbf1fa37c5a5c0e4ab15ac1b4626137193b01f09 Mon Sep 17 00:00:00 2001 From: DocuSeal Date: Wed, 1 Nov 2023 13:11:42 +0200 Subject: [PATCH] adjust completed webhook sending --- app/jobs/process_submitter_completion_job.rb | 15 +++++++-------- lib/accounts.rb | 8 ++++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index 1da7a6c5..e481a74e 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -10,19 +10,18 @@ class ProcessSubmitterCompletionJob < ApplicationJob Submissions::EnsureResultGenerated.call(submitter) - if submitter.account.encrypted_configs.exists?(key: EncryptedConfig::WEBHOOK_URL_KEY) - SendFormCompletedWebhookRequestJob.perform_later(submitter) - end + if is_all_completed && submitter.completed_at == submitter.submission.submitters.maximum(:completed_at) + Submissions::GenerateAuditTrail.call(submitter.submission) - return unless is_all_completed - return if submitter.completed_at != submitter.submission.submitters.maximum(:completed_at) + enqueue_completed_emails(submitter) + end - Submissions::GenerateAuditTrail.call(submitter.submission) + return if Accounts.load_webhook_configs(submitter.account).blank? - enqueue_emails(submitter) + SendFormCompletedWebhookRequestJob.perform_later(submitter) end - def enqueue_emails(submitter) + def enqueue_completed_emails(submitter) user = submitter.submission.created_by_user || submitter.template.author if submitter.template.account.users.exists?(id: user.id) diff --git a/lib/accounts.rb b/lib/accounts.rb index f9679ce4..fcab3cad 100644 --- a/lib/accounts.rb +++ b/lib/accounts.rb @@ -47,9 +47,13 @@ module Accounts end def load_webhook_configs(account) - EncryptedConfig.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) unless Docuseal.multitenant? + configs = account.encrypted_configs.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) - account.encrypted_configs.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) + unless Docuseal.multitenant? + configs ||= Account.order(:id).first.encrypted_configs.find_by(key: EncryptedConfig::WEBHOOK_URL_KEY) + end + + configs end def load_signing_pkcs(account)