add submitters order param

This commit is contained in:
Pete Matsyburka
2025-07-29 16:15:55 +03:00
parent 8d3295e125
commit 676b330aa3
6 changed files with 56 additions and 22 deletions
@@ -185,7 +185,7 @@ module Api
message: %i[subject body],
submitters: [[:send_email, :send_sms, :completed_redirect_url, :uuid, :name, :email, :role,
:completed, :phone, :application_key, :external_id, :reply_to, :go_to_last,
:require_phone_2fa,
:require_phone_2fa, :order,
{ metadata: {}, values: {}, roles: [], readonly_fields: [], message: %i[subject body],
fields: [:name, :uuid, :default_value, :value, :title, :description,
:readonly, :required, :validation_pattern, :invalid_message,
+22 -9
View File
@@ -135,19 +135,32 @@ class ProcessSubmitterCompletionJob
end
def enqueue_next_submitter_request_notification(submitter)
next_submitter_item =
submitter.submission.template_submitters.find do |e|
sub = submitter.submission.submitters.find { |s| s.uuid == e['uuid'] }
submission = submitter.submission
submitters_index = submission.submitters.index_by(&:uuid)
next unless sub
next_submitter_items =
if submission.template_submitters.any? { |s| s['order'] }
submitter_groups =
submission.template_submitters.group_by.with_index { |s, index| s['order'] || index }
sub.completed_at.blank? && sub.sent_at.blank?
current_group_index = submitter_groups.find { |_, group| group.any? { |s| s['uuid'] == submitter.uuid } }&.first
if submitter_groups[current_group_index + 1] &&
submitters_index.values_at(*submitter_groups[current_group_index].pluck('uuid')).all?(&:completed_at?)
submitter_groups[current_group_index + 1]
end
else
submission.template_submitters.find do |e|
sub = submitters_index[e['uuid']]
next unless sub
sub.completed_at.blank? && sub.sent_at.blank?
end
end
return unless next_submitter_item
next_submitters = submitters_index.values_at(*Array.wrap(next_submitter_items).pluck('uuid'))
next_submitter = submitter.submission.submitters.find { |s| s.uuid == next_submitter_item['uuid'] }
Submitters.send_signature_requests([next_submitter])
Submitters.send_signature_requests(next_submitters)
end
end