diff --git a/app/mailers/dossier_mailer.rb b/app/mailers/dossier_mailer.rb
index 96ae6b1b3..b3fcd9a94 100644
--- a/app/mailers/dossier_mailer.rb
+++ b/app/mailers/dossier_mailer.rb
@@ -29,20 +29,6 @@ class DossierMailer < ApplicationMailer
end
end
- def notify_deletion_to_user(deleted_dossier, to_email)
- @deleted_dossier = deleted_dossier
- subject = "Votre dossier nº #{@deleted_dossier.dossier_id} a bien été supprimé"
-
- mail(to: to_email, subject: subject)
- end
-
- def notify_deletion_to_administration(deleted_dossier, to_email)
- @deleted_dossier = deleted_dossier
- subject = "Le dossier nº #{@deleted_dossier.dossier_id} a été supprimé à la demande de l'usager"
-
- mail(to: to_email, subject: subject)
- end
-
def notify_revert_to_instruction(dossier)
@dossier = dossier
@service = dossier.procedure.service
@@ -55,40 +41,60 @@ class DossierMailer < ApplicationMailer
end
end
- def notify_brouillon_near_deletion(user, dossiers)
+ def notify_brouillon_near_deletion(dossiers, to_email)
@subject = default_i18n_subject(count: dossiers.count)
@dossiers = dossiers
- mail(to: user.email, subject: @subject)
+ mail(to: to_email, subject: @subject)
end
- def notify_brouillon_deletion(user, dossier_hashes)
+ def notify_brouillon_deletion(dossier_hashes, to_email)
@subject = default_i18n_subject(count: dossier_hashes.count)
@dossier_hashes = dossier_hashes
- mail(to: user.email, subject: @subject)
+ mail(to: to_email, subject: @subject)
end
- def notify_automatic_deletion_to_user(email, dossier_hashes)
- @subject = default_i18n_subject(count: dossier_hashes.count)
- @dossier_hashes = dossier_hashes
+ def notify_deletion_to_user(deleted_dossier, to_email)
+ @subject = default_i18n_subject(dossier_id: deleted_dossier.dossier_id)
+ @deleted_dossier = deleted_dossier
- mail(to: email, subject: @subject)
+ mail(to: to_email, subject: @subject)
end
- def notify_automatic_deletion_to_administration(email, dossier_hashes)
- @subject = default_i18n_subject(count: dossier_hashes.count)
- @dossier_hashes = dossier_hashes
+ def notify_deletion_to_administration(deleted_dossier, to_email)
+ @subject = default_i18n_subject(dossier_id: deleted_dossier.dossier_id)
+ @deleted_dossier = deleted_dossier
- mail(to: email, subject: @subject)
+ mail(to: to_email, subject: @subject)
end
- def notify_en_construction_near_deletion(email, dossiers, for_user)
+ def notify_automatic_deletion_to_user(deleted_dossiers, to_email)
+ @subject = default_i18n_subject(count: deleted_dossiers.count)
+ @deleted_dossiers = deleted_dossiers
+
+ mail(to: to_email, subject: @subject)
+ end
+
+ def notify_automatic_deletion_to_administration(deleted_dossiers, to_email)
+ @subject = default_i18n_subject(count: deleted_dossiers.count)
+ @deleted_dossiers = deleted_dossiers
+
+ mail(to: to_email, subject: @subject)
+ end
+
+ def notify_en_construction_near_deletion_to_user(dossiers, to_email)
@subject = default_i18n_subject(count: dossiers.count)
@dossiers = dossiers
- @for_user = for_user
- mail(to: email, subject: @subject)
+ mail(to: to_email, subject: @subject)
+ end
+
+ def notify_en_construction_near_deletion_to_administration(dossiers, to_email)
+ @subject = default_i18n_subject(count: dossiers.count)
+ @dossiers = dossiers
+
+ mail(to: to_email, subject: @subject)
end
def notify_groupe_instructeur_changed(instructeur, dossier)
diff --git a/app/services/expired_dossiers_deletion_service.rb b/app/services/expired_dossiers_deletion_service.rb
index 1a7383ca9..6129b5331 100644
--- a/app/services/expired_dossiers_deletion_service.rb
+++ b/app/services/expired_dossiers_deletion_service.rb
@@ -18,7 +18,10 @@ class ExpiredDossiersDeletionService
.includes(:user, :procedure)
.group_by(&:user)
.each do |(user, dossiers)|
- DossierMailer.notify_brouillon_near_deletion(user, dossiers).deliver_later
+ DossierMailer.notify_brouillon_near_deletion(
+ dossiers,
+ user.email
+ ).deliver_later
end
dossiers_close_to_expiration.update_all(brouillon_close_to_expiration_notice_sent_at: Time.zone.now)
@@ -33,18 +36,16 @@ class ExpiredDossiersDeletionService
.includes(:user)
.group_by(&:user)
.each do |(user, dossiers)|
- DossierMailer.notify_en_construction_near_deletion(
- user.email,
+ DossierMailer.notify_en_construction_near_deletion_to_user(
dossiers,
- true
+ user.email
).deliver_later
end
- group_by_fonctionnaire_email(dossiers_close_to_expiration).each do |(destinataire, dossiers)|
- DossierMailer.notify_en_construction_near_deletion(
- destinataire,
+ group_by_fonctionnaire_email(dossiers_close_to_expiration).each do |(email, dossiers)|
+ DossierMailer.notify_en_construction_near_deletion_to_administration(
dossiers,
- false
+ email
).deliver_later
end
@@ -58,7 +59,10 @@ class ExpiredDossiersDeletionService
.includes(:user, :procedure)
.group_by(&:user)
.each do |(user, dossiers)|
- DossierMailer.notify_brouillon_deletion(user, dossiers.map(&:hash_for_deletion_mail)).deliver_later
+ DossierMailer.notify_brouillon_deletion(
+ dossiers.map(&:hash_for_deletion_mail),
+ user.email
+ ).deliver_later
end
dossiers_to_remove.each do |dossier|
@@ -70,27 +74,28 @@ class ExpiredDossiersDeletionService
def self.delete_expired_en_construction_and_notify
dossiers_to_remove = Dossier.en_construction_expired
+ dossiers_to_remove.each do |dossier|
+ DeletedDossier.create_from_dossier(dossier)
+ end
+
dossiers_to_remove
.includes(:user)
.group_by(&:user)
.each do |(user, dossiers)|
DossierMailer.notify_automatic_deletion_to_user(
- user.email,
- dossiers.map(&:hash_for_deletion_mail)
+ DeletedDossier.where(dossier_id: dossiers.map(&:id)),
+ user.email
).deliver_later
end
- self.group_by_fonctionnaire_email(dossiers_to_remove).each do |(destinataire, dossiers)|
+ self.group_by_fonctionnaire_email(dossiers_to_remove).each do |(email, dossiers)|
DossierMailer.notify_automatic_deletion_to_administration(
- destinataire,
- dossiers.map(&:hash_for_deletion_mail)
+ DeletedDossier.where(dossier_id: dossiers.map(&:id)),
+ email
).deliver_later
end
- dossiers_to_remove.each do |dossier|
- DeletedDossier.create_from_dossier(dossier)
- dossier.destroy
- end
+ dossiers_to_remove.destroy_all
end
private
diff --git a/app/views/dossier_mailer/notify_automatic_deletion_to_administration.html.haml b/app/views/dossier_mailer/notify_automatic_deletion_to_administration.html.haml
index e466b459b..373b78d11 100644
--- a/app/views/dossier_mailer/notify_automatic_deletion_to_administration.html.haml
+++ b/app/views/dossier_mailer/notify_automatic_deletion_to_administration.html.haml
@@ -3,10 +3,10 @@
%p
Bonjour,
-%p= t('.automatic_dossier_deletion', count: @dossier_hashes.count)
-
-%ul
- - @dossier_hashes.each do |d|
- %li= "n° #{d[:id]} (#{d[:procedure_libelle]})"
+%p
+ = t('.header', count: @deleted_dossiers.count)
+ %ul
+ - @deleted_dossiers.each do |d|
+ %li n° #{d.dossier_id} (#{d.procedure.libelle})
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_automatic_deletion_to_user.html.haml b/app/views/dossier_mailer/notify_automatic_deletion_to_user.html.haml
index 213e26009..8a824675c 100644
--- a/app/views/dossier_mailer/notify_automatic_deletion_to_user.html.haml
+++ b/app/views/dossier_mailer/notify_automatic_deletion_to_user.html.haml
@@ -3,12 +3,12 @@
%p
Bonjour,
-%p= t('.automatic_dossier_deletion', count: @dossier_hashes.count)
+%p
+ = t('.header', count: @deleted_dossiers.count)
+ %ul
+ - @deleted_dossiers.each do |d|
+ %li n° #{d.dossier_id} (#{d.procedure.libelle})
-%ul
- - @dossier_hashes.each do |d|
- %li= "n° #{d[:id]} (#{d[:procedure_libelle]})"
-
-%p= t('.dossier_will_not_be_processed', count: @dossier_hashes.count)
+%p= t('.footer', count: @deleted_dossiers.count)
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_brouillon_deletion.html.haml b/app/views/dossier_mailer/notify_brouillon_deletion.html.haml
index 7a28ec3f7..a621b7009 100644
--- a/app/views/dossier_mailer/notify_brouillon_deletion.html.haml
+++ b/app/views/dossier_mailer/notify_brouillon_deletion.html.haml
@@ -3,10 +3,10 @@
%p
Bonjour,
-%p= t('.automatic_dossier_deletion', count: @dossier_hashes.count)
-
-%ul
- - @dossier_hashes.each do |d|
- %li n° #{d[:id]} (#{d[:procedure_libelle]})
+%p
+ = t('.header', count: @dossier_hashes.count)
+ %ul
+ - @dossier_hashes.each do |d|
+ %li n° #{d[:id]} (#{d[:procedure_libelle]})
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_brouillon_near_deletion.html.haml b/app/views/dossier_mailer/notify_brouillon_near_deletion.html.haml
index fc972ddd0..bce0ad8dc 100644
--- a/app/views/dossier_mailer/notify_brouillon_near_deletion.html.haml
+++ b/app/views/dossier_mailer/notify_brouillon_near_deletion.html.haml
@@ -4,13 +4,11 @@
Bonjour,
%p
- Afin de limiter la conservation de vos données personnelles,
- = t('.automatic_dossier_deletion', count: @dossiers.count)
+ = t('.header', count: @dossiers.count)
%ul
- @dossiers.each do |d|
%li= link_to("n° #{d.id} (#{d.procedure.libelle})", dossier_url(d))
-%p
- #{sanitize(t('.send_your_draft', count: @dossiers.count))}. Et sinon, vous n'avez rien à faire.
+%p= sanitize(t('.footer', count: @dossiers.count))
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_deletion_to_administration.html.haml b/app/views/dossier_mailer/notify_deletion_to_administration.html.haml
index d53e295e5..e64cab4b6 100644
--- a/app/views/dossier_mailer/notify_deletion_to_administration.html.haml
+++ b/app/views/dossier_mailer/notify_deletion_to_administration.html.haml
@@ -1,11 +1,9 @@
-- content_for(:title, "Suppression du dossier n° #{@deleted_dossier.dossier_id}")
+- content_for(:title, "#{@subject}")
%p
Bonjour,
%p
- À la demande de l'usager, le dossier n° #{@deleted_dossier.dossier_id}
- (sur la démarche « #{@deleted_dossier.procedure.libelle} »)
- a été supprimé.
+ = t('.body', dossier_id: @deleted_dossier.dossier_id, procedure: @deleted_dossier.procedure.libelle)
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_deletion_to_user.html.haml b/app/views/dossier_mailer/notify_deletion_to_user.html.haml
index 293994ca1..e64cab4b6 100644
--- a/app/views/dossier_mailer/notify_deletion_to_user.html.haml
+++ b/app/views/dossier_mailer/notify_deletion_to_user.html.haml
@@ -1,11 +1,9 @@
-- content_for(:title, "Suppression du dossier n° #{@deleted_dossier.dossier_id}")
+- content_for(:title, "#{@subject}")
%p
Bonjour,
%p
- Votre dossier n° #{@deleted_dossier.dossier_id}
- (« #{@deleted_dossier.procedure.libelle} ») a bien été supprimé.
- Une trace anonyme de ce traitement sera conservée pour l’administration.
+ = t('.body', dossier_id: @deleted_dossier.dossier_id, procedure: @deleted_dossier.procedure.libelle)
= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_en_construction_near_deletion.html.haml b/app/views/dossier_mailer/notify_en_construction_near_deletion.html.haml
deleted file mode 100644
index 896138408..000000000
--- a/app/views/dossier_mailer/notify_en_construction_near_deletion.html.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-- content_for(:title, "#{@subject}")
-
-%p
- Bonjour,
-
-%p
- - if !@for_user
- Afin de limiter la conservation de vos données personnelles,
-
- = t('.automatic_dossier_deletion', count: @dossiers.count)
-
- %ul
- - @dossiers.each do |d|
- - if !@for_user
- %li
- #{link_to("n° #{d.id} (#{d.procedure.libelle})", dossier_url(d))}. Retrouvez le dossier au format #{link_to("PDF", instructeur_dossier_url(d.procedure, d, format: :pdf))}
- - else
- %li
- #{link_to("n° #{d.id} (#{d.procedure.libelle})", dossier_url(d))}. Retrouvez le dossier au format #{link_to("PDF", dossier_url(d, format: :pdf))}
-
-%p
- - if @for_user
- = sanitize(t('.send_user_draft', count: @dossiers.count))
- - else
- = sanitize(t('.send_other_draft', count: @dossiers.count))
-
-= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_en_construction_near_deletion_to_administration.html.haml b/app/views/dossier_mailer/notify_en_construction_near_deletion_to_administration.html.haml
new file mode 100644
index 000000000..b89f885f9
--- /dev/null
+++ b/app/views/dossier_mailer/notify_en_construction_near_deletion_to_administration.html.haml
@@ -0,0 +1,16 @@
+- content_for(:title, "#{@subject}")
+
+%p
+ Bonjour,
+
+%p
+ = t('.header', count: @dossiers.count)
+ %ul
+ - @dossiers.each do |d|
+ %li
+ #{link_to("n° #{d.id} (#{d.procedure.libelle})", dossier_url(d))}. Retrouvez le dossier au format #{link_to("PDF", instructeur_dossier_url(d.procedure, d, format: :pdf))}
+
+%p
+ = sanitize(t('.footer', count: @dossiers.count))
+
+= render partial: "layouts/mailers/signature"
diff --git a/app/views/dossier_mailer/notify_en_construction_near_deletion_to_user.html.haml b/app/views/dossier_mailer/notify_en_construction_near_deletion_to_user.html.haml
new file mode 100644
index 000000000..30dd62ad6
--- /dev/null
+++ b/app/views/dossier_mailer/notify_en_construction_near_deletion_to_user.html.haml
@@ -0,0 +1,16 @@
+- content_for(:title, "#{@subject}")
+
+%p
+ Bonjour,
+
+%p
+ = t('.header', count: @dossiers.count)
+ %ul
+ - @dossiers.each do |d|
+ %li
+ #{link_to("n° #{d.id} (#{d.procedure.libelle})", dossier_url(d))}. Retrouvez le dossier au format #{link_to("PDF", dossier_url(d, format: :pdf))}
+
+%p
+ = sanitize(t('.footer', count: @dossiers.count))
+
+= render partial: "layouts/mailers/signature"
diff --git a/config/locales/views/dossier_mailer/notify_automatic_deletion_to_administration/fr.yml b/config/locales/views/dossier_mailer/notify_automatic_deletion_to_administration/fr.yml
index c0f77813f..1fcfd6198 100644
--- a/config/locales/views/dossier_mailer/notify_automatic_deletion_to_administration/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_automatic_deletion_to_administration/fr.yml
@@ -4,6 +4,6 @@ fr:
subject:
one: "Un dossier a été supprimé automatiquement"
other: "Des dossiers ont été supprimés automatiquement"
- automatic_dossier_deletion:
+ header:
one: "Le délai maximum de conservation du dossier suivant a été atteint, il a donc été supprimé :"
other: "Le délai maximum de conservation des dossiers suivants a été atteint, ils ont donc été supprimés :"
diff --git a/config/locales/views/dossier_mailer/notify_automatic_deletion_to_user/fr.yml b/config/locales/views/dossier_mailer/notify_automatic_deletion_to_user/fr.yml
index 7f5aef939..0f082b5ab 100644
--- a/config/locales/views/dossier_mailer/notify_automatic_deletion_to_user/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_automatic_deletion_to_user/fr.yml
@@ -4,9 +4,9 @@ fr:
subject:
one: "Un dossier a été supprimé automatiquement"
other: "Des dossiers ont été supprimés automatiquement"
- automatic_dossier_deletion:
+ header:
one: "Le délai maximum de conservation du dossier suivant a été atteint, il a donc été supprimé :"
other: "Le délai maximum de conservation des dossiers suivants a été atteint, ils ont donc été supprimés :"
- dossier_will_not_be_processed:
+ footer:
one: "Le dossier ne sera pas traité, nous nous excusons de la gène occasionnée."
other: "Les dossiers ne seront pas traités, nous nous excusons de la gène occasionnée."
diff --git a/config/locales/views/dossier_mailer/notify_brouillon_deletion/fr.yml b/config/locales/views/dossier_mailer/notify_brouillon_deletion/fr.yml
index 291dffc23..bcb8ce439 100644
--- a/config/locales/views/dossier_mailer/notify_brouillon_deletion/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_brouillon_deletion/fr.yml
@@ -4,6 +4,6 @@ fr:
subject:
one: "Un dossier en brouillon a été supprimé automatiquement"
other: "Des dossiers en brouillon ont été supprimés automatiquement"
- automatic_dossier_deletion:
+ header:
one: "Le délai maximum de conservation du dossier en brouillon suivant a été atteint, il a donc été supprimé :"
other: "Le délai maximum de conservation des dossiers en brouillon suivants a été atteint, ils ont donc été supprimés :"
diff --git a/config/locales/views/dossier_mailer/notify_brouillon_near_deletion/fr.yml b/config/locales/views/dossier_mailer/notify_brouillon_near_deletion/fr.yml
index a3cbf01dc..f4ccef4e0 100644
--- a/config/locales/views/dossier_mailer/notify_brouillon_near_deletion/fr.yml
+++ b/config/locales/views/dossier_mailer/notify_brouillon_near_deletion/fr.yml
@@ -4,9 +4,9 @@ fr:
subject:
one: Un dossier en brouillon va bientôt être supprimé
other: Des dossiers en brouillon vont bientôt être supprimés
- automatic_dossier_deletion:
- one: "le dossier en brouillon suivant sera bientôt automatiquement supprimé :"
- other: "les dossiers en brouillon suivant seront bientôt automatiquement supprimés :"
- send_your_draft:
- one: "Si vous souhaitez toujours déposer ce dossier, vous pouvez retrouver votre brouillon pendant encore un mois"
- other: "Si vous souhaitez toujours déposer ces dossiers, vous pouvez retrouver vos brouillons pendant encore un mois"
+ header:
+ one: "Afin de limiter la conservation de vos données personnelles, le dossier en brouillon suivant sera bientôt automatiquement supprimé :"
+ other: "Afin de limiter la conservation de vos données personnelles, les dossiers en brouillon suivant seront bientôt automatiquement supprimés :"
+ footer:
+ one: "Si vous souhaitez toujours déposer ce dossier, vous pouvez retrouver votre brouillon pendant encore un mois. Et sinon, vous n’avez rien à faire."
+ other: "Si vous souhaitez toujours déposer ces dossiers, vous pouvez retrouver vos brouillons pendant encore un mois. Et sinon, vous n’avez rien à faire."
diff --git a/config/locales/views/dossier_mailer/notify_deletion_to_administration/fr.yml b/config/locales/views/dossier_mailer/notify_deletion_to_administration/fr.yml
new file mode 100644
index 000000000..b31847d64
--- /dev/null
+++ b/config/locales/views/dossier_mailer/notify_deletion_to_administration/fr.yml
@@ -0,0 +1,5 @@
+fr:
+ dossier_mailer:
+ notify_deletion_to_administration:
+ subject: Le dossier nº %{dossier_id} a été supprimé à la demande de l’usager
+ body: À la demande de l’usager, le dossier n° %{dossier_id} (%{procedure}) a été supprimé.
diff --git a/config/locales/views/dossier_mailer/notify_deletion_to_user/fr.yml b/config/locales/views/dossier_mailer/notify_deletion_to_user/fr.yml
new file mode 100644
index 000000000..5d8caecf7
--- /dev/null
+++ b/config/locales/views/dossier_mailer/notify_deletion_to_user/fr.yml
@@ -0,0 +1,5 @@
+fr:
+ dossier_mailer:
+ notify_deletion_to_user:
+ subject: Votre dossier nº %{dossier_id} a bien été supprimé
+ body: Votre dossier n° %{dossier_id} (%{procedure}) a bien été supprimé. Une trace de ce traitement sera conservée pour l’administration.
diff --git a/config/locales/views/dossier_mailer/notify_en_construction_near_deletion/fr.yml b/config/locales/views/dossier_mailer/notify_en_construction_near_deletion/fr.yml
deleted file mode 100644
index 6a4955e0b..000000000
--- a/config/locales/views/dossier_mailer/notify_en_construction_near_deletion/fr.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-fr:
- dossier_mailer:
- notify_en_construction_near_deletion:
- subject:
- one: Un dossier en construction va bientôt être supprimé
- other: Des dossiers en construction vont bientôt être supprimés
- automatic_dossier_deletion:
- one: "le dossier en construction suivant sera bientôt automatiquement supprimé :"
- other: "les dossiers en construction suivant seront bientôt automatiquement supprimés :"
- send_user_draft:
- 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."
- send_other_draft:
- one: "Vous avez un mois pour traiter le dossier."
- other: "Vous avez un mois pour traiter les dossiers."
diff --git a/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_administration/fr.yml b/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_administration/fr.yml
new file mode 100644
index 000000000..43bf63ded
--- /dev/null
+++ b/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_administration/fr.yml
@@ -0,0 +1,12 @@
+fr:
+ dossier_mailer:
+ notify_en_construction_near_deletion_to_administration:
+ subject:
+ one: Un dossier en construction va bientôt être supprimé
+ other: Des dossiers en construction vont bientôt être supprimés
+ header:
+ one: "Le dossier en construction suivant sera bientôt automatiquement supprimé :"
+ other: "Les dossiers en construction suivant seront bientôt automatiquement supprimés :"
+ footer:
+ one: "Vous avez un mois pour commencer l'instruction du dossier."
+ other: "Vous avez un mois pour commencer l'instruction des dossiers."
diff --git a/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_user/fr.yml b/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_user/fr.yml
new file mode 100644
index 000000000..d9c58d97b
--- /dev/null
+++ b/config/locales/views/dossier_mailer/notify_en_construction_near_deletion_to_user/fr.yml
@@ -0,0 +1,12 @@
+fr:
+ dossier_mailer:
+ notify_en_construction_near_deletion_to_user:
+ subject:
+ one: Un dossier en construction va bientôt être supprimé
+ other: Des dossiers en construction vont bientôt être supprimés
+ header:
+ 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 :"
+ 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 4dec70856..c277461c8 100644
--- a/spec/mailers/dossier_mailer_spec.rb
+++ b/spec/mailers/dossier_mailer_spec.rb
@@ -55,8 +55,8 @@ RSpec.describe DossierMailer, type: :mailer do
subject { described_class.notify_deletion_to_administration(deleted_dossier, to_email) }
- it { expect(subject.subject).to eq("Le dossier nº #{deleted_dossier.dossier_id} a été supprimé à la demande de l'usager") }
- it { expect(subject.body).to include("À la demande de l'usager") }
+ it { expect(subject.subject).to eq("Le dossier nº #{deleted_dossier.dossier_id} a été supprimé à la demande de l’usager") }
+ it { expect(subject.body).to include("À la demande de l’usager") }
it { expect(subject.body).to include(deleted_dossier.dossier_id) }
it { expect(subject.body).to include(deleted_dossier.procedure.libelle) }
end
@@ -81,7 +81,7 @@ RSpec.describe DossierMailer, type: :mailer do
@date_suppression = dossier.created_at + duree.months
end
- subject { described_class.notify_brouillon_near_deletion(dossier.user, [dossier]) }
+ subject { described_class.notify_brouillon_near_deletion([dossier], dossier.user.email) }
it { expect(subject.body).to include("n° #{dossier.id} ") }
it { expect(subject.body).to include(dossier.procedure.libelle) }
@@ -90,7 +90,7 @@ RSpec.describe DossierMailer, type: :mailer do
describe '.notify_brouillon_deletion' do
let(:dossier) { create(:dossier) }
- subject { described_class.notify_brouillon_deletion(dossier.user, [dossier.hash_for_deletion_mail]) }
+ subject { described_class.notify_brouillon_deletion([dossier.hash_for_deletion_mail], dossier.user.email) }
it { expect(subject.subject).to eq("Un dossier en brouillon a été supprimé automatiquement") }
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
@@ -98,13 +98,14 @@ RSpec.describe DossierMailer, type: :mailer do
describe '.notify_automatic_deletion_to_user' do
let(:dossier) { create(:dossier) }
+ let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier) }
before do
duree = dossier.procedure.duree_conservation_dossiers_dans_ds
@date_suppression = dossier.created_at + duree.months
end
- subject { described_class.notify_automatic_deletion_to_user(dossier.user.email, [dossier.hash_for_deletion_mail]) }
+ 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") }
@@ -115,8 +116,9 @@ RSpec.describe DossierMailer, type: :mailer do
describe '.notify_automatic_deletion_to_administration' do
let(:dossier) { create(:dossier) }
+ let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier) }
- subject { described_class.notify_automatic_deletion_to_administration(dossier.user, [dossier.hash_for_deletion_mail]) }
+ subject { described_class.notify_automatic_deletion_to_administration([deleted_dossier], dossier.user.email) }
it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement") }
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
@@ -130,13 +132,13 @@ RSpec.describe DossierMailer, type: :mailer do
@date_suppression = dossier.created_at + duree.months
end
- subject { described_class.notify_en_construction_near_deletion(dossier.user.email, [dossier], true) }
+ subject { described_class.notify_en_construction_near_deletion_to_administration([dossier], dossier.user.email) }
it { expect(subject.subject).to eq("Un dossier en construction 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.") }
+ it { expect(subject.body).to include("Vous avez un mois pour commencer l'instruction du dossier.") }
end
describe '.notify_en_construction_near_deletion_to_user' do
@@ -147,14 +149,14 @@ RSpec.describe DossierMailer, type: :mailer do
@date_suppression = dossier.created_at + duree.months
end
- subject { described_class.notify_en_construction_near_deletion(dossier.user.email, [dossier], false) }
+ subject { described_class.notify_en_construction_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 en construction 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 traiter le dossier.") }
+ it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire.") }
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 38c22902f..55c1fd562 100644
--- a/spec/mailers/previews/dossier_mailer_preview.rb
+++ b/spec/mailers/previews/dossier_mailer_preview.rb
@@ -8,47 +8,61 @@ class DossierMailerPreview < ActionMailer::Preview
DossierMailer.notify_new_answer(dossier)
end
- def notify_deletion_to_user
- DossierMailer.notify_deletion_to_user(deleted_dossier, "user@ds.fr")
- end
-
- def notify_deletion_to_administration
- DossierMailer.notify_deletion_to_administration(deleted_dossier, "admin@ds.fr")
- end
-
def notify_revert_to_instruction
DossierMailer.notify_revert_to_instruction(dossier)
end
def notify_brouillon_near_deletion
- DossierMailer.notify_brouillon_near_deletion(User.new(email: "usager@example.com"), [dossier])
+ DossierMailer.notify_brouillon_near_deletion([dossier], usager_email)
end
def notify_brouillons_near_deletion
- DossierMailer.notify_brouillon_near_deletion(User.new(email: "usager@example.com"), [dossier, dossier])
+ DossierMailer.notify_brouillon_near_deletion([dossier, dossier], usager_email)
+ end
+
+ def notify_en_construction_near_deletion_to_user
+ DossierMailer.notify_en_construction_near_deletion_to_user([dossier], usager_email)
+ end
+
+ def notify_en_construction_near_deletion_to_administration
+ DossierMailer.notify_en_construction_near_deletion_to_administration([dossier, dossier], administration_email)
end
def notify_brouillon_deletion
- DossierMailer.notify_brouillon_deletion(User.new(email: "usager@example.com"), [dossier.hash_for_deletion_mail])
+ DossierMailer.notify_brouillon_deletion([dossier.hash_for_deletion_mail], usager_email)
end
def notify_brouillons_deletion
dossier_hashes = [dossier, dossier].map(&:hash_for_deletion_mail)
- DossierMailer.notify_brouillon_deletion(User.new(email: "usager@example.com"), dossier_hashes)
+ DossierMailer.notify_brouillon_deletion(dossier_hashes, usager_email)
+ end
+
+ def notify_deletion_to_user
+ DossierMailer.notify_deletion_to_user(deleted_dossier, usager_email)
+ end
+
+ def notify_deletion_to_administration
+ DossierMailer.notify_deletion_to_administration(deleted_dossier, administration_email)
end
def notify_automatic_deletion_to_user
- dossier_hashes = [dossier, dossier].map(&:hash_for_deletion_mail)
- DossierMailer.notify_automatic_deletion_to_user("usager@example.com", dossier_hashes)
+ DossierMailer.notify_automatic_deletion_to_user([deleted_dossier, deleted_dossier], usager_email)
end
def notify_automatic_deletion_to_administration
- dossier_hashes = [dossier, dossier].map(&:hash_for_deletion_mail)
- DossierMailer.notify_automatic_deletion_to_administration("admin@example.com", dossier_hashes)
+ DossierMailer.notify_automatic_deletion_to_administration([deleted_dossier, deleted_dossier], administration_email)
end
private
+ def usager_email
+ "usager@example.com"
+ end
+
+ def administration_email
+ "administration@example.com"
+ end
+
def deleted_dossier
DeletedDossier.new(dossier_id: 1, procedure: procedure)
end
@@ -62,7 +76,7 @@ class DossierMailerPreview < ActionMailer::Preview
end
def procedure
- Procedure.new(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'))
+ 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'))
end
def service
diff --git a/spec/services/expired_dossiers_deletion_service_spec.rb b/spec/services/expired_dossiers_deletion_service_spec.rb
index c927755d8..1b7c1088f 100644
--- a/spec/services/expired_dossiers_deletion_service_spec.rb
+++ b/spec/services/expired_dossiers_deletion_service_spec.rb
@@ -24,7 +24,7 @@ describe ExpiredDossiersDeletionService do
it 'emails should be sent' do
expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).once
- expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with(brouillon_close_to_expiration.user, [brouillon_close_to_expiration])
+ expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with([brouillon_close_to_expiration], brouillon_close_to_expiration.user.email)
end
it 'dossier state should change' do
@@ -33,8 +33,7 @@ describe ExpiredDossiersDeletionService do
it 'deletes and notify expired brouillon' do
expect(DossierMailer).to have_received(:notify_brouillon_deletion).once
- expect(DossierMailer).to have_received(:notify_brouillon_deletion).with(expired_brouillon.user, [expired_brouillon.hash_for_deletion_mail])
-
+ expect(DossierMailer).to have_received(:notify_brouillon_deletion).with([expired_brouillon.hash_for_deletion_mail], expired_brouillon.user.email)
expect(DeletedDossier.find_by(dossier_id: expired_brouillon.id)).to be_present
expect { expired_brouillon.reload }.to raise_error(ActiveRecord::RecordNotFound)
end
@@ -68,7 +67,7 @@ describe ExpiredDossiersDeletionService do
it { expect(dossier.reload.brouillon_close_to_expiration_notice_sent_at).not_to be_nil }
it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).once }
- it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with(dossier.user, [dossier]) }
+ it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with([dossier], dossier.user.email) }
end
end
@@ -80,7 +79,7 @@ describe ExpiredDossiersDeletionService do
before { ExpiredDossiersDeletionService.send_brouillon_expiration_notices }
it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).once }
- it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with(user, match_array([dossier_1, dossier_2])) }
+ it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).with(match_array([dossier_1, dossier_2]), user.email) }
end
end
@@ -119,7 +118,7 @@ describe ExpiredDossiersDeletionService do
it { expect { dossier.reload }.to raise_error(ActiveRecord::RecordNotFound) }
it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).once }
- it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).with(dossier.user, [dossier.hash_for_deletion_mail]) }
+ it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).with([dossier.hash_for_deletion_mail], dossier.user.email) }
end
end
@@ -131,7 +130,7 @@ describe ExpiredDossiersDeletionService do
before { ExpiredDossiersDeletionService.delete_expired_brouillons_and_notify }
it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).once }
- it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).with(user, match_array([dossier_1, dossier_2].map(&:hash_for_deletion_mail))) }
+ it { expect(DossierMailer).to have_received(:notify_brouillon_deletion).with(match_array([dossier_1.hash_for_deletion_mail, dossier_2.hash_for_deletion_mail]), user.email) }
end
end
@@ -142,7 +141,8 @@ describe ExpiredDossiersDeletionService do
after { Timecop.return }
before do
- allow(DossierMailer).to receive(:notify_en_construction_near_deletion).and_return(double(deliver_later: nil))
+ allow(DossierMailer).to receive(:notify_en_construction_near_deletion_to_user).and_return(double(deliver_later: nil))
+ allow(DossierMailer).to receive(:notify_en_construction_near_deletion_to_administration).and_return(double(deliver_later: nil))
end
context 'with a single dossier' do
@@ -154,7 +154,8 @@ describe ExpiredDossiersDeletionService do
let(:en_construction_at) { (conservation_par_defaut - 1.month - 1.day).ago }
it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).to be_nil }
- it { expect(DossierMailer).not_to have_received(:notify_en_construction_near_deletion) }
+ it { expect(DossierMailer).not_to have_received(:notify_en_construction_near_deletion_to_user) }
+ it { expect(DossierMailer).not_to have_received(:notify_en_construction_near_deletion_to_administration) }
end
context 'when the dossier is near deletion' do
@@ -162,10 +163,11 @@ describe ExpiredDossiersDeletionService do
it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).not_to be_nil }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).thrice }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier.user.email, [dossier], true) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier.procedure.administrateurs.first.email, [dossier], false) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier.followers_instructeurs.first.email, [dossier], false) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).once }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).twice }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).with([dossier], dossier.user.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with([dossier], dossier.procedure.administrateurs.first.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with([dossier], dossier.followers_instructeurs.first.email) }
end
end
@@ -181,11 +183,12 @@ describe ExpiredDossiersDeletionService do
ExpiredDossiersDeletionService.send_en_construction_expiration_notices
end
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).exactly(4).times }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(user.email, match_array([dossier_1, dossier_2]), true) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(instructeur.email, match_array([dossier_1, dossier_2]), false) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier_1.procedure.administrateurs.first.email, [dossier_1], false) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier_2.procedure.administrateurs.first.email, [dossier_2], false) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).once }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).exactly(3).times }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).with(match_array([dossier_1, dossier_2]), user.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with(match_array([dossier_1, dossier_2]), instructeur.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with([dossier_1], dossier_1.procedure.administrateurs.first.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with([dossier_2], dossier_2.procedure.administrateurs.first.email) }
end
context 'when an instructeur is also administrateur' do
@@ -198,9 +201,9 @@ describe ExpiredDossiersDeletionService do
ExpiredDossiersDeletionService.send_en_construction_expiration_notices
end
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).exactly(2).times }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(dossier.user.email, [dossier], true) }
- it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion).with(administrateur.email, [dossier], false) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).once }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_user).with([dossier], dossier.user.email) }
+ it { expect(DossierMailer).to have_received(:notify_en_construction_near_deletion_to_administration).with([dossier], administrateur.email) }
end
end
@@ -217,6 +220,7 @@ describe ExpiredDossiersDeletionService do
context 'with a single dossier' do
let!(:dossier) { create(:dossier, :en_construction, :followed, en_construction_close_to_expiration_notice_sent_at: notice_sent_at) }
+ let(:deleted_dossier) { DeletedDossier.find_by(dossier_id: dossier.id) }
before { ExpiredDossiersDeletionService.delete_expired_en_construction_and_notify }
@@ -242,11 +246,11 @@ describe ExpiredDossiersDeletionService do
it { expect { dossier.reload }.to raise_error(ActiveRecord::RecordNotFound) }
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).once }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).with(dossier.user.email, [dossier.hash_for_deletion_mail]) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).with([deleted_dossier], dossier.user.email) }
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).twice }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(dossier.procedure.administrateurs.first.email, [dossier.hash_for_deletion_mail]) }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(dossier.followers_instructeurs.first.email, [dossier.hash_for_deletion_mail]) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier], dossier.procedure.administrateurs.first.email) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier], dossier.followers_instructeurs.first.email) }
end
end
@@ -254,6 +258,8 @@ describe ExpiredDossiersDeletionService do
let!(:user) { create(:user) }
let!(:dossier_1) { create(:dossier, :en_construction, user: user, en_construction_close_to_expiration_notice_sent_at: (warning_period + 1.day).ago) }
let!(:dossier_2) { create(:dossier, :en_construction, user: user, en_construction_close_to_expiration_notice_sent_at: (warning_period + 1.day).ago) }
+ let(:deleted_dossier_1) { DeletedDossier.find_by(dossier_id: dossier_1.id) }
+ let(:deleted_dossier_2) { DeletedDossier.find_by(dossier_id: dossier_2.id) }
let!(:instructeur) { create(:instructeur) }
@@ -263,12 +269,12 @@ describe ExpiredDossiersDeletionService do
end
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).once }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).with(user.email, match_array([dossier_1, dossier_2].map(&:hash_for_deletion_mail))) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).with(match_array([deleted_dossier_1, deleted_dossier_2]), user.email) }
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).thrice }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(instructeur.email, match_array([dossier_1, dossier_2].map(&:hash_for_deletion_mail))) }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(dossier_1.procedure.administrateurs.first.email, [dossier_1.hash_for_deletion_mail]) }
- it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(dossier_2.procedure.administrateurs.first.email, [dossier_2.hash_for_deletion_mail]) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(match_array([deleted_dossier_1, deleted_dossier_2]), instructeur.email) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_1], dossier_1.procedure.administrateurs.first.email) }
+ it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_2], dossier_2.procedure.administrateurs.first.email) }
end
end
end