From 15e60fc5e7ca5f17024d933b2c6f788705347775 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 14 Jun 2024 12:19:13 +0300 Subject: [PATCH] add emails copy toggle --- .../templates_preferences_controller.rb | 14 +++++++++++-- app/jobs/process_submitter_completion_job.rb | 20 ++++++++++++------- app/views/templates_preferences/show.html.erb | 8 +++++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/app/controllers/templates_preferences_controller.rb b/app/controllers/templates_preferences_controller.rb index ac3b2857..a2da8f63 100644 --- a/app/controllers/templates_preferences_controller.rb +++ b/app/controllers/templates_preferences_controller.rb @@ -9,6 +9,7 @@ class TemplatesPreferencesController < ApplicationController authorize!(:update, @template) @template.preferences = @template.preferences.merge(template_params[:preferences]) + @template.preferences = @template.preferences.reject { |_, v| v.is_a?(String) && v.blank? } @template.save! head :ok @@ -19,7 +20,16 @@ class TemplatesPreferencesController < ApplicationController def template_params params.require(:template).permit( preferences: %i[bcc_completed request_email_subject request_email_body - documents_copy_email_subject documents_copy_email_body] - ) + documents_copy_email_subject documents_copy_email_body + documents_copy_email_enabled] + ).tap do |attrs| + attrs[:preferences] = attrs[:preferences].transform_values do |value| + if %w[true false].include?(value) + value == 'true' + else + value + end + end + end end end diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index 1f2b740d..7583a8f8 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -33,19 +33,25 @@ class ProcessSubmitterCompletionJob < ApplicationJob SubmitterMailer.completed_email(submitter, user).deliver_later! end - bcc = submission.preferences['bcc_completed'].presence || - submission.template.preferences['bcc_completed'].presence || - submission.account.account_configs - .find_by(key: AccountConfig::BCC_EMAILS)&.value - - bcc.to_s.scan(User::EMAIL_REGEXP).each do |to| + build_bcc_addresses(submission).each do |to| SubmitterMailer.completed_email(submitter, user, to:).deliver_later! end end to = build_to_addresses(submitter) - SubmitterMailer.documents_copy_email(submitter, to:).deliver_later! if to.present? + return if to.blank? || submitter.template.preferences['documents_copy_email_enabled'] == false + + SubmitterMailer.documents_copy_email(submitter, to:).deliver_later! + end + + def build_bcc_addresses(submission) + bcc = submission.preferences['bcc_completed'].presence || + submission.template.preferences['bcc_completed'].presence || + submission.account.account_configs + .find_by(key: AccountConfig::BCC_EMAILS)&.value + + bcc.to_s.scan(User::EMAIL_REGEXP) end def build_to_addresses(submitter) diff --git a/app/views/templates_preferences/show.html.erb b/app/views/templates_preferences/show.html.erb index c2aa251a..fd68ca8a 100644 --- a/app/views/templates_preferences/show.html.erb +++ b/app/views/templates_preferences/show.html.erb @@ -82,7 +82,7 @@
<%= form_for @template, url: template_preferences_path(@template), method: :post, html: { autocomplete: 'off', class: 'mt-1' } do |f| %> - <%= f.fields_for :preferences, Struct.new(:documents_copy_email_subject, :documents_copy_email_body).new(*(@template.preferences.values_at('documents_copy_email_subject', 'documents_copy_email_body').compact_blank.presence || AccountConfigs.find_or_initialize_for_key(current_account, AccountConfig::SUBMITTER_DOCUMENTS_COPY_EMAIL_KEY).value.values_at('subject', 'body'))) do |ff| %> + <%= f.fields_for :preferences, Struct.new(:documents_copy_email_subject, :documents_copy_email_body, :documents_copy_email_enabled).new(*(@template.preferences.values_at('documents_copy_email_subject', 'documents_copy_email_body').compact_blank.presence || AccountConfigs.find_or_initialize_for_key(current_account, AccountConfig::SUBMITTER_DOCUMENTS_COPY_EMAIL_KEY).value.values_at('subject', 'body')), @template.preferences['documents_copy_email_enabled']) do |ff| %>
<%= ff.label :documents_copy_email_subject, 'Email subject', class: 'label' %> <%= ff.text_field :documents_copy_email_subject, required: true, class: 'base-input', dir: 'auto' %> @@ -98,6 +98,12 @@ <%= ff.text_area :documents_copy_email_body, required: true, class: 'base-input w-full py-2', dir: 'auto' %>
+
+ + Send emails automatically on completion + + <%= ff.check_box :documents_copy_email_enabled, { checked: ff.object.documents_copy_email_enabled != false, class: 'toggle', onchange: 'this.form.requestSubmit()' }, 'true', 'false' %> +
<% end %>
<%= f.button button_title(title: 'Save', disabled_with: 'Saving'), class: 'base-button' %>