From 42c30bdfd005d919ed06bfa81bb4cecdf18c114b Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 25 Mar 2025 15:34:37 +0200 Subject: [PATCH] ensure generated doc completed --- .../submissions_download_controller.rb | 4 ++-- lib/submissions.rb | 16 ++++++++++++++++ lib/submissions/ensure_result_generated.rb | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/controllers/submissions_download_controller.rb b/app/controllers/submissions_download_controller.rb index 9ba81b91..e4af5f49 100644 --- a/app/controllers/submissions_download_controller.rb +++ b/app/controllers/submissions_download_controller.rb @@ -23,9 +23,9 @@ class SubmissionsDownloadController < ApplicationController last_submitter = submitter.submission.submitters.where.not(completed_at: nil).order(:completed_at).last - Submissions::EnsureResultGenerated.call(last_submitter) + return head :not_found unless last_submitter - return head :not_found unless last_submitter.completed_at? + Submissions::EnsureResultGenerated.call(last_submitter) if last_submitter.completed_at < TTL.ago && !signature_valid && !current_user_submitter?(last_submitter) Rollbar.info("TTL: #{last_submitter.id}") if defined?(Rollbar) diff --git a/lib/submissions.rb b/lib/submissions.rb index 9843fd0f..ab9d65ea 100644 --- a/lib/submissions.rb +++ b/lib/submissions.rb @@ -196,4 +196,20 @@ module Submissions end end.exclude?(false) end + + def regenerate_documents(submission) + submitters = submission.submitters.where.not(completed_at: nil).preload(:documents_attachments) + + submitters.each { |submitter| submitter.documents.each(&:destroy!) } + + submission.submitters.where.not(completed_at: nil).order(:completed_at).each do |submitter| + GenerateResultAttachments.call(submitter) + end + + return if submission.combined_document_attachment.blank? + + submission.combined_document_attachment.destroy! + + Submissions::GenerateCombinedAttachment.call(submission.submitters.completed.order(:completed_at).last) + end end diff --git a/lib/submissions/ensure_result_generated.rb b/lib/submissions/ensure_result_generated.rb index dbbe5679..423f3097 100644 --- a/lib/submissions/ensure_result_generated.rb +++ b/lib/submissions/ensure_result_generated.rb @@ -7,11 +7,15 @@ module Submissions CHECK_COMPLETE_TIMEOUT = 90.seconds WaitForCompleteTimeout = Class.new(StandardError) + NotCompletedYet = Class.new(StandardError) module_function def call(submitter) return [] unless submitter + + raise NotCompletedYet unless submitter.completed_at? + return submitter.documents if ApplicationRecord.uncached { submitter.document_generation_events.complete.exists? } events =