diff --git a/lib/submissions.rb b/lib/submissions.rb index 1c35b0c2..1e7f9e44 100644 --- a/lib/submissions.rb +++ b/lib/submissions.rb @@ -88,17 +88,19 @@ module Submissions ) end - def send_signature_requests(submissions) - submissions.each do |submission| + def send_signature_requests(submissions, delay: nil) + submissions.each_with_index do |submission, index| + delay_seconds = (delay + index).seconds if delay + submitters = submission.submitters.reject(&:completed_at?) if submission.submitters_order_preserved? first_submitter = submission.template_submitters.filter_map { |s| submitters.find { |e| e.uuid == s['uuid'] } }.first - Submitters.send_signature_requests([first_submitter]) if first_submitter + Submitters.send_signature_requests([first_submitter], delay_seconds:) if first_submitter else - Submitters.send_signature_requests(submitters) + Submitters.send_signature_requests(submitters, delay_seconds:) end end end diff --git a/lib/submitters.rb b/lib/submitters.rb index 18b2d151..19a44d4c 100644 --- a/lib/submitters.rb +++ b/lib/submitters.rb @@ -94,12 +94,16 @@ module Submitters preferences end - def send_signature_requests(submitters) - submitters.each do |submitter| + def send_signature_requests(submitters, delay_seconds: nil) + submitters.each_with_index do |submitter, index| next if submitter.email.blank? next if submitter.preferences['send_email'] == false - SendSubmitterInvitationEmailJob.perform_async('submitter_id' => submitter.id) + if delay_seconds + SendSubmitterInvitationEmailJob.perform_in((delay_seconds + index).seconds, 'submitter_id' => submitter.id) + else + SendSubmitterInvitationEmailJob.perform_async('submitter_id' => submitter.id) + end end end