diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 57076f7b..e4428e65 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -44,7 +44,7 @@ module Api @submission.audit_trail_attachment = Submissions::GenerateAuditTrail.call(@submission) end - render json: Submissions::SerializeForApi.call(@submission, submitters) + render json: Submissions::SerializeForApi.call(@submission, submitters, params) end def create diff --git a/lib/submissions/serialize_for_api.rb b/lib/submissions/serialize_for_api.rb index 388a9d8e..39016394 100644 --- a/lib/submissions/serialize_for_api.rb +++ b/lib/submissions/serialize_for_api.rb @@ -18,7 +18,7 @@ module Submissions module_function - def call(submission, submitters = nil) + def call(submission, submitters = nil, params = {}) submitters ||= submission.submitters.preload(documents_attachments: :blob, attachments_attachments: :blob) serialized_submitters = submitters.map { |submitter| Submitters::SerializeForApi.call(submitter) } @@ -32,6 +32,10 @@ module Submissions if submitters.all?(&:completed_at?) last_submitter = submitters.max_by(&:completed_at) + if params[:include].to_s.include?('combined_document_url') + json[:combined_document_url] = build_combined_url(submitters.max_by(&:completed_at), submission) + end + json[:documents] = serialized_submitters.find { |e| e['id'] == last_submitter.id }['documents'] json[:status] = 'completed' json[:completed_at] = last_submitter.completed_at @@ -45,5 +49,14 @@ module Submissions json end + + def build_combined_url(submitter, submission) + return unless submitter.completed_at? + + attachment = submission.combined_document_attachment + attachment ||= Submissions::GenerateCombinedAttachment.call(submitter) + + ActiveStorage::Blob.proxy_url(attachment.blob) + end end end