Mails: add refused, without_continuation, draft, closed, received mails object

This commit is contained in:
Simon Lehericey 2017-03-06 11:51:34 +01:00
parent 7b336922cc
commit 695dc16b85
22 changed files with 295 additions and 73 deletions

13
app/models/closed_mail.rb Normal file
View file

@ -0,0 +1,13 @@
class ClosedMail < ActiveRecord::Base
include MailTemplateConcern
def name
"Accusé d'acceptation"
end
def self.default
obj = "Votre dossier TPS N°--numero_dossier-- a été accepté"
body = ActionController::Base.new.render_to_string(template: 'notification_mailer/closed_mail')
ClosedMail.new(object: obj, body: body)
end
end

View file

@ -0,0 +1,54 @@
module MailTemplateConcern
extend ActiveSupport::Concern
include Rails.application.routes.url_helpers
include ActionView::Helpers::UrlHelper
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 object_for_dossier dossier
replace_tags(object, dossier)
end
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
module ClassMethods
def slug
self.name.underscore
end
end
private
def replace_tag tag, dossier
case tag
when :numero_dossier
dossier.id.to_s
when :lien_dossier
# TPS::Application::URL # quickfix
link_to users_dossier_recapitulatif_url(dossier), users_dossier_recapitulatif_url(dossier), target: '_blank'
when :libelle_procedure
dossier.procedure.libelle
else
'--BALISE_NON_RECONNUE--'
end
end
end

View file

@ -1,15 +1,13 @@
class InitiatedMail < MailTemplate
class InitiatedMail < ActiveRecord::Base
include MailTemplateConcern
def name
"E-mail d'accusé de réception"
"Accusé de réception"
end
def self.default
obj = "[TPS] Accusé de réception pour votre dossier n°--numero_dossier--"
obj = "Votre dossier TPS N°--numero_dossier-- a été bien reçu"
body = ActionController::Base.new.render_to_string(template: 'notification_mailer/initiated_mail')
InitiatedMail.new(object: obj, body: body)
end
def self.slug
self.name.parameterize
end
end

View file

@ -0,0 +1,13 @@
class ReceivedMail < ActiveRecord::Base
include MailTemplateConcern
def name
"Accusé de passage en instruction"
end
def self.default
obj = "Votre dossier TPS N°--numero_dossier-- va être instruit"
body = ActionController::Base.new.render_to_string(template: 'notification_mailer/received_mail')
ReceivedMail.new(object: obj, body: body)
end
end

View file

@ -0,0 +1,13 @@
class RefusedMail < ApplicationRecord
include MailTemplateConcern
def name
"Accusé de rejet du dossier"
end
def self.default
obj = "Votre dossier TPS N°--numero_dossier-- a été refusé"
body = ActionController::Base.new.render_to_string(template: 'notification_mailer/refused_mail')
RefusedMail.new(object: obj, body: body)
end
end

View file

@ -0,0 +1,13 @@
class WithoutContinuationMail < ApplicationRecord
include MailTemplateConcern
def name
"Accusé de classement sans suite"
end
def self.default
obj = "Votre dossier TPS N°--numero_dossier-- a été classé sans suite"
body = ActionController::Base.new.render_to_string(template: 'notification_mailer/without_continuation_mail')
WithoutContinuationMail.new(object: obj, body: body)
end
end

View file

@ -0,0 +1,17 @@
Bonjour
<br>
<br>
Votre dossier N°--numero_dossier-- a été accepté.
<br>
<br>
A tout moment, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : --lien_dossier--
<br>
<br>
Bonne journée
<br>
<br>
\---
<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
<br>
\---

View file

@ -1,14 +0,0 @@
Bonjour <%= @user.email %>
votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été accepté ce jour à <%= @dossier.updated_at %>.
A tout moment, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%>
Bonne journée
---
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
---
---
L'équide TPS - tps@apientreprise.fr

View file

@ -1,14 +0,0 @@
Bonjour <%= @user.email %>
votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été refusé ce jour à <%= @dossier.updated_at %>.
Pour en savoir plus sur le motif du refus, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%>
Bonne journée,
---
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
---
---
L'équide TPS - tps@apientreprise.fr

View file

@ -1,12 +0,0 @@
Bonjour <%= @user.email %>
Nous vous confirmons que votre dossier N°<%=@dossier.id%> a été déposé auprès de <%= @dossier.procedure.organisation %> avec succès ce jour à <%= @dossier.updated_at %>.
Bonne journée,
---
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
---
---
L'équide TPS - tps@apientreprise.fr

View file

@ -1,14 +0,0 @@
Bonjour <%= @user.email %>
votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été classé sans suite ce jour à <%= @dossier.updated_at %>.
Pour en savoir plus sur les raisons de ce classement sans suite, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%>
Bonne journée,
---
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
---
---
L'équide TPS - tps@apientreprise.fr

View file

@ -1,11 +0,0 @@
Bonjour,
<br>
<br>
Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier-- complet. Celui-ci sera instruit dans le délai légal déclaré par votre interlocuteur.<br>
<br>
En vous souhaitant une bonne journée,
<br>
<br>
---
<br>
L'équipe TPS

View file

@ -0,0 +1,17 @@
Bonjour
<br>
<br>
Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier--.
<br>
<br>
A tout moment, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : --lien_dossier--
<br>
<br>
Bonne journée
<br>
<br>
\---
<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
<br>
\---

View file

@ -0,0 +1,14 @@
Bonjour
<br>
<br>
Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier--. Celui-ci sera instruit dans le délai légal déclaré par votre interlocuteur.
<br>
<br>
Bonne journée
<br>
<br>
\---
<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
<br>
\---

View file

@ -0,0 +1,17 @@
Bonjour
<br>
<br>
Votre dossier N°--numero_dossier-- a été refusé.
<br>
<br>
Pour en savoir plus sur le motif du refus, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : --lien_dossier--
<br>
<br>
Bonne journée
<br>
<br>
\---
<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
<br>
\---

View file

@ -0,0 +1,17 @@
Bonjour
<br>
<br>
Votre dossier N°--numero_dossier-- a été classé sans suite.
<br>
<br>
Pour en savoir plus sur les raisons de ce classement sans suite, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : --lien_dossier--
<br>
<br>
Bonne journée
<br>
<br>
\---
<br>
Merci de ne pas répondre à ce mail. Postez directement vos questions dans votre dossier sur la plateforme.
<br>
\---

View file

@ -0,0 +1,11 @@
class CreateReceivedMails < ActiveRecord::Migration[5.0]
def change
create_table :received_mails do |t|
t.text :body
t.text :object
t.references :procedure, foreign_key: true
t.timestamps
end
end
end

View file

@ -0,0 +1,11 @@
class CreateClosedMails < ActiveRecord::Migration[5.0]
def change
create_table :closed_mails do |t|
t.text :body
t.text :object
t.belongs_to :procedure, index: true, unique: true, foreign_key: true
t.timestamps
end
end
end

View file

@ -0,0 +1,11 @@
class CreateRefusedMails < ActiveRecord::Migration[5.0]
def change
create_table :refused_mails do |t|
t.text :body
t.text :object
t.belongs_to :procedure, index: true, unique: true, foreign_key: true
t.timestamps
end
end
end

View file

@ -0,0 +1,11 @@
class CreateWithoutContinuationMails < ActiveRecord::Migration[5.0]
def change
create_table :without_continuation_mails do |t|
t.text :body
t.text :object
t.belongs_to :procedure, index: true, unique: true, foreign_key: true
t.timestamps
end
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170302105557) do
ActiveRecord::Schema.define(version: 20170306102320) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -104,6 +104,15 @@ ActiveRecord::Schema.define(version: 20170302105557) do
t.index ["type_de_champ_id"], name: "index_champs_on_type_de_champ_id", using: :btree
end
create_table "closed_mails", force: :cascade do |t|
t.text "body"
t.text "object"
t.integer "procedure_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["procedure_id"], name: "index_closed_mails_on_procedure_id", using: :btree
end
create_table "commentaires", force: :cascade do |t|
t.string "email"
t.datetime "created_at", null: false
@ -343,6 +352,24 @@ ActiveRecord::Schema.define(version: 20170302105557) do
t.integer "dossier_id"
end
create_table "received_mails", force: :cascade do |t|
t.text "body"
t.text "object"
t.integer "procedure_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["procedure_id"], name: "index_received_mails_on_procedure_id", using: :btree
end
create_table "refused_mails", force: :cascade do |t|
t.text "body"
t.text "object"
t.integer "procedure_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["procedure_id"], name: "index_refused_mails_on_procedure_id", using: :btree
end
create_table "rna_informations", force: :cascade do |t|
t.string "association_id"
t.string "titre"
@ -394,12 +421,25 @@ ActiveRecord::Schema.define(version: 20170302105557) do
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
end
create_table "without_continuation_mails", force: :cascade do |t|
t.text "body"
t.text "object"
t.integer "procedure_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["procedure_id"], name: "index_without_continuation_mails_on_procedure_id", using: :btree
end
add_foreign_key "cerfas", "dossiers"
add_foreign_key "closed_mails", "procedures"
add_foreign_key "commentaires", "dossiers"
add_foreign_key "dossiers", "users"
add_foreign_key "initiated_mails", "procedures"
add_foreign_key "procedure_paths", "administrateurs"
add_foreign_key "procedure_paths", "procedures"
add_foreign_key "received_mails", "procedures"
add_foreign_key "refused_mails", "procedures"
add_foreign_key "without_continuation_mails", "procedures"
create_view :searches, sql_definition: <<-SQL
SELECT dossiers.id AS dossier_id,

View file

@ -0,0 +1,17 @@
require 'spec_helper'
describe MailTemplateConcern do
describe '.replace_tags' do
let(:dossier) { create :dossier }
let(:initiated_mail) { InitiatedMail.default }
it 'works' do
initiated_mail.object = '[TPS] --numero_dossier-- --libelle_procedure-- --lien_dossier--'
expected =
"[TPS] 1 Demande de subvention " +
"<a target=\"_blank\" href=\"http://localhost:3000/users/dossiers/1/recapitulatif\">http://localhost:3000/users/dossiers/1/recapitulatif</a>"
expect(initiated_mail.object_for_dossier(dossier)).to eq(expected)
end
end
end