mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
# frozen_string_literal: true
|
|
|
|
class SubmissionsResendEmailController < ApplicationController
|
|
load_and_authorize_resource :submission
|
|
|
|
before_action do
|
|
authorize!(:manage, :resend_all)
|
|
authorize!(:update, @submission)
|
|
end
|
|
|
|
def create
|
|
submitters = @submission.submitters.reject(&:completed_at?).select { |s| s.email.present? && !s.declined_at? }
|
|
|
|
if Wabosign.multitenant?
|
|
recent_submitter_ids =
|
|
SubmissionEvent.where(submitter_id: submitters.map(&:id),
|
|
event_type: 'send_email',
|
|
created_at: 10.hours.ago..Time.current).pluck(:submitter_id).to_set
|
|
|
|
submitters = submitters.reject { |s| recent_submitter_ids.include?(s.id) }
|
|
end
|
|
|
|
submitters.each do |submitter|
|
|
SendSubmitterInvitationEmailJob.perform_async('submitter_id' => submitter.id)
|
|
|
|
submitter.sent_at ||= Time.current
|
|
submitter.save!
|
|
end
|
|
|
|
notice =
|
|
if submitters.empty?
|
|
I18n.t('email_has_been_sent_already')
|
|
else
|
|
I18n.t('emails_have_been_sent_to_n_recipients', count: submitters.size)
|
|
end
|
|
|
|
redirect_back(fallback_location: submission_path(@submission), notice:)
|
|
end
|
|
end
|