diff --git a/app/controllers/submissions_debug_controller.rb b/app/controllers/submissions_debug_controller.rb
index e411db15..4a6e8b9d 100644
--- a/app/controllers/submissions_debug_controller.rb
+++ b/app/controllers/submissions_debug_controller.rb
@@ -16,13 +16,16 @@ class SubmissionsDebugController < ApplicationController
render 'submit_form/show'
end
f.pdf do
- if params[:audit]
- Submissions::GenerateAuditTrail.call(@submitter.submission)
- else
- Submissions::GenerateResultAttachments.call(@submitter)
- end
+ result =
+ if params[:audit]
+ Submissions::GenerateAuditTrail.call(@submitter.submission)
+ elsif params[:combined]
+ Submissions::GenerateCombinedAttachment.call(@submitter)
+ else
+ Submissions::GenerateResultAttachments.call(@submitter)
+ end
- send_data ActiveStorage::Attachment.where(name: params[:audit] ? :audit_trail : :documents).last.download,
+ send_data Array.wrap(result).first.download,
filename: 'debug.pdf',
disposition: 'inline',
type: 'application/pdf'
diff --git a/app/controllers/submissions_download_controller.rb b/app/controllers/submissions_download_controller.rb
index 6207a5c7..815e7702 100644
--- a/app/controllers/submissions_download_controller.rb
+++ b/app/controllers/submissions_download_controller.rb
@@ -33,7 +33,17 @@ class SubmissionsDownloadController < ApplicationController
return head :not_found
end
- render json: build_urls(last_submitter)
+ if params[:combined]
+ url = build_combined_url(submitter)
+
+ if url
+ render json: [url]
+ else
+ head :not_found
+ end
+ else
+ render json: build_urls(last_submitter)
+ end
end
private
@@ -47,4 +57,14 @@ class SubmissionsDownloadController < ApplicationController
ActiveStorage::Blob.proxy_url(attachment.blob, expires_at: FILES_TTL.from_now.to_i)
end
end
+
+ def build_combined_url(submitter)
+ return if submitter.submission.submitters.exists?(completed_at: nil)
+ return if submitter.submission.submitters.order(:completed_at).last != submitter
+
+ attachment = submitter.submission.combined_document_attachment
+ attachment ||= Submissions::GenerateCombinedAttachment.call(submitter)
+
+ ActiveStorage::Blob.proxy_url(attachment.blob, expires_at: FILES_TTL.from_now.to_i)
+ end
end
diff --git a/app/models/submission.rb b/app/models/submission.rb
index 309010d0..55bb8fcd 100644
--- a/app/models/submission.rb
+++ b/app/models/submission.rb
@@ -52,6 +52,7 @@ class Submission < ApplicationRecord
attribute :slug, :string, default: -> { SecureRandom.base58(14) }
has_one_attached :audit_trail
+ has_one_attached :combined_document
has_many :template_schema_documents,
->(e) { where(uuid: (e.template_schema.presence || e.template.schema).pluck('attachment_uuid')) },
diff --git a/app/views/icons/_chevron_down.html.erb b/app/views/icons/_chevron_down.html.erb
new file mode 100644
index 00000000..a7fed86c
--- /dev/null
+++ b/app/views/icons/_chevron_down.html.erb
@@ -0,0 +1,4 @@
+
diff --git a/app/views/submissions/show.html.erb b/app/views/submissions/show.html.erb
index ce41cc0d..e9dee1a9 100644
--- a/app/views/submissions/show.html.erb
+++ b/app/views/submissions/show.html.erb
@@ -14,16 +14,42 @@
<% end %>
<% if last_submitter = @submission.submitters.to_a.select(&:completed_at?).max_by(&:completed_at) %>
-