fix refactor expire at

This commit is contained in:
Pete Matsyburka
2025-05-10 13:03:52 +03:00
parent 7b6fc7d06f
commit 050224a10d
13 changed files with 84 additions and 49 deletions
+8
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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,
+32
View File
@@ -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