add source to submissions
This commit is contained in:
+1
-1
@@ -27,7 +27,7 @@ Lint/MissingSuper:
|
||||
Enabled: false
|
||||
|
||||
Metrics/MethodLength:
|
||||
Max: 20
|
||||
Max: 25
|
||||
Exclude:
|
||||
- 'db/migrate/**'
|
||||
|
||||
|
||||
@@ -9,11 +9,13 @@ module Api
|
||||
if params[:emails].present?
|
||||
Submissions.create_from_emails(template:,
|
||||
user: current_user,
|
||||
source: :api,
|
||||
send_email: params[:send_email] != 'false',
|
||||
emails: params[:emails])
|
||||
else
|
||||
Submissions.create_from_submitters(template:,
|
||||
user: current_user,
|
||||
source: :api,
|
||||
send_email: params[:send_email] != 'false',
|
||||
submissions_attrs: submissions_params[:submission])
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ class StartFormController < ApplicationController
|
||||
ua: request.user_agent
|
||||
)
|
||||
|
||||
@submitter.submission ||= Submission.new(template: @template)
|
||||
@submitter.submission ||= Submission.new(template: @template, source: :link)
|
||||
|
||||
if @submitter.save
|
||||
redirect_to submit_form_path(@submitter.slug)
|
||||
|
||||
@@ -19,11 +19,13 @@ class SubmissionsController < ApplicationController
|
||||
if params[:emails].present?
|
||||
Submissions.create_from_emails(template: @template,
|
||||
user: current_user,
|
||||
source: :invite,
|
||||
send_email: params[:send_email] == '1',
|
||||
emails: params[:emails])
|
||||
else
|
||||
Submissions.create_from_submitters(template: @template,
|
||||
user: current_user,
|
||||
source: :invite,
|
||||
send_email: params[:send_email] == '1',
|
||||
submissions_attrs: submissions_params[:submission].to_h.values)
|
||||
end
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# deleted_at :datetime
|
||||
# source :text not null
|
||||
# template_fields :text
|
||||
# template_schema :text
|
||||
# template_submitters :text
|
||||
@@ -35,5 +36,14 @@ class Submission < ApplicationRecord
|
||||
serialize :template_schema, JSON
|
||||
serialize :template_submitters, JSON
|
||||
|
||||
attribute :source, :string, default: 'link'
|
||||
|
||||
scope :active, -> { where(deleted_at: nil) }
|
||||
|
||||
enum :source, {
|
||||
invite: 'invite',
|
||||
api: 'api',
|
||||
embed: 'embed',
|
||||
link: 'link'
|
||||
}, scope: false, prefix: true
|
||||
end
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddSourceToSubmissions < ActiveRecord::Migration[7.0]
|
||||
class MigrationSubmission < ApplicationRecord
|
||||
self.table_name = 'submissions'
|
||||
end
|
||||
|
||||
def up
|
||||
add_column :submissions, :source, :text
|
||||
|
||||
MigrationSubmission.where(source: nil).update_all(source: :invite)
|
||||
|
||||
change_column_null :submissions, :source, false
|
||||
end
|
||||
|
||||
def down
|
||||
drop_column :submissions, :source
|
||||
end
|
||||
end
|
||||
+2
-1
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.0].define(version: 2023_08_03_200825) do
|
||||
ActiveRecord::Schema[7.0].define(version: 2023_08_05_124454) do
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
||||
@@ -80,6 +80,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_08_03_200825) do
|
||||
t.text "template_fields"
|
||||
t.text "template_schema"
|
||||
t.text "template_submitters"
|
||||
t.text "source", null: false
|
||||
t.index ["created_by_user_id"], name: "index_submissions_on_created_by_user_id"
|
||||
t.index ["template_id"], name: "index_submissions_on_template_id"
|
||||
end
|
||||
|
||||
+9
-6
@@ -11,21 +11,22 @@ module Submissions
|
||||
submission.save!
|
||||
end
|
||||
|
||||
def create_from_emails(template:, user:, emails:, send_email: false)
|
||||
def create_from_emails(template:, user:, emails:, source:, send_email: false)
|
||||
emails = emails.to_s.scan(User::EMAIL_REGEXP)
|
||||
|
||||
emails.map do |email|
|
||||
submission = template.submissions.new(created_by_user: user)
|
||||
submission.submitters.new(email:, uuid: template.submitters.first['uuid'],
|
||||
submission = template.submissions.new(created_by_user: user, source:)
|
||||
submission.submitters.new(email:,
|
||||
uuid: template.submitters.first['uuid'],
|
||||
sent_at: send_email ? Time.current : nil)
|
||||
|
||||
submission.tap(&:save!)
|
||||
end
|
||||
end
|
||||
|
||||
def create_from_submitters(template:, user:, submissions_attrs:, send_email: false)
|
||||
def create_from_submitters(template:, user:, submissions_attrs:, source:, send_email: false)
|
||||
submissions_attrs.map do |attrs|
|
||||
submission = template.submissions.new(created_by_user: user)
|
||||
submission = template.submissions.new(created_by_user: user, source:)
|
||||
|
||||
attrs[:submitters].each_with_index do |submitter_attrs, index|
|
||||
uuid =
|
||||
@@ -35,7 +36,9 @@ module Submissions
|
||||
|
||||
next if uuid.blank?
|
||||
|
||||
submission.submitters.new(email: submitter_attrs[:email], uuid:, sent_at: send_email ? Time.current : nil)
|
||||
submission.submitters.new(email: submitter_attrs[:email],
|
||||
sent_at: send_email ? Time.current : nil,
|
||||
uuid:)
|
||||
end
|
||||
|
||||
submission.tap(&:save!)
|
||||
|
||||
Reference in New Issue
Block a user