add default user signatures
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Submitters
|
||||
module MaybeUpdateDefaultValues
|
||||
module_function
|
||||
|
||||
def call(submitter, current_user)
|
||||
user =
|
||||
if current_user && current_user.email == submitter.email
|
||||
current_user
|
||||
else
|
||||
submitter.account.users.find_by(email: submitter.email)
|
||||
end
|
||||
|
||||
return if user.blank?
|
||||
|
||||
fields = submitter.submission.template_fields || submitter.submission.template.fields
|
||||
|
||||
fields.each do |field|
|
||||
next if field['submitter_uuid'] != submitter.uuid
|
||||
|
||||
submitter.values[field['uuid']] ||= get_default_value_for_field(field, user, submitter)
|
||||
end
|
||||
|
||||
submitter.save!
|
||||
end
|
||||
|
||||
def get_default_value_for_field(field, user, submitter)
|
||||
field_name = field['name'].to_s.downcase
|
||||
|
||||
if field_name.in?(['full name', 'legal name'])
|
||||
user.full_name
|
||||
elsif field_name == 'first name'
|
||||
user.first_name
|
||||
elsif field_name == 'last name'
|
||||
user.last_name
|
||||
elsif field['type'] == 'signature' && (signature = UserConfigs.load_signature(user))
|
||||
attachment = ActiveStorage::Attachment.find_or_create_by!(
|
||||
blob_id: signature.blob_id,
|
||||
name: 'attachments',
|
||||
record: submitter
|
||||
)
|
||||
|
||||
attachment.uuid
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user