use submission completed_at
This commit is contained in:
+9
-6
@@ -37,19 +37,22 @@ module Submissions
|
||||
|
||||
arel_table = Submitter.arel_table
|
||||
|
||||
arel = arel_table[:email].lower.matches(term)
|
||||
.or(arel_table[:phone].matches(term))
|
||||
.or(arel_table[:name].lower.matches(term))
|
||||
submitter_arel = arel_table[:email].lower.matches(term)
|
||||
.or(arel_table[:phone].matches(term))
|
||||
.or(arel_table[:name].lower.matches(term))
|
||||
|
||||
arel = arel.or(Arel::Table.new(:submitters)[:values].matches(term)) if search_values
|
||||
submitter_arel = submitter_arel.or(arel_table[:values].matches(term)) if search_values
|
||||
|
||||
arel = Submitter.where(arel_table[:submission_id].eq(Submission.arel_table[:id]))
|
||||
.where(submitter_arel).select(1).arel.exists
|
||||
|
||||
if search_template
|
||||
submissions = submissions.left_joins(:template)
|
||||
|
||||
arel = arel.or(Template.arel_table[:name].lower.matches("%#{sanitized}%"))
|
||||
arel = arel.or(Template.arel_table[:name].lower.matches(term))
|
||||
end
|
||||
|
||||
submissions.joins(:submitters).where(arel).group(:id)
|
||||
submissions.where(arel)
|
||||
end
|
||||
|
||||
def fulltext_search(current_user, submissions, keyword, search_template: false)
|
||||
|
||||
@@ -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(':')
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
+3
-3
@@ -108,7 +108,7 @@ module Submitters
|
||||
if AccountConfig.exists?(account_id: submitter.submission.account_id,
|
||||
key: AccountConfig::COMBINE_PDF_RESULT_KEY,
|
||||
value: true) &&
|
||||
submitter.submission.submitters.all?(&:completed_at?) &&
|
||||
submitter.submission.completed_at? &&
|
||||
submitter.submission.template_fields.none? { |f| f['type'] == 'verification' }
|
||||
return [submitter.submission.combined_document_attachment || Submissions::EnsureCombinedGenerated.call(submitter)]
|
||||
end
|
||||
@@ -207,7 +207,7 @@ module Submitters
|
||||
|
||||
filename = filename.gsub('{document.name}', blob.filename.base)
|
||||
filename = filename.gsub(' - {submission.status}') do
|
||||
if submitter.submission.submitters.all?(&:completed_at?)
|
||||
if submitter.submission.completed_at?
|
||||
status =
|
||||
if submitter.submission.template_fields.any? { |f| f['type'] == 'signature' }
|
||||
I18n.t(:signed)
|
||||
@@ -264,7 +264,7 @@ module Submitters
|
||||
end
|
||||
|
||||
def build_combined_url(submitter, ttl: FILES_TTL)
|
||||
return if submitter.submission.submitters.exists?(completed_at: nil)
|
||||
return unless submitter.submission.completed_at?
|
||||
return if submitter.submission.submitters.order(:completed_at).last != submitter
|
||||
|
||||
attachment = submitter.submission.combined_document_attachment
|
||||
|
||||
@@ -93,11 +93,9 @@ module Submitters
|
||||
end
|
||||
|
||||
def build_submission_status(submission)
|
||||
submitters = submission.submitters
|
||||
|
||||
if submitters.all?(&:completed_at?)
|
||||
if submission.completed_at?
|
||||
'completed'
|
||||
elsif submitters.any?(&:declined_at?)
|
||||
elsif submission.submitters.any?(&:declined_at?)
|
||||
'declined'
|
||||
else
|
||||
submission.expired? ? 'expired' : 'pending'
|
||||
|
||||
Reference in New Issue
Block a user