fix refactor expire at
This commit is contained in:
@@ -15,6 +15,7 @@ module ReplaceEmailVariables
|
||||
SUBMITTER_SLUG = /\{+submitter\.slug\}+/i
|
||||
SUBMISSION_LINK = /\{+submission\.link\}+/i
|
||||
SUBMISSION_ID = /\{+submission\.id\}+/i
|
||||
SUBMISSION_EXPIRE_AT = /\{+submission\.expire_at\}+/i
|
||||
SUBMITTERS = /\{+(?:submission\.)?submitters\}+/i
|
||||
SUBMITTERS_N_EMAIL = /\{+submitters\[(?<index>\d+)\]\.email\}+/i
|
||||
SUBMITTERS_N_NAME = /\{+submitters\[(?<index>\d+)\]\.name\}+/i
|
||||
@@ -48,6 +49,13 @@ module ReplaceEmailVariables
|
||||
text = replace(text, SENDER_NAME, html_escape:) { submitter.submission.created_by_user&.full_name }
|
||||
text = replace(text, SENDER_FIRST_NAME, html_escape:) { submitter.submission.created_by_user&.first_name }
|
||||
|
||||
text = replace(text, SUBMISSION_EXPIRE_AT, html_escape:) do
|
||||
if submitter.submission.expire_at
|
||||
I18n.l(submitter.submission.expire_at.in_time_zone(submitter.submission.account.timezone),
|
||||
format: :short, locale: submitter.submission.account.locale)
|
||||
end
|
||||
end
|
||||
|
||||
text = replace(text, SUBMITTERS_N_NAME, html_escape:) do |match|
|
||||
build_submitters_n_field(submitter.submission, match[:index].to_i - 1, :name)
|
||||
end
|
||||
|
||||
+3
-14
@@ -59,11 +59,13 @@ module Submissions
|
||||
def create_from_emails(template:, user:, emails:, source:, mark_as_sent: false, params: {})
|
||||
preferences = Submitters.normalize_preferences(user.account, user, params)
|
||||
|
||||
expire_at = params[:expire_at].presence || Templates.build_default_expire_at(template)
|
||||
|
||||
parse_emails(emails, user).uniq.map do |email|
|
||||
submission = template.submissions.new(created_by_user: user,
|
||||
account_id: user.account_id,
|
||||
source:,
|
||||
expire_at: params[:expire_at].presence || build_default_expire_at(template),
|
||||
expire_at:,
|
||||
template_submitters: template.submitters)
|
||||
|
||||
submission.submitters.new(email: normalize_email(email),
|
||||
@@ -208,17 +210,4 @@ module Submissions
|
||||
|
||||
Submissions::GenerateCombinedAttachment.call(submission.submitters.completed.order(:completed_at).last)
|
||||
end
|
||||
|
||||
def build_default_expire_at(template)
|
||||
default_expire_at_duration = template.preferences['default_expire_at_duration'].presence
|
||||
default_expire_at = template.preferences['default_expire_at'].presence
|
||||
|
||||
return if default_expire_at_duration.blank?
|
||||
|
||||
if default_expire_at_duration == 'specified_date' && default_expire_at.present?
|
||||
Time.zone.parse(default_expire_at)
|
||||
elsif Template::EXPIRATION_DURATIONS[default_expire_at_duration]
|
||||
Time.current.in_time_zone(template.account.timezone) + Template::EXPIRATION_DURATIONS[default_expire_at_duration]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ module Submissions
|
||||
|
||||
set_submission_preferences = submission_preferences.slice('send_email', 'bcc_completed')
|
||||
set_submission_preferences['send_email'] = true if params['send_completed_email']
|
||||
expire_at = attrs[:expire_at] || Submissions.build_default_expire_at(template)
|
||||
expire_at = attrs[:expire_at] || Templates.build_default_expire_at(template)
|
||||
|
||||
submission = template.submissions.new(created_by_user: user, source:,
|
||||
account_id: user.account_id,
|
||||
|
||||
@@ -1,6 +1,25 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Templates
|
||||
EXPIRATION_DURATIONS = {
|
||||
one_day: 1.day,
|
||||
two_days: 2.days,
|
||||
three_days: 3.days,
|
||||
four_days: 4.days,
|
||||
five_days: 5.days,
|
||||
six_days: 6.days,
|
||||
seven_days: 7.days,
|
||||
eight_days: 8.days,
|
||||
nine_days: 9.days,
|
||||
ten_days: 10.days,
|
||||
two_weeks: 14.days,
|
||||
three_weeks: 21.days,
|
||||
four_weeks: 28.days,
|
||||
one_month: 1.month,
|
||||
two_months: 2.months,
|
||||
three_months: 3.months
|
||||
}.with_indifferent_access.freeze
|
||||
|
||||
module_function
|
||||
|
||||
def build_field_areas_index(fields)
|
||||
@@ -30,4 +49,17 @@ module Templates
|
||||
item['linked_to_uuid'].blank? && item['is_requester'].blank? && item['email'].blank?
|
||||
end
|
||||
end
|
||||
|
||||
def build_default_expire_at(template)
|
||||
default_expire_at_duration = template.preferences['default_expire_at_duration'].presence
|
||||
default_expire_at = template.preferences['default_expire_at'].presence
|
||||
|
||||
return if default_expire_at_duration.blank?
|
||||
|
||||
if default_expire_at_duration == 'specified_date' && default_expire_at.present?
|
||||
Time.zone.parse(default_expire_at)
|
||||
elsif EXPIRATION_DURATIONS[default_expire_at_duration]
|
||||
Time.current + EXPIRATION_DURATIONS[default_expire_at_duration]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user