diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index d8f2f338..928205d1 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -64,14 +64,14 @@ module Api submissions = create_submissions(@template, params) submissions.each do |submission| - SendSubmissionCreatedWebhookRequestJob.perform_later(submission) + SendSubmissionCreatedWebhookRequestJob.perform_later({ 'submission_id' => submission.id }) end Submissions.send_signature_requests(submissions) submissions.each do |submission| if submission.submitters.all?(&:completed_at?) && submission.submitters.last - ProcessSubmitterCompletionJob.perform_later(submission.submitters.last) + ProcessSubmitterCompletionJob.perform_later({ 'submitter_id' => submission.submitters.last.id }) end end @@ -94,7 +94,7 @@ module Api else @submission.update!(archived_at: Time.current) - SendSubmissionArchivedWebhookRequestJob.perform_later(@submission) + SendSubmissionArchivedWebhookRequestJob.perform_later('submission_id' => @submission.id) end render json: @submission.as_json(only: %i[id archived_at]) diff --git a/app/controllers/api/submitter_form_views_controller.rb b/app/controllers/api/submitter_form_views_controller.rb index f837f60b..dd24d0a5 100644 --- a/app/controllers/api/submitter_form_views_controller.rb +++ b/app/controllers/api/submitter_form_views_controller.rb @@ -13,7 +13,7 @@ module Api SubmissionEvents.create_with_tracking_data(submitter, 'view_form', request) - SendFormViewedWebhookRequestJob.perform_later(submitter) + SendFormViewedWebhookRequestJob.perform_later({ 'submitter_id' => submitter.id }) render json: {} end diff --git a/app/controllers/api/submitters_controller.rb b/app/controllers/api/submitters_controller.rb index e8cf7470..e45b87cc 100644 --- a/app/controllers/api/submitters_controller.rb +++ b/app/controllers/api/submitters_controller.rb @@ -66,7 +66,7 @@ module Api end if @submitter.completed_at? - ProcessSubmitterCompletionJob.perform_later(@submitter) + ProcessSubmitterCompletionJob.perform_later({ 'submitter_id' => @submitter.id }) elsif normalized_params[:send_email] || normalized_params[:send_sms] Submitters.send_signature_requests([@submitter]) end diff --git a/app/controllers/api/templates_clone_controller.rb b/app/controllers/api/templates_clone_controller.rb index 6a76704e..3e881bce 100644 --- a/app/controllers/api/templates_clone_controller.rb +++ b/app/controllers/api/templates_clone_controller.rb @@ -20,7 +20,7 @@ module Api Templates::CloneAttachments.call(template: cloned_template, original_template: @template) - SendTemplateCreatedWebhookRequestJob.perform_later(cloned_template) + SendTemplateCreatedWebhookRequestJob.perform_later('template_id' => cloned_template.id) render json: Templates::SerializeForApi.call(cloned_template) end diff --git a/app/controllers/api/templates_controller.rb b/app/controllers/api/templates_controller.rb index 09c6b724..830afc22 100644 --- a/app/controllers/api/templates_controller.rb +++ b/app/controllers/api/templates_controller.rb @@ -65,7 +65,7 @@ module Api @template.update!(template_params) - SendTemplateUpdatedWebhookRequestJob.perform_later(@template) + SendTemplateUpdatedWebhookRequestJob.perform_later('template_id' => @template.id) render json: @template.as_json(only: %i[id updated_at]) end diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index 5cb51e2e..b268a413 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -36,7 +36,9 @@ class StartFormController < ApplicationController is_new_record = @submitter.new_record? if @submitter.save - SendSubmissionCreatedWebhookRequestJob.perform_later(@submitter.submission) if is_new_record + if is_new_record + SendSubmissionCreatedWebhookRequestJob.perform_later({ 'submission_id' => @submitter.submission.id }) + end redirect_to submit_form_path(@submitter.slug) else diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index 1b88e67f..dc45d595 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -45,7 +45,7 @@ class SubmissionsController < ApplicationController end submissions.each do |submission| - SendSubmissionCreatedWebhookRequestJob.perform_later(submission) + SendSubmissionCreatedWebhookRequestJob.perform_later({ 'submission_id' => submission.id }) end Submissions.send_signature_requests(submissions) @@ -56,7 +56,7 @@ class SubmissionsController < ApplicationController def destroy @submission.update!(archived_at: Time.current) - SendSubmissionArchivedWebhookRequestJob.perform_later(@submission) + SendSubmissionArchivedWebhookRequestJob.perform_later('submission_id' => @submission.id) redirect_back(fallback_location: template_path(@submission.template), notice: 'Submission has been archived') end diff --git a/app/controllers/templates_controller.rb b/app/controllers/templates_controller.rb index 2e055b95..a7a682f6 100644 --- a/app/controllers/templates_controller.rb +++ b/app/controllers/templates_controller.rb @@ -61,7 +61,7 @@ class TemplatesController < ApplicationController if @template.save Templates::CloneAttachments.call(template: @template, original_template: @base_template) if @base_template - SendTemplateUpdatedWebhookRequestJob.perform_later(@template) + SendTemplateUpdatedWebhookRequestJob.perform_later('template_id' => @template.id) maybe_redirect_to_template(@template) else @@ -72,7 +72,7 @@ class TemplatesController < ApplicationController def update @template.update!(template_params) - SendTemplateUpdatedWebhookRequestJob.perform_later(@template) + SendTemplateUpdatedWebhookRequestJob.perform_later('template_id' => @template.id) head :ok end diff --git a/app/controllers/templates_uploads_controller.rb b/app/controllers/templates_uploads_controller.rb index 9b9f5f60..4c0eea23 100644 --- a/app/controllers/templates_uploads_controller.rb +++ b/app/controllers/templates_uploads_controller.rb @@ -18,7 +18,7 @@ class TemplatesUploadsController < ApplicationController @template.update!(schema:) - SendTemplateCreatedWebhookRequestJob.perform_later(@template) + SendTemplateCreatedWebhookRequestJob.perform_later('template_id' => @template.id) redirect_to edit_template_path(@template) rescue Templates::CreateAttachments::PdfEncrypted diff --git a/app/controllers/webhook_settings_controller.rb b/app/controllers/webhook_settings_controller.rb index 1748ef4d..146a759c 100644 --- a/app/controllers/webhook_settings_controller.rb +++ b/app/controllers/webhook_settings_controller.rb @@ -17,7 +17,7 @@ class WebhookSettingsController < ApplicationController def update submitter = current_account.submitters.where.not(completed_at: nil).order(:id).last - SendFormCompletedWebhookRequestJob.perform_later(submitter) + SendFormCompletedWebhookRequestJob.perform_later({ 'submitter_id' => submitter.id }) redirect_back(fallback_location: settings_webhooks_path, notice: 'Webhook request has been sent.') end diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index f9697218..b3fd9257 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class ProcessSubmitterCompletionJob < ApplicationJob - def perform(submitter) + def perform(params = {}) + submitter = Submitter.find(params['submitter_id']) + is_all_completed = !submitter.submission.submitters.exists?(completed_at: nil) if !is_all_completed && submitter.submission.submitters_order_preserved? @@ -18,7 +20,7 @@ class ProcessSubmitterCompletionJob < ApplicationJob return if Accounts.load_webhook_url(submitter.account).blank? - SendFormCompletedWebhookRequestJob.perform_later(submitter) + SendFormCompletedWebhookRequestJob.perform_later({ 'submitter_id' => submitter.id }) end def enqueue_completed_emails(submitter) diff --git a/app/jobs/send_form_completed_webhook_request_job.rb b/app/jobs/send_form_completed_webhook_request_job.rb index c2911855..104cd529 100644 --- a/app/jobs/send_form_completed_webhook_request_job.rb +++ b/app/jobs/send_form_completed_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendFormCompletedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(submitter, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + submitter = Submitter.find(params['submitter_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(submitter.submission.account) return if url.blank? @@ -37,9 +39,10 @@ class SendFormCompletedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || submitter.account.account_configs.exists?(key: :plan)) SendFormCompletedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(submitter, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'submitter_id' => submitter.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_form_started_webhook_request_job.rb b/app/jobs/send_form_started_webhook_request_job.rb index 01d311b4..2770c6d8 100644 --- a/app/jobs/send_form_started_webhook_request_job.rb +++ b/app/jobs/send_form_started_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendFormStartedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(submitter, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + submitter = Submitter.find(params['submitter_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(submitter.submission.account) return if url.blank? @@ -35,9 +37,10 @@ class SendFormStartedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || submitter.account.account_configs.exists?(key: :plan)) SendFormStartedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(submitter, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'submitter_id' => submitter.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_form_viewed_webhook_request_job.rb b/app/jobs/send_form_viewed_webhook_request_job.rb index aff3ad32..6bc51c94 100644 --- a/app/jobs/send_form_viewed_webhook_request_job.rb +++ b/app/jobs/send_form_viewed_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendFormViewedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(submitter, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + submitter = Submitter.find(params['submitter_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(submitter.submission.account) return if url.blank? @@ -35,9 +37,10 @@ class SendFormViewedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || submitter.account.account_configs.exists?(key: :plan)) SendFormViewedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(submitter, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'submitter_id' => submitter.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_submission_archived_webhook_request_job.rb b/app/jobs/send_submission_archived_webhook_request_job.rb index e3fb05eb..3b9ae202 100644 --- a/app/jobs/send_submission_archived_webhook_request_job.rb +++ b/app/jobs/send_submission_archived_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendSubmissionArchivedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(submission, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + submission = Submission.find(params['submission_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(submission.account) return if url.blank? @@ -33,9 +35,10 @@ class SendSubmissionArchivedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || submission.account.account_configs.exists?(key: :plan)) SendSubmissionArchivedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(submission, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'submission_id' => submission.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_submission_created_webhook_request_job.rb b/app/jobs/send_submission_created_webhook_request_job.rb index 7a5d77ab..13dc2623 100644 --- a/app/jobs/send_submission_created_webhook_request_job.rb +++ b/app/jobs/send_submission_created_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendSubmissionCreatedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(submission, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + submission = Submission.find(params['submission_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(submission.account) return if url.blank? @@ -33,9 +35,10 @@ class SendSubmissionCreatedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || submission.account.account_configs.exists?(key: :plan)) SendSubmissionCreatedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(submission, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'submission_id' => submission.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_template_created_webhook_request_job.rb b/app/jobs/send_template_created_webhook_request_job.rb index 895c9511..f508850f 100644 --- a/app/jobs/send_template_created_webhook_request_job.rb +++ b/app/jobs/send_template_created_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendTemplateCreatedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(template, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + template = Template.find(params['template_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(template.account) return if url.blank? @@ -33,9 +35,10 @@ class SendTemplateCreatedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || template.account.account_configs.exists?(key: :plan)) SendTemplateCreatedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(template, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'template_id' => template.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/app/jobs/send_template_updated_webhook_request_job.rb b/app/jobs/send_template_updated_webhook_request_job.rb index 6b5a7aad..5d622ba2 100644 --- a/app/jobs/send_template_updated_webhook_request_job.rb +++ b/app/jobs/send_template_updated_webhook_request_job.rb @@ -7,8 +7,10 @@ class SendTemplateUpdatedWebhookRequestJob < ApplicationJob MAX_ATTEMPTS = 10 - def perform(template, params = {}) - attempt = params[:attempt].to_i + def perform(params = {}) + template = Template.find(params['template_id']) + + attempt = params['attempt'].to_i url = Accounts.load_webhook_url(template.account) return if url.blank? @@ -33,9 +35,10 @@ class SendTemplateUpdatedWebhookRequestJob < ApplicationJob if (resp.nil? || resp.status.to_i >= 400) && attempt <= MAX_ATTEMPTS && (!Docuseal.multitenant? || template.account.account_configs.exists?(key: :plan)) SendTemplateUpdatedWebhookRequestJob.set(wait: (2**attempt).minutes) - .perform_later(template, { - attempt: attempt + 1, - last_status: resp&.status.to_i + .perform_later({ + 'template_id' => template.id, + 'attempt' => attempt + 1, + 'last_status' => resp&.status.to_i }) end end diff --git a/lib/submitters/submit_values.rb b/lib/submitters/submit_values.rb index 27187c20..f65c9a59 100644 --- a/lib/submitters/submit_values.rb +++ b/lib/submitters/submit_values.rb @@ -14,14 +14,14 @@ module Submitters unless submitter.submission_events.exists?(event_type: 'start_form') SubmissionEvents.create_with_tracking_data(submitter, 'start_form', request) - SendFormStartedWebhookRequestJob.perform_later(submitter) + SendFormStartedWebhookRequestJob.perform_later({ 'submitter_id' => submitter.id }) end update_submitter!(submitter, params, request) submitter.submission.save! - ProcessSubmitterCompletionJob.perform_later(submitter) if submitter.completed_at? + ProcessSubmitterCompletionJob.perform_later({ 'submitter_id' => submitter.id }) if submitter.completed_at? submitter end