demarches-normaliennes/app/mailers/notification_mailer.rb
Frederic Merizen cce00e19c6 [#1972] Avoid passing unsaved templates to ActionMailer
So that all mail arguments can be serialized
2018-05-28 12:02:13 +02:00

72 lines
1.9 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class NotificationMailer < ApplicationMailer
default to: Proc.new { @user.email }
after_action :create_commentaire_for_notification, only: [:send_notification, :send_dossier_received]
def send_dossier_received(dossier_id)
dossier = Dossier.find(dossier_id)
send_notification(dossier, dossier.procedure.received_mail_template)
end
def send_draft_notification(dossier)
vars_mailer(dossier)
@subject = "Retrouvez votre brouillon pour la démarche : #{dossier.procedure.libelle}"
mail(subject: @subject)
end
def send_initiated_notification(dossier)
send_notification(dossier, dossier.procedure.initiated_mail_template)
end
def send_received_notification(dossier)
send_notification(dossier, dossier.procedure.received_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
def new_answer(dossier)
send_mail dossier, "Nouveau message pour votre dossier demarches-simplifiees.fr nº #{dossier.id}"
end
private
def send_notification(dossier, mail_template)
vars_mailer(dossier)
@subject = mail_template.subject_for_dossier dossier
@body = mail_template.body_for_dossier dossier
mail(subject: @subject) { |format| format.html { @body } }
end
def create_commentaire_for_notification
Commentaire.create(
dossier: @dossier,
email: I18n.t("dynamics.contact_email"),
body: ["[#{@subject}]", @body].join("<br><br>")
)
end
def vars_mailer(dossier)
@dossier = dossier
@user = dossier.user
end
def send_mail(dossier, subject)
vars_mailer dossier
mail(subject: subject)
end
end