diff --git a/app/mailers/dossier_mailer.rb b/app/mailers/dossier_mailer.rb
index a217f4d16..36d4bd17d 100644
--- a/app/mailers/dossier_mailer.rb
+++ b/app/mailers/dossier_mailer.rb
@@ -134,7 +134,8 @@ class DossierMailer < ApplicationMailer
def default_i18n_subject(interpolations = {})
if interpolations[:state]
mailer_scope = self.class.mailer_name.tr('/', '.')
- I18n.t("subject_#{interpolations[:state]}", interpolations.merge(scope: [mailer_scope, action_name]))
+ state = interpolations[:state].in?(Dossier::TERMINE) ? 'termine' : interpolations[:state]
+ I18n.t("subject_#{state}", interpolations.merge(scope: [mailer_scope, action_name]))
else
super
end
diff --git a/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml b/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml
index 62b0156ff..485757f6d 100644
--- a/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml
+++ b/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml
@@ -4,7 +4,10 @@
Bonjour,
%p
- = t('.header_en_construction', count: @dossiers.count)
+ - if @state == Dossier.states.fetch(:en_construction)
+ = t('.header_en_construction', count: @dossiers.count)
+ - else
+ = t('.header_termine', count: @dossiers.count)
%ul
- @dossiers.each do |d|
%li
@@ -13,5 +16,7 @@
%p
- if @state == Dossier.states.fetch(:en_construction)
= sanitize(t('.footer_en_construction', count: @dossiers.count))
+ - else
+ = sanitize(t('.footer_termine', count: @dossiers.count))
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml b/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml
index efe0c668d..83455024a 100644
--- a/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml
+++ b/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml
@@ -4,7 +4,10 @@
Bonjour,
%p
- = t('.header_en_construction', count: @dossiers.count)
+ - if @state == Dossier.states.fetch(:en_construction)
+ = t('.header_en_construction', count: @dossiers.count)
+ - else
+ = t('.header_termine', count: @dossiers.count)
%ul
- @dossiers.each do |d|
%li
diff --git a/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml b/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml
index e3d24481c..c1bd54250 100644
--- a/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml
@@ -4,9 +4,18 @@ fr:
subject_en_construction:
one: Un dossier en construction va bientôt être supprimé
other: Des dossiers en construction vont bientôt être supprimés
+ subject_termine:
+ one: Un dossier dont le traitement est terminé va bientôt être supprimé
+ other: Des dossiers dont le traitement est terminé vont bientôt être supprimés
header_en_construction:
one: "Le dossier en construction suivant sera bientôt automatiquement supprimé :"
other: "Les dossiers en construction suivant seront bientôt automatiquement supprimés :"
+ header_termine:
+ one: "Le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :"
+ other: "Les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :"
footer_en_construction:
one: "Vous avez un mois pour commencer l’instruction du dossier."
other: "Vous avez un mois pour commencer l’instruction des dossiers."
+ footer_termine:
+ one: "Vous avez un mois pour archiver le dossier."
+ other: "Vous avez un mois pour archiver les dossiers."
diff --git a/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml b/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml
index e81cad44d..3a0098335 100644
--- a/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml
@@ -4,9 +4,15 @@ fr:
subject_en_construction:
one: Un dossier en construction va bientôt être supprimé
other: Des dossiers en construction vont bientôt être supprimés
+ subject_termine:
+ one: Un dossier dont le traitement est terminé va bientôt être supprimé
+ other: Des dossiers dont le traitement est terminé vont bientôt être supprimés
header_en_construction:
one: "Afin de limiter la conservation de vos données personnelles, le dossier en construction suivant sera bientôt automatiquement supprimé :"
other: "Afin de limiter la conservation de vos données personnelles, les dossiers en construction suivant seront bientôt automatiquement supprimés :"
+ header_termine:
+ one: "Afin de limiter la conservation de vos données personnelles, le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :"
+ other: "Afin de limiter la conservation de vos données personnelles, les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :"
footer:
one: "Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire."
other: "Vous pouvez retrouver vos dossiers pendant encore un mois. Vous n’avez rien à faire."
diff --git a/spec/mailers/dossier_mailer_spec.rb b/spec/mailers/dossier_mailer_spec.rb
index 7ba807f9a..d7ab78474 100644
--- a/spec/mailers/dossier_mailer_spec.rb
+++ b/spec/mailers/dossier_mailer_spec.rb
@@ -102,6 +102,19 @@ RSpec.describe DossierMailer, type: :mailer do
it { expect(subject.body).to include(dossier.procedure.libelle) }
it { expect(subject.body).to include("nous nous excusons de la gène occasionnée") }
end
+
+ describe 'termine' do
+ let(:dossier) { create(:dossier, :accepte) }
+ let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier, :expired) }
+
+ subject { described_class.notify_automatic_deletion_to_user([deleted_dossier], dossier.user.email) }
+
+ it { expect(subject.to).to eq([dossier.user.email]) }
+ it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement") }
+ it { expect(subject.body).to include("n° #{dossier.id} ") }
+ it { expect(subject.body).to include(dossier.procedure.libelle) }
+ it { expect(subject.body).not_to include("nous nous excusons de la gène occasionnée") }
+ end
end
describe '.notify_automatic_deletion_to_administration' do
@@ -126,6 +139,18 @@ RSpec.describe DossierMailer, type: :mailer do
it { expect(subject.body).to include("PDF") }
it { expect(subject.body).to include("Vous avez un mois pour commencer l’instruction du dossier.") }
end
+
+ describe 'termine' do
+ let(:dossier) { create(:dossier, :accepte) }
+
+ subject { described_class.notify_near_deletion_to_administration([dossier], dossier.user.email) }
+
+ it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") }
+ it { expect(subject.body).to include("n° #{dossier.id} ") }
+ it { expect(subject.body).to include(dossier.procedure.libelle) }
+ it { expect(subject.body).to include("PDF") }
+ it { expect(subject.body).to include("Vous avez un mois pour archiver le dossier.") }
+ end
end
describe '.notify_near_deletion_to_user' do
@@ -141,6 +166,19 @@ RSpec.describe DossierMailer, type: :mailer do
it { expect(subject.body).to include("PDF") }
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire.") }
end
+
+ describe 'termine' do
+ let(:dossier) { create(:dossier, :accepte) }
+
+ subject { described_class.notify_near_deletion_to_user([dossier], dossier.user.email) }
+
+ it { expect(subject.to).to eq([dossier.user.email]) }
+ it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") }
+ it { expect(subject.body).to include("n° #{dossier.id} ") }
+ it { expect(subject.body).to include(dossier.procedure.libelle) }
+ it { expect(subject.body).to include("PDF") }
+ it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire.") }
+ end
end
describe '.notify_groupe_instructeur_changed_to_instructeur' do
diff --git a/spec/mailers/previews/dossier_mailer_preview.rb b/spec/mailers/previews/dossier_mailer_preview.rb
index fdda28d6c..c7e0a9e2d 100644
--- a/spec/mailers/previews/dossier_mailer_preview.rb
+++ b/spec/mailers/previews/dossier_mailer_preview.rb
@@ -28,6 +28,14 @@ class DossierMailerPreview < ActionMailer::Preview
DossierMailer.notify_near_deletion_to_administration([dossier_en_construction, dossier_en_construction], administration_email)
end
+ def notify_termine_near_deletion_to_user
+ DossierMailer.notify_near_deletion_to_user([dossier_accepte], usager_email)
+ end
+
+ def notify_termine_near_deletion_to_administration
+ DossierMailer.notify_near_deletion_to_administration([dossier_accepte, dossier_accepte], administration_email)
+ end
+
def notify_brouillon_deletion
DossierMailer.notify_brouillon_deletion([dossier.hash_for_deletion_mail], usager_email)
end
@@ -83,6 +91,10 @@ class DossierMailerPreview < ActionMailer::Preview
Dossier.new(id: 47882, state: :en_construction, procedure: procedure, user: User.new(email: "usager@example.com"))
end
+ def dossier_accepte
+ Dossier.new(id: 47882, state: :accepte, procedure: procedure, user: User.new(email: "usager@example.com"))
+ end
+
def procedure
Procedure.new(id: 1234, libelle: 'Dotation d’Équipement des Territoires Ruraux - Exercice 2019', service: service, logo: Rack::Test::UploadedFile.new("./spec/fixtures/files/logo_test_procedure.png", 'image/png'), auto_archive_on: Time.zone.today + Dossier::REMAINING_DAYS_BEFORE_CLOSING.days)
end