diff --git a/app/controllers/account_configs_controller.rb b/app/controllers/account_configs_controller.rb index 0b67f714..82f90393 100644 --- a/app/controllers/account_configs_controller.rb +++ b/app/controllers/account_configs_controller.rb @@ -15,6 +15,7 @@ class AccountConfigsController < ApplicationController AccountConfig::FORCE_SSO_AUTH_KEY, AccountConfig::FLATTEN_RESULT_PDF_KEY, AccountConfig::WITH_SIGNATURE_ID, + AccountConfig::COMBINE_PDF_RESULT_KEY, AccountConfig::REQUIRE_SIGNING_REASON_KEY ].freeze diff --git a/app/controllers/api/form_events_controller.rb b/app/controllers/api/form_events_controller.rb index a6e5deaf..3e8e2a38 100644 --- a/app/controllers/api/form_events_controller.rb +++ b/app/controllers/api/form_events_controller.rb @@ -11,7 +11,8 @@ module Api params[:before] = Time.zone.at(params[:before].to_i) if params[:before].present? submitters = paginate( - submitters.preload(template: :folder, submission: [:submitters, { audit_trail_attachment: :blob }], + submitters.preload(template: :folder, submission: [:submitters, { audit_trail_attachment: :blob, + combined_document_attachment: :blob }], documents_attachments: :blob, attachments_attachments: :blob), field: :completed_at ) diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index aa4db085..4c237bb2 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -19,6 +19,7 @@ module Api submissions = paginate(submissions.preload(:created_by_user, :submitters, template: :folder, + combined_document_attachment: :blob, audit_trail_attachment: :blob)) render json: { diff --git a/app/controllers/submissions_download_controller.rb b/app/controllers/submissions_download_controller.rb index 815e7702..2a6517a9 100644 --- a/app/controllers/submissions_download_controller.rb +++ b/app/controllers/submissions_download_controller.rb @@ -33,7 +33,7 @@ class SubmissionsDownloadController < ApplicationController return head :not_found end - if params[:combined] + if params[:combined] == 'true' url = build_combined_url(submitter) if url diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index 20ac4050..cfedfee4 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -15,6 +15,10 @@ class ProcessSubmitterCompletionJob Submissions::EnsureResultGenerated.call(submitter) if is_all_completed && submitter.completed_at == submitter.submission.submitters.maximum(:completed_at) + if submitter.submission.account.account_configs.exists?(key: AccountConfig::COMBINE_PDF_RESULT_KEY, value: true) + Submissions::GenerateCombinedAttachment.call(submitter) + end + Submissions::GenerateAuditTrail.call(submitter.submission) enqueue_completed_emails(submitter) diff --git a/app/mailers/submitter_mailer.rb b/app/mailers/submitter_mailer.rb index 7683840a..d6d47abd 100644 --- a/app/mailers/submitter_mailer.rb +++ b/app/mailers/submitter_mailer.rb @@ -157,7 +157,7 @@ class SubmitterMailer < ApplicationMailer total_size = 0 audit_trail_data = nil - if with_audit_log && submitter.submission.audit_trail.present? + if with_audit_log && submitter.submission.audit_trail.present? && documents.first&.name != 'combined_document' audit_trail_data = submitter.submission.audit_trail.download total_size = audit_trail_data.size diff --git a/app/models/account_config.rb b/app/models/account_config.rb index affb7cc6..303f61c4 100644 --- a/app/models/account_config.rb +++ b/app/models/account_config.rb @@ -40,6 +40,7 @@ class AccountConfig < ApplicationRecord FLATTEN_RESULT_PDF_KEY = 'flatten_result_pdf' WITH_SIGNATURE_ID = 'with_signature_id' REQUIRE_SIGNING_REASON_KEY = 'require_signing_reason' + COMBINE_PDF_RESULT_KEY = 'combine_pdf_result_key' DEFAULT_VALUES = { SUBMITTER_INVITATION_EMAIL_KEY => { diff --git a/app/models/submission.rb b/app/models/submission.rb index 663bea8b..ff6efa8f 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -86,4 +86,10 @@ class Submission < ApplicationRecord ActiveStorage::Blob.proxy_url(audit_trail.blob) end alias audit_log_url audit_trail_url + + def combined_document_url + return if combined_document.blank? + + ActiveStorage::Blob.proxy_url(combined_document.blob) + end end diff --git a/app/views/accounts/show.html.erb b/app/views/accounts/show.html.erb index 446c1993..d4485949 100644 --- a/app/views/accounts/show.html.erb +++ b/app/views/accounts/show.html.erb @@ -123,6 +123,18 @@ <% end %> <% end %> + <% account_config = AccountConfig.find_or_initialize_by(account: current_account, key: AccountConfig::COMBINE_PDF_RESULT_KEY) %> + <% if can?(:manage, account_config) %> + <%= form_for account_config, url: account_configs_path, method: :post do |f| %> + <%= f.hidden_field :key %> +