diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index a39802571..ce515f113 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -197,6 +197,9 @@ module Users @commentaire = CommentaireService.build(current_user, dossier, commentaire_params) if @commentaire.save + dossier.followers_instructeurs.each do |instructeur| + DossierMailer.notify_new_commentaire_to_instructeur(dossier, instructeur.email).deliver_later + end flash.notice = "Votre message a bien été envoyé à l’instructeur en charge de votre dossier." redirect_to messagerie_dossier_path(dossier) else diff --git a/app/mailers/dossier_mailer.rb b/app/mailers/dossier_mailer.rb index 5c7dde111..e0f0e254a 100644 --- a/app/mailers/dossier_mailer.rb +++ b/app/mailers/dossier_mailer.rb @@ -29,6 +29,12 @@ class DossierMailer < ApplicationMailer end end + def notify_new_commentaire_to_instructeur(dossier, instructeur_email) + @dossier = dossier + @subject = default_i18n_subject(dossier_id: dossier.id, libelle_demarche: dossier.procedure.libelle) + mail(from: NO_REPLY_EMAIL, to: instructeur_email, subject: @subject) + end + def notify_revert_to_instruction(dossier) @dossier = dossier @service = dossier.procedure.service diff --git a/app/views/dossier_mailer/notify_new_commentaire_to_instructeur.html.haml b/app/views/dossier_mailer/notify_new_commentaire_to_instructeur.html.haml new file mode 100644 index 000000000..cfb294aa6 --- /dev/null +++ b/app/views/dossier_mailer/notify_new_commentaire_to_instructeur.html.haml @@ -0,0 +1,10 @@ +- content_for(:title, "#{@subject}") + +%p + Bonjour, + +%p + = t('.body', dossier_id: @dossier.id, libelle_demarche: @dossier.procedure.libelle) +%p= link_to("Messagerie du dossier n°#{@dossier.id}", messagerie_instructeur_dossier_url(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id)) + += render partial: "layouts/mailers/signature" diff --git a/config/locales/views/dossier_mailer/notify_new_commentaire_to_instructeur/fr.yml b/config/locales/views/dossier_mailer/notify_new_commentaire_to_instructeur/fr.yml new file mode 100644 index 000000000..8eb7bd7f6 --- /dev/null +++ b/config/locales/views/dossier_mailer/notify_new_commentaire_to_instructeur/fr.yml @@ -0,0 +1,5 @@ +fr: + dossier_mailer: + notify_new_commentaire_to_instructeur: + subject: Nouveau commentaire déposé sur le dossier n°%{dossier_id} + body: Un nouveau commentaire a été déposé par l'usager sur le dossier n° %{dossier_id} de la démarche %{libelle_demarche} diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 9802b7c36..55e5bd147 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -783,7 +783,9 @@ describe Users::DossiersController, type: :controller do end describe "#create_commentaire" do - let(:dossier) { create(:dossier, :en_construction, user: user) } + let(:instructeur) { create(:instructeur) } + let(:procedure) { create(:procedure, :published, instructeurs: [instructeur]) } + let(:dossier) { create(:dossier, :en_construction, procedure: procedure, user: user) } let(:saved_commentaire) { dossier.commentaires.first } let(:body) { "avant\napres" } let(:file) { Rack::Test::UploadedFile.new("./spec/fixtures/files/piece_justificative_0.pdf", 'application/pdf') } @@ -802,12 +804,15 @@ describe Users::DossiersController, type: :controller do before do sign_in(user) allow(ClamavService).to receive(:safe_file?).and_return(scan_result) + allow(DossierMailer).to receive(:notify_new_commentaire_to_instructeur).with(dossier, instructeur.email).and_return(double(deliver_later: nil)) + instructeur.follow(dossier) end it "creates a commentaire" do expect { subject }.to change(Commentaire, :count).by(1) expect(response).to redirect_to(messagerie_dossier_path(dossier)) + expect(DossierMailer).to have_received(:notify_new_commentaire_to_instructeur).with(dossier, instructeur.email) expect(flash.notice).to be_present end end