|
|
|
@ -150,15 +150,21 @@ module Submissions
|
|
|
|
def build_submitter(submission:, attrs:, uuid:, is_order_sent:, mark_as_sent:, user:, preferences:)
|
|
|
|
def build_submitter(submission:, attrs:, uuid:, is_order_sent:, mark_as_sent:, user:, preferences:)
|
|
|
|
email = Submissions.normalize_email(attrs[:email])
|
|
|
|
email = Submissions.normalize_email(attrs[:email])
|
|
|
|
submitter_preferences = Submitters.normalize_preferences(submission.account, user, attrs)
|
|
|
|
submitter_preferences = Submitters.normalize_preferences(submission.account, user, attrs)
|
|
|
|
|
|
|
|
values = attrs[:values] || {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
phone_field_uuid =
|
|
|
|
|
|
|
|
(submission.template_fields || submission.template.fields).find do |f|
|
|
|
|
|
|
|
|
values[f['uuid']].present? && f['type'] == 'phone'
|
|
|
|
|
|
|
|
end&.dig('uuid')
|
|
|
|
|
|
|
|
|
|
|
|
submission.submitters.new(
|
|
|
|
submission.submitters.new(
|
|
|
|
email:,
|
|
|
|
email:,
|
|
|
|
phone: attrs[:phone].to_s.gsub(/[^0-9+]/, ''),
|
|
|
|
phone: (attrs[:phone] || values[phone_field_uuid]).to_s.gsub(/[^0-9+]/, ''),
|
|
|
|
name: attrs[:name],
|
|
|
|
name: attrs[:name],
|
|
|
|
external_id: attrs[:external_id].presence || attrs[:application_key],
|
|
|
|
external_id: attrs[:external_id].presence || attrs[:application_key],
|
|
|
|
completed_at: attrs[:completed].present? ? Time.current : nil,
|
|
|
|
completed_at: attrs[:completed].present? ? Time.current : nil,
|
|
|
|
sent_at: mark_as_sent && email.present? && is_order_sent ? Time.current : nil,
|
|
|
|
sent_at: mark_as_sent && email.present? && is_order_sent ? Time.current : nil,
|
|
|
|
values: attrs[:values] || {},
|
|
|
|
values: values.except(phone_field_uuid),
|
|
|
|
metadata: attrs[:metadata] || {},
|
|
|
|
metadata: attrs[:metadata] || {},
|
|
|
|
preferences: preferences.merge(submitter_preferences)
|
|
|
|
preferences: preferences.merge(submitter_preferences)
|
|
|
|
.merge({ default_values: attrs[:values] }.compact_blank)
|
|
|
|
.merge({ default_values: attrs[:values] }.compact_blank)
|
|
|
|
|