New customizable mail : mail_validated, new balise --lien_dossier--

This commit is contained in:
Mathieu Magnin 2017-01-26 12:12:52 +01:00
parent 83616f77db
commit b40193e7b5
21 changed files with 134 additions and 58 deletions

View file

@ -1,31 +1,45 @@
class MailTemplate < ActiveRecord::Base
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
belongs_to :procedure
enum tags: {
numero_dossier: {
description: "Permet d'afficher le numéro de dossier de l'utilisateur."
},
libelle_procedure: {
description: "Permet d'afficher le libellé de la procédure."
}
}
TAGS = {
numero_dossier: {
description: "Permet d'afficher le numéro de dossier de l'utilisateur."
},
lien_dossier: {
description: "Permet d'afficher un lien vers le dossier de l'utilisateur."
},
libelle_procedure: {
description: "Permet d'afficher le libellé de la procédure."
}
}
def self.replace_tags string, dossier
@dossier = dossier
def object_for_dossier dossier
replace_tags(object, dossier)
end
tags.inject(string) do |acc, tag|
acc.gsub!("--#{tag.first}--", replace_tag(tag.first.to_sym)) || acc
def body_for_dossier dossier
replace_tags(body, dossier)
end
def replace_tags string, dossier
TAGS.inject(string) do |acc, tag|
acc.gsub!("--#{tag.first}--", replace_tag(tag.first.to_sym, dossier)) || acc
end
end
private
def self.replace_tag tag
def replace_tag tag, dossier
case tag
when :numero_dossier
@dossier.id.to_s
dossier.id.to_s
when :lien_dossier
link_to users_dossier_recapitulatif_url(dossier), users_dossier_recapitulatif_url(dossier), target: '_blank'
when :libelle_procedure
@dossier.procedure.libelle
dossier.procedure.libelle
else
'--BALISE_NON_RECONNUE--'
end

View file

@ -0,0 +1,18 @@
class MailValidated < MailTemplate
before_save :default_values
def default_values
self.object ||= "[TPS] Votre dossier TPS N°--numero_dossier-- a été validé"
self.body ||= "Bonjour,<br>
<br>
Votre dossier N°--numero_dossier-- est prêt à être déposé pour instruction.<br>
<br>
Afin de finaliser son dépôt, merci de vous rendre sur --lien_dossier--.,<br>
<br>
Bonne journée,<br>
---<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.<br>
---<br>
L'équipe TPS"
end
end

View file

@ -4,7 +4,7 @@ class Procedure < ActiveRecord::Base
has_many :types_de_champ_private, dependent: :destroy
has_many :dossiers
has_many :mail_templates
has_one :mail_received
has_one :procedure_path, dependent: :destroy
@ -32,7 +32,8 @@ class Procedure < ActiveRecord::Base
after_save :build_default_mails, if: Proc.new { id_changed? }
def build_default_mails
MailReceived.create(procedure: self)
mail_templates << MailReceived.create unless mail_received
mail_templates << MailValidated.create unless mail_validated
end
def path
@ -109,4 +110,12 @@ class Procedure < ActiveRecord::Base
def total_dossier
self.dossiers.where.not(state: :draft).size
end
def mail_validated
mail_templates.where(type: :MailValidated).first
end
def mail_received
mail_templates.where(type: :MailReceived).first
end
end