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