invite party via field
This commit is contained in:
@@ -6,6 +6,7 @@ module Submitters
|
||||
RequiredFieldError = Class.new(StandardError)
|
||||
|
||||
VARIABLE_REGEXP = /\{\{?(\w+)\}\}?/
|
||||
PHONE_REGEXP = /[+\d()\s-]+/
|
||||
NONEDITABLE_FIELD_TYPES = %w[stamp heading strikethrough].freeze
|
||||
|
||||
STRFTIME_MAP = {
|
||||
@@ -52,7 +53,11 @@ module Submitters
|
||||
ActiveStorage::Attachment.where(uuid: touch_attachment_uuid, record: submitter).touch_all(:created_at)
|
||||
end
|
||||
|
||||
SubmissionEvents.create_with_tracking_data(submitter, 'complete_form', request) if params[:completed] == 'true'
|
||||
if params[:completed] == 'true'
|
||||
maybe_invite_via_field(submitter, request)
|
||||
|
||||
SubmissionEvents.create_with_tracking_data(submitter, 'complete_form', request)
|
||||
end
|
||||
|
||||
submitter.save!
|
||||
end
|
||||
@@ -405,6 +410,47 @@ module Submitters
|
||||
end
|
||||
end
|
||||
|
||||
def maybe_invite_via_field(submitter, request)
|
||||
submission = submitter.submission
|
||||
|
||||
is_invited = false
|
||||
|
||||
submission.template_submitters.each do |s|
|
||||
field_uuid = s['invite_via_field_uuid']
|
||||
|
||||
next if field_uuid.blank?
|
||||
|
||||
field = submission.template_fields.find { |e| e['uuid'] == field_uuid }
|
||||
|
||||
next unless field
|
||||
next unless field['submitter_uuid'] == submitter.uuid
|
||||
|
||||
next if submission.submitters.exists?(uuid: s['uuid'])
|
||||
|
||||
value = submitter.values[field_uuid]
|
||||
|
||||
next if value.blank?
|
||||
|
||||
if value.include?('@')
|
||||
email = Submissions.normalize_email(value)
|
||||
elsif value.match?(PHONE_REGEXP)
|
||||
phone = value.gsub(/[^+\d]/, '')
|
||||
end
|
||||
|
||||
next if email.blank? && phone.blank?
|
||||
|
||||
submission.submitters.create!(uuid: s['uuid'], email:, phone:, account_id: submitter.account_id)
|
||||
|
||||
SubmissionEvents.create_with_tracking_data(submitter, 'invite_party', request, { uuid: submitter.uuid })
|
||||
|
||||
is_invited = true
|
||||
end
|
||||
|
||||
submission.update!(submitters_order: :preserved) if is_invited
|
||||
|
||||
submitter
|
||||
end
|
||||
|
||||
def validate_value!(_value, field, _params, submitter, _request)
|
||||
if field['readonly'] == true
|
||||
Rollbar.warning("Readonly field #{submitter.id}: #{field['uuid']}") if defined?(Rollbar)
|
||||
|
||||
Reference in New Issue
Block a user