use submission completed_at

This commit is contained in:
Pete Matsyburka
2026-07-01 21:50:12 +03:00
parent 9194879c43
commit ac7cc77017
24 changed files with 91 additions and 97 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ module Submissions
def call(submission)
return nil unless submission
raise NotCompletedYet unless submission.submitters.all?(&:completed_at?)
raise NotCompletedYet unless submission.completed_at?
total_wait_time ||= 0
key = [KEY_PREFIX, submission.id].join(':')
+3 -4
View File
@@ -104,16 +104,15 @@ module Submissions
def filter_by_completed_at(submissions, filters)
return submissions unless filters[:completed_at_from].present? || filters[:completed_at_to].present?
completed_arel = Submitter.arel_table[:completed_at].maximum
submissions = submissions.completed.joins(:submitters).group(:id)
submissions = submissions.completed
if filters[:completed_at_from].present?
submissions = submissions.having(completed_arel.gteq(filters[:completed_at_from]))
submissions = submissions.where(completed_at: filters[:completed_at_from]..)
end
return submissions if filters[:completed_at_to].blank?
submissions.having(completed_arel.lteq(filters[:completed_at_to].end_of_day))
submissions.where(completed_at: ..filters[:completed_at_to].end_of_day)
end
def normalize_filter_params(params, current_user)
+5 -5
View File
@@ -37,8 +37,8 @@ module Submissions
json['fields'] = submission.template_fields || submission.template&.fields
end
if submitters.all?(&:completed_at?)
last_submitter = submitters.max_by(&:completed_at)
if submission.completed_at?
last_submitter = submitters.select(&:completed_at?).max_by(&:completed_at)
if with_documents
json['documents'] = serialized_submitters.find { |e| e['id'] == last_submitter.id }['documents']
@@ -49,7 +49,7 @@ module Submissions
json['combined_document_url'] ||= maybe_build_combined_url(submitters, submission, params, expires_at:)
json['status'] = 'completed'
json['completed_at'] = last_submitter.completed_at.as_json
json['completed_at'] = submission.completed_at.as_json
else
json['documents'] = [] if with_documents
json['audit_log_url'] = nil
@@ -73,12 +73,12 @@ module Submissions
end
def maybe_build_combined_url(submitters, submission, params, expires_at: nil)
return unless submitters.all?(&:completed_at?)
return unless submission.completed_at?
attachment = submission.combined_document_attachment
if !attachment && params[:include].to_s.include?('combined_document_url')
submitter = submitters.max_by(&:completed_at)
submitter = submitters.select(&:completed_at?).max_by(&:completed_at)
attachment = Submissions::EnsureCombinedGenerated.call(submitter)
end