demarches-normaliennes/app/mailers/notification_mailer.rb
Pierre de La Morinerie 8b80c48679 emails: use the notification template for more messages
This allow to display the procedure logo and contact footer
at the bottom of these emails.
2019-07-18 12:38:13 +02:00

57 lines
1.8 KiB
Ruby

# Preview all emails at http://localhost:3000/rails/mailers/notification_mailer
# A Notification is attached as a Comment to the relevant discussion,
# then sent by email to the user.
#
# The subject and body of a Notification can be customized by each demarche.
#
class NotificationMailer < ApplicationMailer
helper ServiceHelper
def send_dossier_received(dossier)
send_notification(dossier, dossier.procedure.received_mail_template)
end
def send_initiated_notification(dossier)
send_notification(dossier, dossier.procedure.initiated_mail_template)
end
def send_closed_notification(dossier)
send_notification(dossier, dossier.procedure.closed_mail_template)
end
def send_refused_notification(dossier)
send_notification(dossier, dossier.procedure.refused_mail_template)
end
def send_without_continuation_notification(dossier)
send_notification(dossier, dossier.procedure.without_continuation_mail_template)
end
private
def send_notification(dossier, mail_template)
email = dossier.user.email
subject = mail_template.subject_for_dossier(dossier)
body = mail_template.body_for_dossier(dossier)
create_commentaire_for_notification(dossier, subject, body)
@dossier = dossier
@service = dossier.procedure.service
@logo_url = attach_logo(dossier.procedure)
mail(subject: subject, to: email) do |format|
# rubocop:disable Rails/OutputSafety
format.html { render(html: body.html_safe, layout: 'mailers/notification') }
# rubocop:enable Rails/OutputSafety
end
end
def create_commentaire_for_notification(dossier, subject, body)
params = { body: ["[#{subject}]", body].join("<br><br>") }
commentaire = CommentaireService.build_with_email(CONTACT_EMAIL, dossier, params)
commentaire.save!
end
end