mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
# 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
|
|
|
|
default_value = get_default_value_for_field(field, user, submitter)
|
|
|
|
submitter.values[field['uuid']] ||= default_value if default_value.present?
|
|
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
|