fix phone value assignment
This commit is contained in:
@@ -104,20 +104,41 @@ module Api
|
|||||||
end
|
end
|
||||||
|
|
||||||
def assign_submitter_attrs(submitter, attrs)
|
def assign_submitter_attrs(submitter, attrs)
|
||||||
submitter.email = Submissions.normalize_email(attrs[:email]) if attrs.key?(:email)
|
values = attrs[:values]&.to_unsafe_h || {}
|
||||||
submitter.phone = attrs[:phone].to_s.gsub(/[^0-9+]/, '') if attrs.key?(:phone)
|
|
||||||
submitter.values = submitter.values.merge(attrs[:values].to_unsafe_h) if attrs[:values].present?
|
|
||||||
submitter.completed_at = attrs[:completed] ? Time.current : submitter.completed_at
|
|
||||||
submitter.external_id = attrs[:application_key] if attrs.key?(:application_key)
|
|
||||||
submitter.external_id = attrs[:external_id] if attrs.key?(:external_id)
|
|
||||||
submitter.metadata = attrs[:metadata] if attrs.key?(:metadata)
|
|
||||||
|
|
||||||
assign_submission_fields(submitter.submission)
|
assign_submission_fields(submitter.submission)
|
||||||
|
|
||||||
|
phone_field_uuid = submitter.submission.template_fields.find do |f|
|
||||||
|
values[f['uuid']].present? && f['type'] == 'phone'
|
||||||
|
end&.dig('uuid')
|
||||||
|
|
||||||
|
submitter.email = Submissions.normalize_email(attrs[:email]) if attrs.key?(:email)
|
||||||
|
|
||||||
|
if attrs.key?(:phone)
|
||||||
|
submitter.phone = attrs[:phone].to_s.gsub(/[^0-9+]/, '')
|
||||||
|
elsif values[phone_field_uuid].present?
|
||||||
|
submitter.phone = values[phone_field_uuid].to_s.gsub(/[^0-9+]/, '')
|
||||||
|
end
|
||||||
|
|
||||||
|
values = values.except(phone_field_uuid)
|
||||||
|
|
||||||
|
submitter.values = submitter.values.merge(values) if values.present?
|
||||||
|
submitter.completed_at = attrs[:completed] ? Time.current : submitter.completed_at
|
||||||
|
submitter.metadata = attrs[:metadata] if attrs.key?(:metadata)
|
||||||
|
|
||||||
|
assign_external_id(submitter, attrs)
|
||||||
assign_preferences(submitter, attrs)
|
assign_preferences(submitter, attrs)
|
||||||
|
|
||||||
submitter
|
submitter
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def assign_external_id(submitter, attrs)
|
||||||
|
submitter.external_id = attrs[:application_key] if attrs.key?(:application_key)
|
||||||
|
submitter.external_id = attrs[:external_id] if attrs.key?(:external_id)
|
||||||
|
|
||||||
|
submitter
|
||||||
|
end
|
||||||
|
|
||||||
def assign_submission_fields(submission)
|
def assign_submission_fields(submission)
|
||||||
submission.template_fields ||= submission.template.fields
|
submission.template_fields ||= submission.template.fields
|
||||||
submission.template_schema ||= submission.template.schema
|
submission.template_schema ||= submission.template.schema
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user