diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 93c2190f..22af24d9 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -188,7 +188,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_email_2fa, :order, :invite_by, + :require_phone_2fa, :require_email_2fa, :order, :index, :invite_by, { metadata: {}, values: {}, roles: [], readonly_fields: [], message: %i[subject body], fields: [:name, :uuid, :default_value, :value, :title, :description, :readonly, :required, :validation_pattern, :invalid_message, diff --git a/lib/submissions/create_from_submitters.rb b/lib/submissions/create_from_submitters.rb index cd2076d8..b1e318cf 100644 --- a/lib/submissions/create_from_submitters.rb +++ b/lib/submissions/create_from_submitters.rb @@ -61,7 +61,8 @@ module Submissions submission.template_submitters << template_submitter - is_order_sent = submitters_order == 'random' || (template_submitter['order'] || index).zero? + is_order_sent = submitters_order == 'random' || + (template_submitter['order'] || submitter_attrs[:index] || index).zero? build_submitter(submission:, attrs: submitter_attrs, uuid:, is_order_sent:, user:, params:, @@ -308,7 +309,7 @@ module Submissions uuid = attrs[:uuid].presence uuid ||= submitters.find { |e| e['name'].to_s.casecmp(attrs[:role].to_s).zero? }&.dig('uuid') - uuid || submitters[index]&.dig('uuid') + uuid || submitters[attrs[:index] || index]&.dig('uuid') end def build_submitter(submission:, attrs:, uuid:, is_order_sent:, user:, preferences:, params:) diff --git a/lib/submissions/normalize_param_utils.rb b/lib/submissions/normalize_param_utils.rb index 02b7e6a7..0e459063 100644 --- a/lib/submissions/normalize_param_utils.rb +++ b/lib/submissions/normalize_param_utils.rb @@ -10,7 +10,8 @@ module Submissions Array.wrap(submissions_params).each do |submission| submission[:submitters].each_with_index do |submitter, index| - _, new_attachments, new_fields = normalize_submitter_params!(submitter, template, index, add_fields:) + _, new_attachments, new_fields = + normalize_submitter_params!(submitter, template, submitter[:index] || index, add_fields:) attachments.push(*new_attachments) fields.push(*new_fields)