diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index 3d73410d..31fc5746 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -82,6 +82,8 @@ class StartFormController < ApplicationController template_submitters: template.submitters, source: :link) + submitter.account_id = submitter.submission.account_id + submitter end diff --git a/app/models/submitter.rb b/app/models/submitter.rb index 2a9ef7f1..96e01738 100644 --- a/app/models/submitter.rb +++ b/app/models/submitter.rb @@ -20,15 +20,17 @@ # values :text not null # created_at :datetime not null # updated_at :datetime not null +# account_id :bigint # external_id :string # submission_id :bigint not null # # Indexes # -# index_submitters_on_email (email) -# index_submitters_on_external_id (external_id) -# index_submitters_on_slug (slug) UNIQUE -# index_submitters_on_submission_id (submission_id) +# index_submitters_on_account_id_and_id (account_id,id) +# index_submitters_on_email (email) +# index_submitters_on_external_id (external_id) +# index_submitters_on_slug (slug) UNIQUE +# index_submitters_on_submission_id (submission_id) # # Foreign Keys # diff --git a/db/migrate/20240816064633_add_account_id_to_submitters.rb b/db/migrate/20240816064633_add_account_id_to_submitters.rb new file mode 100644 index 00000000..cb826ac4 --- /dev/null +++ b/db/migrate/20240816064633_add_account_id_to_submitters.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddAccountIdToSubmitters < ActiveRecord::Migration[7.1] + def change + add_reference :submitters, :account, index: false, null: true + + add_index :submitters, %i[account_id id] + end +end diff --git a/db/schema.rb b/db/schema.rb index 89a48c9e..985ae0f8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_08_01_125558) do +ActiveRecord::Schema[7.1].define(version: 2024_08_16_064633) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -243,6 +243,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_01_125558) do t.string "external_id" t.text "preferences", null: false t.text "metadata", null: false + t.bigint "account_id" + t.index ["account_id", "id"], name: "index_submitters_on_account_id_and_id" t.index ["email"], name: "index_submitters_on_email" t.index ["external_id"], name: "index_submitters_on_external_id" t.index ["slug"], name: "index_submitters_on_slug", unique: true diff --git a/lib/submissions.rb b/lib/submissions.rb index b020152c..f8ca8e40 100644 --- a/lib/submissions.rb +++ b/lib/submissions.rb @@ -67,6 +67,7 @@ module Submissions submission.submitters.new(email: normalize_email(email), uuid: template.submitters.first['uuid'], + account_id: user.account_id, preferences:, sent_at: mark_as_sent ? Time.current : nil) diff --git a/lib/submissions/create_from_submitters.rb b/lib/submissions/create_from_submitters.rb index 9cbab22d..1eae90e2 100644 --- a/lib/submissions/create_from_submitters.rb +++ b/lib/submissions/create_from_submitters.rb @@ -155,16 +155,14 @@ module Submissions 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') + phone_field_uuid = find_phone_field(submission, values)&.dig('uuid') submitter = submission.submitters.new( email:, phone: (attrs[:phone] || values[phone_field_uuid]).to_s.gsub(/[^0-9+]/, ''), name: attrs[:name], + account_id: user.account_id, external_id: attrs[:external_id].presence || attrs[:application_key], completed_at: attrs[:completed].present? ? Time.current : nil, values: values.except(phone_field_uuid), @@ -183,6 +181,12 @@ module Submissions submitter end + def find_phone_field(submission, values) + (submission.template_fields || submission.template.fields).find do |f| + values[f['uuid']].present? && f['type'] == 'phone' + end + end + def assign_completed_attributes(submitter) submitter.values = Submitters::SubmitValues.merge_default_values(submitter) submitter.values = Submitters::SubmitValues.merge_formula_values(submitter)