add recipient preferences

This commit is contained in:
Pete Matsyburka
2024-09-06 19:30:49 +03:00
committed by Oleksandr Turchyn
parent 126a36dbf3
commit 71b8cc7172
13 changed files with 201 additions and 17 deletions
+1 -1
View File
@@ -97,7 +97,7 @@ module Api
:name,
:external_id,
{
submitters: [%i[name uuid]],
submitters: [%i[name uuid is_requester linked_to_uuid email]],
fields: [[:uuid, :submitter_uuid, :name, :type,
:required, :readonly, :default_value,
:title, :description,
+1 -1
View File
@@ -103,7 +103,7 @@ class TemplatesController < ApplicationController
params.require(:template).permit(
:name,
{ schema: [%i[attachment_uuid name]],
submitters: [%i[name uuid]],
submitters: [%i[name uuid is_requester linked_to_uuid email]],
fields: [[:uuid, :submitter_uuid, :name, :type,
:required, :readonly, :default_value,
:title, :description,
@@ -0,0 +1,49 @@
# frozen_string_literal: true
class TemplatesRecipientsController < ApplicationController
load_and_authorize_resource :template
def create
authorize!(:update, @template)
@template.submitters =
submitters_params.map { |s| s.reject { |_, v| v.is_a?(String) && v.blank? } }
@template.save!
render json: { submitters: @template.submitters }
end
private
def submitters_params
params.require(:template).permit(
submitters: [%i[name uuid is_requester linked_to_uuid email option]]
).fetch(:submitters, {}).values.filter_map do |s|
next if s[:uuid].blank?
if s[:is_requester] == '1'
s[:is_requester] = true
else
s.delete(:is_requester)
end
option = s.delete(:option)
if option.present?
case option
when 'is_requester'
s[:is_requester] = true
when 'not_set'
s.delete(:is_requester)
s.delete(:email)
s.delete(:linked_to_uuid)
when /\Alinked_to_(.*)\z/
s[:linked_to_uuid] = ::Regexp.last_match(-1)
end
end
s
end
end
end