From 4aaab2563b08d0d4e720c3ff6d41b5d8b375b093 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 1 Dec 2023 16:59:19 +0200 Subject: [PATCH] configurable values normalize exception --- app/controllers/api/submissions_controller.rb | 3 ++- lib/submitters/normalize_values.rb | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 96cad324..8a512c38 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -148,7 +148,8 @@ module Api values, new_attachments = Submitters::NormalizeValues.call(template, default_values, - submitter[:role] || template.submitters[index]['name']) + submitter[:role] || template.submitters[index]['name'], + throw_errors: true) attachments.push(*new_attachments) diff --git a/lib/submitters/normalize_values.rb b/lib/submitters/normalize_values.rb index f7025037..a5ba6f81 100644 --- a/lib/submitters/normalize_values.rb +++ b/lib/submitters/normalize_values.rb @@ -9,7 +9,7 @@ module Submitters module_function - def call(template, values, submitter_name) + def call(template, values, submitter_name, throw_errors: false) submitter = template.submitters.find { |e| e['name'] == submitter_name } || raise(UnknownSubmitterName, "Unknown submitter: #{submitter_name}") @@ -21,11 +21,15 @@ module Submitters attachments = [] - normalized_values = values.to_h.to_h do |key, value| + normalized_values = values.to_h.filter_map do |key, value| if fields_uuid_index[key].blank? - key = fields_name_index[key]&.dig('uuid') || raise(UnknownFieldName, "Unknown field: #{key}") + key = fields_name_index[key]&.dig('uuid') + + raise(UnknownFieldName, "Unknown field: #{key}") if key.blank? && throw_errors end + next if key.blank? + if fields_uuid_index[key]['type'].in?(%w[initials signature image file]) new_value, new_attachments = normalize_attachment_value(value, template.account) @@ -35,7 +39,7 @@ module Submitters end [key, value] - end + end.to_h [normalized_values, attachments] end