diff --git a/app/mailers/avis_mailer.rb b/app/mailers/avis_mailer.rb new file mode 100644 index 000000000..601ee464d --- /dev/null +++ b/app/mailers/avis_mailer.rb @@ -0,0 +1,9 @@ +class AvisMailer < ApplicationMailer + + def you_are_invited_on_dossier(avis) + @avis = avis + email = @avis.gestionnaire.try(:email) || @avis.email + mail(to: email, subject: "Donnez votre avis sur le dossier nº #{@avis.dossier.id} (#{@avis.dossier.procedure.libelle})") + end + +end diff --git a/app/models/avis.rb b/app/models/avis.rb index b63ca92ff..4a2b8520d 100644 --- a/app/models/avis.rb +++ b/app/models/avis.rb @@ -2,6 +2,8 @@ class Avis < ApplicationRecord belongs_to :dossier belongs_to :gestionnaire + after_create :notify_gestionnaire + scope :with_answer, -> { where.not(answer: nil) } scope :without_answer, -> { where(answer: nil) } scope :for_dossier, ->(dossier_id) { where(dossier_id: dossier_id) } @@ -10,4 +12,8 @@ class Avis < ApplicationRecord def email_to_display gestionnaire.try(:email) || email end + + def notify_gestionnaire + AvisMailer.you_are_invited_on_dossier(self).deliver_now + end end diff --git a/app/views/avis_mailer/you_are_invited_on_dossier.html.haml b/app/views/avis_mailer/you_are_invited_on_dossier.html.haml new file mode 100644 index 000000000..ac2403812 --- /dev/null +++ b/app/views/avis_mailer/you_are_invited_on_dossier.html.haml @@ -0,0 +1,24 @@ +%html + %body + %p + Bonjour, + %br + = "Vous avez été invité à donner votre avis sur le dossier nº #{@avis.dossier.id} de la procédure : #{@avis.dossier.procedure.libelle}." + %br + Message de votre interlocuteur : + + %p{ style: 'border: 1px solid grey' } + = @avis.introduction + + %p + = link_to "Connectez-vous pour donner votre avis", new_gestionnaire_session_url + + Bonne journée, + %br + %br + L'équipe Téléprocédures Simplifiées + %br + %br + %hr + %br + Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme. diff --git a/spec/mailers/avis_mailer_spec.rb b/spec/mailers/avis_mailer_spec.rb new file mode 100644 index 000000000..657a327a6 --- /dev/null +++ b/spec/mailers/avis_mailer_spec.rb @@ -0,0 +1,13 @@ +require "rails_helper" + +RSpec.describe AvisMailer, type: :mailer do + describe '.you_are_invited_on_dossier' do + let(:avis) { create(:avis) } + + subject { described_class.you_are_invited_on_dossier(avis) } + + it { expect(subject.subject).to eq("Donnez votre avis sur le dossier nº #{avis.dossier.id} (#{avis.dossier.procedure.libelle})") } + it { expect(subject.body).to include("Vous avez été invité à donner votre avis sur le dossier nº #{avis.dossier.id} de la procédure : #{avis.dossier.procedure.libelle}.") } + it { expect(subject.body).to include(avis.introduction) } + end +end diff --git a/spec/mailers/previews/avis_mailer_preview.rb b/spec/mailers/previews/avis_mailer_preview.rb new file mode 100644 index 000000000..c911615e6 --- /dev/null +++ b/spec/mailers/previews/avis_mailer_preview.rb @@ -0,0 +1,8 @@ +# Preview all emails at http://localhost:3000/rails/mailers/avis_mailer +class AvisMailerPreview < ActionMailer::Preview + + def you_are_invited_on_dossier + AvisMailer.you_are_invited_on_dossier(Avis.last) + end + +end