From 33142966dc07d48804bdb5eb15801ba3879fc63f Mon Sep 17 00:00:00 2001 From: DocuSeal Date: Sat, 21 Oct 2023 13:06:59 +0300 Subject: [PATCH] allow to resubmit form via shared link --- app/controllers/start_form_controller.rb | 11 ++++------- app/views/submit_form/completed.html.erb | 12 +++++++++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index 75e4d0be..d79b7289 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -13,12 +13,9 @@ class StartFormController < ApplicationController end def update - @submitter = Submitter.new(email: submitter_params[:email]) - - if params[:resubmit].blank? - @submitter = Submitter.where(submission: @template.submissions.where(deleted_at: nil)) - .find_by(email: submitter_params[:email]) || @submitter - end + @submitter = Submitter.where(submission: @template.submissions.where(deleted_at: nil)) + .then { |rel| params[:resubmit].present? ? rel.where(completed_at: nil) : rel } + .find_or_initialize_by(**submitter_params.compact_blank) if @submitter.completed_at? redirect_to start_form_completed_path(@template.slug, email: submitter_params[:email]) @@ -50,7 +47,7 @@ class StartFormController < ApplicationController private def submitter_params - params.require(:submitter).permit(:email).tap do |attrs| + params.require(:submitter).permit(:email, :phone).tap do |attrs| attrs[:email] = Submissions.normalize_email(attrs[:email]) end end diff --git a/app/views/submit_form/completed.html.erb b/app/views/submit_form/completed.html.erb index c85cdae3..dfb67ed1 100644 --- a/app/views/submit_form/completed.html.erb +++ b/app/views/submit_form/completed.html.erb @@ -19,7 +19,11 @@
<% if Accounts.can_send_emails?(@submitter.submission.template.account) && @submitter.email.present? %> <%= button_to button_title(title: 'Send copy to Email', disabled_with: 'Sending', icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> -
OR
+ <% if @submitter.submission.template.submitters.size != 1 %> +
OR
+ <% else %> +
+ <% end %> <% end %> @@ -32,6 +36,12 @@
+ <% if @submitter.submission.template.submitters.size == 1 %> +
OR
+
+ <%= button_to button_title(title: 'Resubmit', disabled_with: 'Resubmit', icon: svg_icon('reload', class: 'w-6 h-6')), start_form_path(@submitter.submission.template.slug), params: { submitter: { email: @submitter.email, phone: @submitter.phone }, resubmit: true }, method: :put, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> +
+ <% end %> <%= render 'shared/attribution', link_path: '/start' %>