2018-11-20 11:57:51 +01:00
|
|
|
# Preview all emails at http://localhost:3000/rails/mailers/notification_mailer
|
|
|
|
|
2018-11-20 11:50:25 +01:00
|
|
|
# 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.
|
2018-11-20 11:57:51 +01:00
|
|
|
#
|
2015-12-15 11:02:07 +01:00
|
|
|
class NotificationMailer < ApplicationMailer
|
2024-03-21 15:03:20 +01:00
|
|
|
before_action :set_dossier, except: [:send_notification_for_tiers, :send_accuse_lecture_notification]
|
2023-02-07 17:27:25 +01:00
|
|
|
before_action :set_services_publics_plus, only: :send_notification
|
2021-05-01 12:20:24 +02:00
|
|
|
|
2019-04-11 12:23:40 +02:00
|
|
|
helper ServiceHelper
|
2019-07-22 15:21:05 +02:00
|
|
|
helper MailerHelper
|
2019-04-11 12:23:40 +02:00
|
|
|
|
2019-07-22 15:49:11 +02:00
|
|
|
layout 'mailers/notifications_layout'
|
2019-09-10 13:29:06 +02:00
|
|
|
default from: NO_REPLY_EMAIL
|
2019-07-22 15:49:11 +02:00
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def send_notification
|
|
|
|
@service = @dossier.procedure.service
|
2023-08-14 11:09:00 +02:00
|
|
|
@logo_url = procedure_logo_url(@dossier.procedure)
|
2022-05-10 16:23:22 +02:00
|
|
|
attachments[@attachment[:filename]] = @attachment[:content] if @attachment.present?
|
2021-09-01 18:51:29 +02:00
|
|
|
I18n.with_locale(@dossier.user_locale) do
|
2023-07-07 14:06:10 +02:00
|
|
|
mail(subject: @subject, to: @email, template_name: 'send_notification')
|
2021-09-01 18:51:29 +02:00
|
|
|
end
|
2018-05-25 23:08:47 +02:00
|
|
|
end
|
2017-10-11 15:36:40 +02:00
|
|
|
|
2023-12-20 10:49:09 +01:00
|
|
|
def send_notification_for_tiers(dossier, repasser_en_instruction: false)
|
2023-11-23 10:35:31 +01:00
|
|
|
@dossier = dossier
|
2023-12-20 10:49:09 +01:00
|
|
|
@repasser_en_instruction = repasser_en_instruction
|
2023-11-23 10:35:31 +01:00
|
|
|
|
|
|
|
if @dossier.individual.no_notification?
|
|
|
|
mail.perform_deliveries = false
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2024-03-26 18:37:25 +01:00
|
|
|
configure_defaults_for_user(@dossier.user)
|
|
|
|
|
2023-11-23 10:35:31 +01:00
|
|
|
@subject = "Votre dossier rempli par le mandataire #{@dossier.mandataire_first_name} #{@dossier.mandataire_last_name} a été mis à jour"
|
|
|
|
@email = @dossier.individual.email
|
|
|
|
@logo_url = procedure_logo_url(@dossier.procedure)
|
|
|
|
|
|
|
|
mail(subject: @subject, to: @email, template_name: 'send_notification_for_tiers')
|
|
|
|
end
|
|
|
|
|
2024-03-21 15:03:20 +01:00
|
|
|
def send_accuse_lecture_notification(dossier)
|
|
|
|
@dossier = dossier
|
|
|
|
@subject = "La décision a été rendue pour votre démarche #{@dossier.procedure.libelle.truncate_words(50)}"
|
|
|
|
@email = @dossier.user_email_for(:notification)
|
|
|
|
|
|
|
|
@logo_url = procedure_logo_url(@dossier.procedure)
|
|
|
|
|
|
|
|
mail(subject: @subject, to: @email, template_name: 'send_accuse_lecture_notification')
|
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def self.send_en_construction_notification(dossier)
|
|
|
|
with(dossier: dossier, state: Dossier.states.fetch(:en_construction)).send_notification
|
2018-05-25 23:08:47 +02:00
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def self.send_en_instruction_notification(dossier)
|
|
|
|
with(dossier: dossier, state: Dossier.states.fetch(:en_instruction)).send_notification
|
2018-05-25 23:08:47 +02:00
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def self.send_accepte_notification(dossier)
|
|
|
|
with(dossier: dossier, state: Dossier.states.fetch(:accepte)).send_notification
|
2017-10-11 15:36:40 +02:00
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def self.send_refuse_notification(dossier)
|
|
|
|
with(dossier: dossier, state: Dossier.states.fetch(:refuse)).send_notification
|
2021-05-01 12:20:24 +02:00
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def self.send_sans_suite_notification(dossier)
|
|
|
|
with(dossier: dossier, state: Dossier.states.fetch(:sans_suite)).send_notification
|
2023-11-08 14:41:22 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.send_repasser_en_instruction_notification(dossier)
|
2023-11-29 12:59:55 +01:00
|
|
|
with(dossier: dossier, state: DossierOperationLog.operations.fetch(:repasser_en_instruction)).send_notification
|
2023-03-14 18:48:19 +01:00
|
|
|
end
|
|
|
|
|
2023-10-18 07:10:26 +02:00
|
|
|
def self.critical_email?(action_name)
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
private
|
2018-05-25 23:08:47 +02:00
|
|
|
|
2023-02-07 17:27:25 +01:00
|
|
|
def set_services_publics_plus
|
|
|
|
return unless Dossier::TERMINE.include?(params[:state])
|
|
|
|
|
2023-02-07 17:36:14 +01:00
|
|
|
@services_publics_plus_url = ENV['SERVICES_PUBLICS_PLUS_URL'].presence
|
2023-02-07 17:27:25 +01:00
|
|
|
end
|
|
|
|
|
2021-04-29 19:10:22 +02:00
|
|
|
def set_dossier
|
|
|
|
@dossier = params[:dossier]
|
2024-03-26 18:37:25 +01:00
|
|
|
configure_defaults_for_user(@dossier.user)
|
2018-05-30 17:12:06 +02:00
|
|
|
|
2022-12-21 17:18:19 +01:00
|
|
|
if @dossier.skip_user_notification_email?
|
2021-04-29 19:10:22 +02:00
|
|
|
mail.perform_deliveries = false
|
|
|
|
else
|
2021-09-01 18:51:29 +02:00
|
|
|
I18n.with_locale(@dossier.user_locale) do
|
2023-11-29 12:59:55 +01:00
|
|
|
email_template = @dossier.email_template_for(params[:state])
|
|
|
|
email_template_presenter = MailTemplatePresenterService.new(@dossier, params[:state])
|
2021-09-01 18:51:29 +02:00
|
|
|
|
|
|
|
@email = @dossier.user_email_for(:notification)
|
2023-11-29 12:59:55 +01:00
|
|
|
@rendered_template = email_template_presenter.safe_body
|
|
|
|
@subject = email_template_presenter.safe_subject
|
|
|
|
@actions = email_template.actions_for_dossier(@dossier)
|
|
|
|
@attachment = email_template.attachment_for_dossier(@dossier)
|
2021-09-01 18:51:29 +02:00
|
|
|
end
|
2021-04-29 19:10:22 +02:00
|
|
|
end
|
2018-05-25 23:08:47 +02:00
|
|
|
end
|
2015-12-15 11:02:07 +01:00
|
|
|
end
|