diff --git a/lib/submitters/submit_values.rb b/lib/submitters/submit_values.rb index 8c43e410..2bb63d3c 100644 --- a/lib/submitters/submit_values.rb +++ b/lib/submitters/submit_values.rb @@ -107,24 +107,33 @@ module Submitters reason_field_uuid = params[:with_reason] signature_field_uuid = values.except(reason_field_uuid).keys.first - signature_field = submitter.submission.template_fields.find { |e| e['uuid'] == signature_field_uuid } - - signature_field['preferences'] ||= {} - signature_field['preferences']['reason_field_uuid'] = reason_field_uuid + signature_field = submitter.submission.template_fields.find do |e| + e['uuid'] == signature_field_uuid && e['submitter_uuid'] == submitter.uuid + end - reason_field = submitter.submission.template_fields.find { |e| e['uuid'] == reason_field_uuid } + reason_field = submitter.submission.template_fields.find do |e| + e['uuid'] == reason_field_uuid && e['submitter_uuid'] == submitter.uuid + end - unless reason_field + if reason_field + if reason_field.dig('preferences', 'signature_field_uuid') != signature_field['uuid'] + raise ValidationError, 'Invalid field' + end + else reason_field = { 'type' => 'text', 'uuid' => reason_field_uuid, 'name' => I18n.t(:reason), 'readonly' => true, + 'preferences' => { 'signature_field_uuid' => signature_field['uuid'] }, 'submitter_uuid' => submitter.uuid } submitter.submission.template_fields.insert(submitter.submission.template_fields.index(signature_field) + 1, reason_field) end + signature_field['preferences'] ||= {} + signature_field['preferences']['reason_field_uuid'] = reason_field_uuid + submitter.submission.save! reason_field