Merge pull request #2057 from betagouv/dev

2018-06-07-01
This commit is contained in:
Frederic Merizen 2018-06-07 14:51:38 +02:00 committed by GitHub
commit 8f08c95993
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 868 additions and 439 deletions

View file

@ -546,7 +546,7 @@ GEM
httpclient
json-jwt (>= 1.9.0)
rack
rack-protection (2.0.1)
rack-protection (2.0.2)
rack
rack-test (1.0.0)
rack (>= 1.0, < 3)
@ -684,10 +684,10 @@ GEM
simple_form (4.0.0)
actionpack (> 4)
activemodel (> 4)
sinatra (2.0.1)
sinatra (2.0.2)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.1)
rack-protection (= 2.0.2)
tilt (~> 2.0)
skylight (2.0.1)
skylight-core (= 2.0.1)

View file

@ -52,7 +52,7 @@ class Admin::GestionnairesController < AdminController
if User.exists?(email: @gestionnaire.email)
GestionnaireMailer.user_to_gestionnaire(@gestionnaire.email).deliver_later
else
User.create(email: email, password: password)
User.create(email: email, password: password, confirmed_at: DateTime.now)
end
flash.notice = 'Accompagnateur ajouté'
else

View file

@ -237,7 +237,7 @@ class Admin::ProceduresController < AdminController
if @procedure&.locked?
params.require(:procedure).permit(*editable_params)
else
params.require(:procedure).permit(*editable_params, :lien_demarche, :cerfa_flag, :for_individual, :individual_with_siret, :ask_birthday, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id)
params.require(:procedure).permit(*editable_params, :duree_conservation_dossiers_dans_ds, :duree_conservation_dossiers_hors_ds, :lien_demarche, :cerfa_flag, :for_individual, :individual_with_siret, :ask_birthday, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id)
end
end

View file

@ -14,7 +14,7 @@ module Manager
end
def reinvite
Administrateur.find_inactive_by_id(params[:id]).invite!
Administrateur.find_inactive_by_id(params[:id]).invite!(current_administration.id)
flash.notice = "Invitation renvoyée"
redirect_to manager_administrateur_path(params[:id])
end

View file

@ -0,0 +1,19 @@
module ConservationDeDonneesHelper
def politiques_conservation_de_donnees(procedure)
[conservation_dans_ds(procedure), conservation_hors_ds(procedure)].compact
end
private
def conservation_dans_ds(procedure)
if procedure.duree_conservation_dossiers_dans_ds.present?
"dans demarches-simplifiees.fr #{procedure.duree_conservation_dossiers_dans_ds} mois après le début de linstruction du dossier"
end
end
def conservation_hors_ds(procedure)
if procedure.duree_conservation_dossiers_hors_ds.present?
"hors demarches-simplifiees.fr pendant #{procedure.duree_conservation_dossiers_hors_ds} mois"
end
end
end

48
app/lib/biz_dev.rb Normal file
View file

@ -0,0 +1,48 @@
module BizDev
BIZ_DEV_MAPPING = {
8 =>
{
full_name: "Camille Garrigue",
pipedrive_id: 3189424
},
9 =>
{
full_name: "Philippe Vrignaud",
pipedrive_id: 2753338
},
10 =>
{
full_name: "Benjamin Doberset",
pipedrive_id: 4223834
},
11 =>
{
full_name: "Rédouane Bouchane",
pipedrive_id: 4438645
}
}
BIZ_DEV_IDS = BIZ_DEV_MAPPING.keys
def self.full_name(administration_id)
id = ensure_proper_administration_id(administration_id)
BIZ_DEV_MAPPING[id][:full_name]
end
def self.pipedrive_id(administration_id)
id = ensure_proper_administration_id(administration_id)
BIZ_DEV_MAPPING[id][:pipedrive_id]
end
private
def self.ensure_proper_administration_id(administration_id)
if administration_id.in?(BIZ_DEV_IDS)
administration_id
else
BIZ_DEV_IDS[administration_id % BIZ_DEV_IDS.length]
end
end
end

View file

@ -5,10 +5,10 @@ class AdministrateurMailer < ApplicationMailer
@administrateur = administrateur
@reset_password_token = reset_password_token
@expiration_date = @administrateur.reset_password_sent_at + Devise.reset_password_within
subject = "demarches-simplifiees.fr - N'oubliez pas d'activer votre compte administrateur"
@subject = "N'oubliez pas d'activer votre compte administrateur"
mail(to: administrateur.email,
subject: subject,
subject: @subject,
reply_to: CONTACT_EMAIL)
end
end

View file

@ -4,16 +4,17 @@ class AdministrationMailer < ApplicationMailer
def new_admin_email(admin, administration)
@admin = admin
@administration = administration
subject = "Création d'un compte Admin demarches-simplifiees.fr"
subject = "Création d'un compte admininistrateur"
mail(to: TECH_EMAIL,
subject: subject)
end
def invite_admin(admin, reset_password_token)
def invite_admin(admin, reset_password_token, administration_id)
@reset_password_token = reset_password_token
@admin = admin
subject = "demarches-simplifiees.fr - Activez votre compte administrateur"
@author_name = BizDev.full_name(administration_id)
subject = "Activez votre compte administrateur"
mail(to: admin.email,
subject: subject,
@ -21,7 +22,7 @@ class AdministrationMailer < ApplicationMailer
end
def refuse_admin(admin_email)
subject = "demarches-simplifiees.fr - Votre demande de compte a été refusée"
subject = "Votre demande de compte a été refusée"
mail(to: admin_email,
subject: subject,

View file

@ -1,6 +1,6 @@
class DeviseUserMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
default template_path: 'devise/mailer' # to make sure that your mailer uses the devise views
default template_path: 'devise_mailer' # to make sure that your mailer uses the devise views
layout 'mailers/layout'
end

View file

@ -4,7 +4,7 @@ class GestionnaireMailer < ApplicationMailer
def invite_gestionnaire(gestionnaire, reset_password_token)
@reset_password_token = reset_password_token
@gestionnaire = gestionnaire
subject = "demarches-simplifiees.fr - Activez votre compte accompagnateur"
subject = "Activez votre compte accompagnateur"
mail(to: gestionnaire.email,
subject: subject,
@ -12,17 +12,19 @@ class GestionnaireMailer < ApplicationMailer
end
def user_to_gestionnaire(email)
subject = "Vous avez été nommé accompagnateur sur demarches-simplifiees.fr"
@email = email
subject = "Vous avez été nommé accompagnateur"
send_mail(email, nil, subject)
mail(to: @email, subject: subject)
end
def last_week_overview(gestionnaire)
email = gestionnaire.email
@overview = gestionnaire.last_week_overview
headers['X-mailjet-campaign'] = 'last_week_overview'
overview = gestionnaire.last_week_overview
subject = 'Vos activités sur demarches-simplifiees.fr'
@subject = 'Votre activité hebdomadaire'
send_mail(gestionnaire.email, overview, subject)
mail(to: email, subject: @subject)
end
def send_dossier(sender, dossier, recipient)
@ -32,17 +34,4 @@ class GestionnaireMailer < ApplicationMailer
mail(to: recipient.email, subject: subject)
end
private
def vars_mailer(email, args)
@args = args
@email = email
end
def send_mail(email, args, subject)
vars_mailer email, args
mail(to: email, subject: subject)
end
end

View file

@ -1,25 +1,24 @@
class InviteMailer < ApplicationMailer
def invite_user(invite)
vars_mailer(invite)
subject = "demarches-simplifiees.fr - Participez à l'élaboration d'un dossier"
subject = "Participez à l'élaboration d'un dossier"
send_mail(invite.email, subject, invite.email_sender) if invite.user.present?
if invite.user.present?
send_mail(invite, subject, invite.email_sender)
end
end
def invite_guest(invite)
vars_mailer(invite)
subject = "Invitation - #{invite.email_sender} vous invite à consulter un dossier sur demarches-simplifiees.fr"
subject = "#{invite.email_sender} vous invite à consulter un dossier"
send_mail(invite.email, subject, invite.email_sender)
send_mail(invite, subject, invite.email_sender)
end
private
def vars_mailer(invite)
def send_mail(invite, subject, reply_to)
@invite = invite
end
email = invite.email
def send_mail(email, subject, reply_to)
mail(to: email,
subject: subject,
reply_to: reply_to)

View file

@ -0,0 +1,33 @@
module Mailers
class NewAttestationMailer < ApplicationMailer
include Rails.application.routes.url_helpers
def new_attestation(dossier)
to = dossier.user.email
subject = "Nouvelle attestation pour votre dossier nº #{dossier.id}"
mail(to: to, subject: subject, body: body(dossier))
end
private
def body(dossier)
<<~HEREDOC
Bonjour,
Votre dossier  #{dossier.id} (procédure "#{dossier.procedure.libelle}") a subi, à un moment, un "aller-retour" :
- Acceptation de votre dossier
- Passage en instruction du dossier car besoin de le modifier
- Seconde acceptation de votre dossier
Suite à cette opération, l'attestation liée à votre dossier n'a pas é regénérée.
Ce problème est désormais reglé, votre nouvelle attestation est disponible à l'adresse suivante :
#{dossier_attestation_url(dossier)}
Cordialement,
Léquipe demarches-simplifiees.fr
HEREDOC
end
end
end

View file

@ -1,12 +1,12 @@
class NotificationMailer < ApplicationMailer
def new_answer(dossier)
subject = "Nouveau message pour votre dossier demarches-simplifiees.fr  #{dossier.id}"
subject = "Nouveau message pour votre dossier  #{dossier.id}"
send_mail(dossier, subject)
end
def send_draft_notification(dossier)
subject = "Retrouvez votre brouillon pour la démarche : #{dossier.procedure.libelle}"
subject = "Retrouvez votre brouillon pour la démarche \"#{dossier.procedure.libelle}\""
send_mail(dossier, subject)
end

View file

@ -0,0 +1,29 @@
module Mailers
class ResendAttestationMailer < ApplicationMailer
include Rails.application.routes.url_helpers
def resend_attestation(dossier)
to = dossier.user.email
subject = "Nouvelle attestation pour votre dossier nº #{dossier.id}"
mail(to: to, subject: subject, body: body(dossier))
end
private
def body(dossier)
<<~HEREDOC
Bonjour,
L'attestation de votre dossier  #{dossier.id} (procédure "#{dossier.procedure.libelle}") a été modifiée.
Votre nouvelle attestation est disponible à l'adresse suivante :
#{dossier_attestation_url(dossier)}
Cordialement,
Léquipe demarches-simplifiees.fr
HEREDOC
end
end
end

View file

@ -3,7 +3,7 @@ class UserMailer < ApplicationMailer
def new_account_warning(user)
@user = user
subject = "Création de compte"
@subject = "Demande de création de compte"
mail(to: user.email, subject: subject)
end

View file

@ -44,14 +44,14 @@ class Administrateur < ApplicationRecord
end
end
def invite!
def invite!(administration_id)
if active?
raise "Impossible d'inviter un utilisateur déjà actif !"
end
reset_password_token = set_reset_password_token
AdministrationMailer.invite_admin(self, reset_password_token).deliver_later
AdministrationMailer.invite_admin(self, reset_password_token, administration_id).deliver_later
reset_password_token
end

View file

@ -18,10 +18,11 @@ class Administration < ApplicationRecord
if administrateur.save
AdministrationMailer.new_admin_email(administrateur, self).deliver_later
administrateur.invite!
administrateur.invite!(id)
User.create({
email: email,
password: password
password: password,
confirmed_at: DateTime.now
})
end

View file

@ -12,9 +12,9 @@ module Mails
def self.default_template_name_for_procedure(procedure)
attestation_template = procedure.attestation_template
if attestation_template&.activated?
"mails/closed_mail_with_attestation"
"notification_mailer/closed_mail_with_attestation"
else
"mails/closed_mail"
"notification_mailer/closed_mail"
end
end
end

View file

@ -5,7 +5,7 @@ module Mails
belongs_to :procedure
SLUG = "initiated_mail"
DEFAULT_TEMPLATE_NAME = "mails/initiated_mail"
DEFAULT_TEMPLATE_NAME = "notification_mailer/initiated_mail"
DISPLAYED_NAME = 'Accusé de réception'
DEFAULT_SUBJECT = 'Votre dossier demarches-simplifiees.fr nº --numéro du dossier-- a bien été reçu'
DOSSIER_STATE = 'en_construction'

View file

@ -5,7 +5,7 @@ module Mails
belongs_to :procedure
SLUG = "received_mail"
DEFAULT_TEMPLATE_NAME = "mails/received_mail"
DEFAULT_TEMPLATE_NAME = "notification_mailer/received_mail"
DISPLAYED_NAME = 'Accusé de passage en instruction'
DEFAULT_SUBJECT = 'Votre dossier demarches-simplifiees.fr nº --numéro du dossier-- va être instruit'
DOSSIER_STATE = 'en_instruction'

View file

@ -5,7 +5,7 @@ module Mails
belongs_to :procedure
SLUG = "refused_mail"
DEFAULT_TEMPLATE_NAME = "mails/refused_mail"
DEFAULT_TEMPLATE_NAME = "notification_mailer/refused_mail"
DISPLAYED_NAME = 'Accusé de rejet du dossier'
DEFAULT_SUBJECT = 'Votre dossier demarches-simplifiees.fr nº --numéro du dossier-- a été refusé'
DOSSIER_STATE = 'refuse'

View file

@ -5,7 +5,7 @@ module Mails
belongs_to :procedure
SLUG = "without_continuation"
DEFAULT_TEMPLATE_NAME = "mails/without_continuation_mail"
DEFAULT_TEMPLATE_NAME = "notification_mailer/without_continuation_mail"
DISPLAYED_NAME = 'Accusé de classement sans suite'
DEFAULT_SUBJECT = 'Votre dossier demarches-simplifiees.fr nº --numéro du dossier-- a été classé sans suite'
DOSSIER_STATE = 'sans_suite'

View file

@ -1,4 +1,6 @@
class Procedure < ApplicationRecord
MAX_DUREE_CONSERVATION = 36
has_many :types_de_piece_justificative, -> { order "order_place ASC" }, dependent: :destroy
has_many :types_de_champ, -> { public_only }, dependent: :destroy
has_many :types_de_champ_private, -> { private_only }, class_name: 'TypeDeChamp', dependent: :destroy
@ -47,8 +49,14 @@ class Procedure < ApplicationRecord
validates :libelle, presence: true, allow_blank: false, allow_nil: false
validates :description, presence: true, allow_blank: false, allow_nil: false
validate :check_juridique
# FIXME: remove duree_conservation_required flag once all procedures are converted to the new style
validates :duree_conservation_dossiers_dans_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: MAX_DUREE_CONSERVATION }, if: :durees_conservation_required
validates :duree_conservation_dossiers_hors_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 0 }, if: :durees_conservation_required
validates :duree_conservation_dossiers_dans_ds, allow_nil: true, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: MAX_DUREE_CONSERVATION }, unless: :durees_conservation_required
validates :duree_conservation_dossiers_hors_ds, allow_nil: true, numericality: { only_integer: true, greater_than_or_equal_to: 0 }, unless: :durees_conservation_required
before_save :update_juridique_required
before_save :update_durees_conservation_required
include AASM
@ -376,4 +384,9 @@ class Procedure < ApplicationRecord
'column' => column
}
end
def update_durees_conservation_required
self.durees_conservation_required ||= duree_conservation_dossiers_hors_ds.present? && duree_conservation_dossiers_dans_ds.present?
true
end
end

View file

@ -10,6 +10,15 @@
%h4 Description*
= f.text_area :description, rows: '6', placeholder: 'Description du projet', class: 'form-control'
- if !@procedure.locked?
.form-group
%h4 Conservation des données
= f.label :duree_conservation_dossiers_dans_ds, "Sur demarches-simplifiees.fr* (durée en mois après le début de linstruction)"
= f.number_field :duree_conservation_dossiers_dans_ds, class: 'form-control', placeholder: '6', required: true
= f.label :duree_conservation_dossiers_hors_ds, "Hors demarches-simplifiees.fr* (durée en mois)"
= f.number_field :duree_conservation_dossiers_hors_ds, class: 'form-control', placeholder: '6', required: true
.form-group
%h4 Lien site internet
= f.text_field :lien_site_web, class: 'form-control', placeholder: 'https://www.exemple.fr/'

View file

@ -96,6 +96,15 @@
- procedure.types_de_piece_justificative.each do |piece_justificative|
= piece_justificative.libelle
%br
- durees_de_conservation = politiques_conservation_de_donnees(procedure)
- if durees_de_conservation.present?
.row{ style: 'margin-right: 3%; margin-left: 3%;' }
.col-xs-6.col-md-3
%h4.text-info Conservation des données
- durees_de_conservation.each do |text|
%p = text
%br
%h3
= t('dynamics.admin.procedure.stats.title')

View file

@ -1,17 +1,18 @@
- content_for(:title, "N'oubliez pas d'activer votre compte")
- content_for(:title, @subject)
Bonjour,
%br
%br
Vous avez fait la demande dun compte administrateur sur demarches-simplifiees.fr.
Votre compte a été créé mais reste inactif, il arrivera à expiration le #{@expiration_date.strftime("%d/%m/%Y")}
%br
%br
Afin dactiver votre compte, veuillez cliquer sur le lien ci-dessous :
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
%br
%br
Nous restons à votre disposition si vous avez besoin daccompagnement.
%br
%br
= render partial: "layouts/mailers/bizdev_signature"
%p
Bonjour,
%p
Vous avez fait la demande dun compte administrateur sur demarches-simplifiees.fr.
Votre compte a été créé mais reste inactif, il arrivera à expiration le #{@expiration_date.strftime("%d/%m/%Y")}
%p
Afin dactiver votre compte, veuillez cliquer sur le lien ci-dessous :
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
%p
Nous restons à votre disposition si vous avez besoin daccompagnement.
%p
= render partial: "layouts/mailers/bizdev_signature", locals: { author_name: "Camille Garrigue" }

View file

@ -1,22 +1,23 @@
- content_for(:title, 'Activation du compte administrateur')
Bonjour,
%br
%br
Je vous remercie de lintérêt que vous portez à notre outil de dématérialisation de démarches.
%br
%br
Votre compte administrateur a été créé pour l'adresse email #{@admin.email}. Pour lactiver, je vous invite à cliquer sur le lien suivant :
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
%br
%br
Afin de vous accompagner dans la découverte de demarches-simplifiees.fr, je vous propose de mappeler pour faire un point sur vos besoins de dématérialisation.
%br
Vous pouvez me joindre au numéro suivant : 01 76 42 02 87.
%br
%br
Je vous invite également à consulter notre site de documentation qui regroupe l'ensemble des informations relatives à demarches-simplifiees.fr ainsi que des tutoriels dutilisation :
= link_to(DOC_URL, DOC_URL)
%br
%br
= render partial: "layouts/mailers/bizdev_signature"
%p
Bonjour,
%p
Je vous remercie de lintérêt que vous portez à notre outil de dématérialisation de démarches.
%p
Votre compte administrateur a été créé pour l'adresse email #{@admin.email}. Pour lactiver, je vous invite à cliquer sur le lien suivant :
= link_to(admin_activate_url(token: @reset_password_token), admin_activate_url(token: @reset_password_token))
%p
Afin de vous accompagner dans la découverte de demarches-simplifiees.fr, je vous propose de mappeler pour faire un point sur vos besoins de dématérialisation.
%br
Vous pouvez me joindre au numéro suivant : 01 76 42 02 87.
%p
Je vous invite également à consulter notre site de documentation qui regroupe l'ensemble des informations relatives à demarches-simplifiees.fr ainsi que des tutoriels dutilisation :
= link_to(DOC_URL, DOC_URL)
%p
= render partial: "layouts/mailers/bizdev_signature", locals: { author_name: @author_name }

View file

@ -0,0 +1,21 @@
%p
Un nouvel administrateur a été créé sur demarches-simplifiees.fr.
%ul
%li
Plateforme :
= root_url
%li
Email :
= @admin.email
%li
Créateur :
= @administration.email
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,11 +0,0 @@
Un nouvel administrateur a été créé sur demarches-simplifiees.fr.
Plateforme : <%= root_url %>
Login : <%= @admin.email %>
Créateur : <%= @administration.email %>
Bonne journée,
L'équipe demarches-simplifiees.fr

View file

@ -1,17 +1,19 @@
- content_for(:title, 'Demande de création de compte refusée')
Bonjour,
%br
%br
Les comptes administrateurs sont destinés aux administrations publiques souhaitant mettre en place des démarches dématérialisées avec demarches-simplifiees.fr. Il ne semble pas que ce soit votre cas.
%br
%br
Pour les usagers qui souhaitent remplir une démarche, lentrée dans demarches-simplifiees.fr se fait via un lien fourni par ladministration responsable, sur son propre site web. Ce lien vous permettra de créer un compte et de remplir le formulaire dans la foulée.
%br
%br
Si par contre vous rencontrez des problèmes lors de l'utilisation de demarches-simplifiees.fr en tant qu'usager, merci d'expliciter le problème rencontré.
%br
%br
Cordialement,
%br
L'équipe demarches-simplifiees.fr
%p
Bonjour,
%p
Les comptes administrateurs sont destinés aux administrations publiques souhaitant mettre en place des démarches dématérialisées avec demarches-simplifiees.fr. Il ne semble pas que ce soit votre cas.
%p
Pour les usagers qui souhaitent remplir une démarche, lentrée dans demarches-simplifiees.fr se fait via un lien fourni par ladministration responsable, sur son propre site web. Ce lien vous permettra de créer un compte et de remplir le formulaire dans la foulée.
%p
Si par contre vous rencontrez des problèmes lors de l'utilisation de demarches-simplifiees.fr en tant qu'usager, merci d'expliciter le problème rencontré.
%p
Cordialement,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,28 +1,29 @@
%html
%body
%p
Bonjour,
%br
= "Vous avez été invité par #{@avis.claimant.email} à donner votre avis sur le dossier nº #{@avis.dossier.id} de la procédure : #{@avis.dossier.procedure.libelle}."
%br
Message de votre interlocuteur :
%p
Bonjour,
%p{ style: 'border: 1px solid grey' }
= @avis.introduction
%p
= "Vous avez été invité par #{@avis.claimant.email} à donner votre avis sur le dossier nº #{@avis.dossier.id} de la procédure \"#{@avis.dossier.procedure.libelle}\"."
- if @avis.gestionnaire.present?
%p
= link_to "Connectez-vous pour donner votre avis", gestionnaire_dossier_url(@avis.dossier.procedure, @avis.dossier)
- else
%p
= link_to "Inscrivez-vous pour donner votre avis", sign_up_gestionnaire_avis_url(@avis.id, @avis.email)
%p
Message de votre interlocuteur :
%br
%span{ style: 'font-style: italic;' }
= @avis.introduction
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%br
%br
%hr
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.
- if @avis.gestionnaire.present?
%p
= link_to "Connectez-vous pour donner votre avis", gestionnaire_dossier_url(@avis.dossier.procedure, @avis.dossier)
- else
%p
= link_to "Inscrivez-vous pour donner votre avis", sign_up_gestionnaire_avis_url(@avis.id, @avis.email)
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%hr
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,11 +0,0 @@
<p>Bonjour,</p>
<p>Vous avez demandé à regénérer votre mot de passe sur demarches-simplifiees.fr. Pour ceci, merci de suivre le lien suivant :</p>
<p><%= link_to 'Changer mon mot de passe', edit_password_url(@resource, reset_password_token: @token) %> - <%= edit_password_url(@resource, reset_password_token: @token) %></p>
<p>Si vous n'avez pas effectué une telle demande, merci d'ignorer ce mail. Votre mot de passe ne sera pas changé.</p>
<p>Bonne journée,</p>
<p>L'équipe demarches-simplifiees.fr</p>

View file

@ -1,10 +1,14 @@
- content_for(:title, 'Activez votre compte')
%p Bonjour #{@user.email},
%p
Bonjour #{@user.email},
%p
Pour activer votre compte sur demarches-simplifiees.fr, veuillez cliquer sur le lien suivant :
= link_to(confirmation_url(@user, confirmation_token: @token), confirmation_url(@user, confirmation_token: @token))
%p Bonne journée,
%p L'équipe demarches-simplifiees.fr
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -0,0 +1,16 @@
%p
Bonjour,
%p
Vous avez demandé à regénérer votre mot de passe sur demarches-simplifiees.fr. Pour ceci, merci de suivre le lien suivant :
%br
= link_to edit_password_url(@resource, reset_password_token: @token), edit_password_url(@resource, reset_password_token: @token)
%p
Si vous n'avez pas effectué une telle demande, merci d'ignorer ce mail. Votre mot de passe ne sera pas changé.
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -4,8 +4,9 @@
%p
À la demande de l'usager le dossier n° #{@deleted_dossier.dossier_id} a été supprimé.
%br
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -5,8 +5,9 @@
%p
Votre dossier n° #{@deleted_dossier.dossier_id} a bien été supprimé.
Une trace anonyme de ce traitement sera conservée pour ladministration.
%br
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,22 +0,0 @@
%h3 Fichiers des commentaires
%br
- if @facade.commentaires_files.size > 0
%table.table
%thead
%th.col-md-3.col-sm-3.col-xs-3
Email
%th.col-md-2.col-sm-2.col-xs-2
Date
%th.col-md-6.col-sm-6.col-xs-6
Fichier
- @facade.commentaires_files.each do |file|
%tr
%td= file.user.nil? ? 'Accompagnateur' : file.user.email
%td= file.created_at.localtime
%td= link_to file.original_filename, file.content_url, style: 'color: green;', target: '_blank'
- else
%h4.text-primary
Pas de fichier dans le flux de commentaires.

View file

@ -1,19 +1,21 @@
- content_for(:title, 'Activation de votre compte accompagnateur')
Bonjour,
%br
%br
Vous venez d'être nommé accompagnateur sur demarches-simplifiees.fr.
%br
Votre compte a été créé pour l'adresse email #{@gestionnaire.email}. Pour lactiver, je vous invite à cliquer sur le lien suivant : 
= link_to(gestionnaire_activate_url(token: @reset_password_token), gestionnaire_activate_url(token: @reset_password_token))
%br
%br
Par ailleurs, notre site de documentation qui regroupe l'ensemble des informations relatives à demarches-simplifiees.fr ainsi que des tutoriels dutilisation est à votre disposition : 
= link_to(DOC_URL, DOC_URL)
%br
%br
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%p
Bonjour,
%p
Vous venez d'être nommé accompagnateur sur demarches-simplifiees.fr.
%p
Votre compte a été créé pour l'adresse email #{@gestionnaire.email}. Pour lactiver, je vous invite à cliquer sur le lien suivant : 
= link_to(gestionnaire_activate_url(token: @reset_password_token), gestionnaire_activate_url(token: @reset_password_token))
%p
Par ailleurs, notre site de documentation qui regroupe l'ensemble des informations relatives à demarches-simplifiees.fr ainsi que des tutoriels dutilisation est à votre disposition : 
= link_to(DOC_URL, DOC_URL)
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,6 +1,6 @@
- content_for(:title, 'Vos activités sur demarches-simplifiees.fr')
- content_for(:title, @subject)
- @args[:procedure_overviews].each_with_index do |procedure_overview, index|
- @overview[:procedure_overviews].each_with_index do |procedure_overview, index|
%h2{ style: 'font-size: 20px; font-weight: 300; margin: 25px 0 5px;' }
#{procedure_overview.procedure.libelle}
@ -42,5 +42,5 @@
- end.join(', ')
= sanitize(old_dossiers_en_instruction, attributes: %w(href style))
- if index != (@args[:procedure_overviews].count - 1)
- if index != (@overview[:procedure_overviews].count - 1)
.spacer{ style: 'border-bottom: 1px solid #CCC; margin: 25px 0 30px;' }

View file

@ -1,9 +1,13 @@
Bonjour,
%p
Bonjour,
%p
<%= @sender.email %> vous a envoyé le dossier nº <%= @dossier.id %>, cliquez sur le lien ci-dessous pour y accéder :
<%= gestionnaire_dossier_url(@dossier.procedure, @dossier) %>
Bonne journée,
%p
Bonne journée,
L'équipe demarches-simplifiees.fr
%p
L'équipe demarches-simplifiees.fr

View file

@ -0,0 +1,22 @@
%p
Bonjour,
%p
L'utilisateur
= @invite.email_sender
souhaite que vous participiez à l'élaboration d'un dossier sur demarches-simplifiees.fr.
%p
Cette plateforme permet à ses utilisateurs d'établir des dossiers 100 % en ligne et de dialoguer avec plusieurs interlocuteurs privilégiés avant d'instruire un dépot.
%p
Afin de répondre à cette invitation, merci de vous inscrire avec l'adresse email
= @invite.email
sur
= "#{users_dossiers_invite_url(@invite.id)}?email=#{@invite.email}"
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,11 +0,0 @@
Bonjour,
L'utilisateur <%= @invite.email_sender %> souhaite que vous participiez à l'élaboration d'un dossier sur demarches-simplifiees.fr.
Cette plateforme permet à ses utilisateurs d'établir des dossiers 100 % en ligne et de dialoguer avec plusieurs interlocuteurs privilégiés avant d'instruire un dépot.
Afin de répondre à cette invitation, merci de vous inscrire avec l'adresse email <%= @invite.email %> sur <%= users_dossiers_invite_url(@invite.id)+"?email=#{@invite.email}" %>.
Bonne journée,
L'équipe demarches-simplifiees.fr

View file

@ -0,0 +1,17 @@
%p
Bonjour,
%p
L'utilisateur
= @invite.email_sender
souhaite que vous participiez à l'élaboration d'un dossier sur demarches-simplifiees.fr.
%p
Pour le consulter, merci de suivre ce lien :
= users_dossiers_invite_url(@invite.id)
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -1,9 +0,0 @@
Bonjour,
L'utilisateur <%= @invite.email_sender %> souhaite que vous participiez à l'élaboration d'un dossier sur demarches-simplifiees.fr.
Pour le consulter, merci de suivre ce lien : <%= users_dossiers_invite_url(@invite.id) %>
Bonne journée,
L'équipe demarches-simplifiees.fr

View file

@ -1 +0,0 @@
= yield

View file

@ -1,7 +1,7 @@
Cordialement,
%br
%br
Camille Garrigue
= author_name
%br
%br
Équipe demarches-simplifiees.fr

View file

@ -1,19 +0,0 @@
Bonjour,
%br
%br
Votre dossier nº --numéro du dossier-- a été accepté le --date de décision--.
%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
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,22 +0,0 @@
Bonjour,
%br
%br
Votre dossier nº --numéro du dossier-- a été accepté le --date de décision--.
%br
%br
Vous pouvez télécharger votre attestation à l'adresse suivante : --lien attestation--
%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
L'équipe demarches-simplifiees.fr (anciennement Téléprocédures Simplifiées)
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,19 +0,0 @@
Bonjour,
%br
%br
Votre administration vous confirme la bonne réception de votre dossier nº --numéro du 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
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,16 +0,0 @@
Bonjour,
%br
%br
Votre administration vous confirme la bonne réception de votre dossier nº --numéro du dossier--. Celui-ci sera instruit dans le délai légal déclaré par votre interlocuteur.
%br
%br
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,19 +0,0 @@
Bonjour,
%br
%br
Votre dossier nº --numéro du dossier-- a été refusé le --date de décision--.
%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
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,19 +0,0 @@
Bonjour,
%br
%br
Votre dossier nº --numéro du dossier-- a été classé sans suite le --date de décision--.
%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
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,20 @@
%p
Bonjour,
%p
Votre dossier nº --numéro du dossier-- a été accepté le --date de décision--.
%p
À tout moment, vous pouvez consulter votre dossier et les éventuels messages de l'administration à cette adresse : --lien dossier--
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,23 @@
%p
Bonjour,
%p
Votre dossier nº --numéro du dossier-- a été accepté le --date de décision--.
%p
Vous pouvez télécharger votre attestation à l'adresse suivante : --lien attestation--
%p
À tout moment, vous pouvez consulter votre dossier et les éventuels messages de l'administration à cette adresse : --lien dossier--
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr (anciennement Téléprocédures Simplifiées)
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,20 @@
%p
Bonjour,
%p
Votre administration vous confirme la bonne réception de votre dossier nº --numéro du dossier--.
%p
À tout moment, vous pouvez consulter votre dossier et les éventuels messages de l'administration à cette adresse : --lien dossier--
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,21 @@
%p
Bonjour,
%p
Un nouveau message est disponible dans votre espace demarches-simplifiees.fr.
%p
Pour le consulter, merci de vous rendre sur
= users_dossier_recapitulatif_url(dossier_id: @dossier.id)
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,13 +0,0 @@
Bonjour,
Un nouveau message est disponible dans votre espace demarches-simplifiees.fr.
Pour le consulter, merci de vous rendre sur <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%>
Bonne journée,
L'équipe demarches-simplifiees.fr
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,17 @@
%p
Bonjour,
%p
Votre administration vous confirme la bonne réception de votre dossier nº --numéro du dossier--. Celui-ci sera instruit dans le délai légal déclaré par votre interlocuteur.
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,20 @@
%p
Bonjour,
%p
Votre dossier nº --numéro du dossier-- a été refusé le --date de décision--.
%p
Pour en savoir plus sur le motif du refus, vous pouvez consulter votre dossier et les éventuels messages de l'administration à cette adresse : --lien dossier--
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,19 +1,20 @@
Bonjour,
%br
%br
Vous pouvez retrouver et compléter le brouillon que vous avez créé pour la démarche
%strong= @dossier.procedure.libelle
à l'adresse suivante :
= link_to users_dossiers_url(liste: 'brouillon'), users_dossiers_url(liste: 'brouillon'), target: '_blank'
%br
%br
Bonne journée,
%br
%br
L'équipe demarches-simplifiees.fr
%br
%br
%br
%br
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.
%p
Bonjour,
%p
Vous pouvez retrouver et compléter le brouillon que vous avez créé pour la démarche
%strong= @dossier.procedure.libelle
à l'adresse suivante :
= link_to users_dossiers_url(liste: 'brouillon'), users_dossiers_url(liste: 'brouillon'), target: '_blank'
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -0,0 +1,20 @@
%p
Bonjour,
%p
Votre dossier nº --numéro du dossier-- a été classé sans suite le --date de décision--.
%p
Pour en savoir plus sur les raisons de ce classement sans suite, vous pouvez consulter votre dossier et les éventuels messages de l'administration à cette adresse : --lien dossier--
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr
%p
%p
Merci de ne pas répondre à cet email. Postez directement vos questions dans votre dossier sur la plateforme.

View file

@ -1,12 +1,16 @@
- content_for(:title, 'Demande de création de compte')
- content_for(:title, @subject)
%h1 Bonjour
%p Une demande de création de compte a été réalisée sur le site demarches-simplifiees.fr pour l'email #{@user.email}.
%p
Une demande de création de compte a été réalisée sur le site demarches-simplifiees.fr pour l'email #{@user.email}.
%p
Votre compte existe déjà. Si vous souhaitez changer votre mot de passe, veuillez suivre les instructions à l'adresse suivante
#{link_to(new_password_url(@user), new_password_url(@user))}.
%p Si vous n'êtes pas à l'origine de cette demande, vous pouvez ignorer ce mail.
%p
Si vous n'êtes pas à l'origine de cette demande, vous pouvez ignorer ce mail.
%p
Cordialement,

View file

@ -1,5 +0,0 @@
<p>Welcome <%= @email %>!</p>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>

View file

@ -1,8 +0,0 @@
<p>Hello <%= @resource.email %>!</p>
<p>Someone has requested a link to change your password. You can do this through the link below.</p>
<p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>

View file

@ -1,7 +0,0 @@
<p>Hello <%= @resource.email %>!</p>
<p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>
<p>Click the link below to unlock your account:</p>
<p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>

View file

@ -88,6 +88,7 @@ fr:
errors:
messages:
blank: "doit être rempli"
not_a_number: 'doit être un nombre'
models:
attestation_template:
attributes:
@ -108,25 +109,20 @@ fr:
email:
invalid: invalide
taken: déjà utilisé
blank: est vide
password:
too_short: ': Le mot de passe est trop court'
blank: ': Le mot de passe est vide'
password_confirmation:
confirmation: ': Les deux mots de passe ne correspondent pas'
invite:
attributes:
email:
blank: est vide
taken: ': Invitation déjà envoyée'
gestionnaire:
attributes:
email:
invalid: invalide
taken: déjà utilisé
blank: est vide
password:
blank: ': Le mot de passe est vide'
too_short: ': Le mot de passe est trop court'
devise:

View file

@ -3,17 +3,5 @@ fr:
attributes:
procedure:
organisation: Organisme
errors:
models:
procedure:
attributes:
libelle:
blank: Attribut manquant
description:
blank: Attribut manquant
lien_demarche:
blank: Attribut manquant
organisation:
blank: Attribut manquant
'cadre_juridique':
blank: Attribut manquant
duree_conservation_dossiers_dans_ds: Durée de conservation des dossiers sur demarches-simplifiees.fr
duree_conservation_dossiers_hors_ds: Durée de conservation des dossiers hors demarches-simplifiees.fr

View file

@ -0,0 +1,5 @@
class AddDureesConservationRequiredToProcedure < ActiveRecord::Migration[5.2]
def change
add_column :procedures, :durees_conservation_required, :boolean, default: true
end
end

View file

@ -483,6 +483,7 @@ ActiveRecord::Schema.define(version: 2018_06_01_084546) do
t.integer "duree_conservation_dossiers_hors_ds"
t.string "cadre_juridique"
t.boolean "juridique_required", default: true
t.boolean "durees_conservation_required", default: true
t.index ["hidden_at"], name: "index_procedures_on_hidden_at"
t.index ["parent_procedure_id"], name: "index_procedures_on_parent_procedure_id"
t.index ["service_id"], name: "index_procedures_on_service_id"

View file

@ -0,0 +1,5 @@
namespace :'2018_05_24_optional_durees_conservation_for_legacy_procedures' do
task set: :environment do
Procedure.all.update_all(durees_conservation_required: false)
end
end

View file

@ -0,0 +1,18 @@
namespace :'2018_06_05_resend_attestation' do
task set: :environment do
procedure = Procedure.find(4247)
dossiers = procedure.dossiers.includes(:attestation).where(state: 'accepte').select do |d|
d.processed_at < procedure.attestation_template.updated_at
end
dossiers.each do |dossier|
attestation = dossier.attestation
attestation.destroy
dossier.attestation = dossier.build_attestation
Mailers::ResendAttestationMailer.resend_attestation(dossier).deliver_later
puts "Email envoyé à #{email} pour le dossier #{dossier.id}"
end
end
end

View file

@ -0,0 +1,44 @@
namespace :'2018_06_05_send_new_attestation' do
task set: :environment do
ids = [
20982,
21262,
54914,
59769,
63747,
59520,
21496,
13386,
13371,
14585,
15307,
17212,
16037,
60403,
60400,
20534,
60123,
16361,
16359,
57147,
51979,
49632,
48628,
48624,
22077,
41103
]
dossiers = ids.map { |id| Dossier.Dossier.find_by(id: id) }.compact
dossiers.each do |dossier|
attestation = dossier.attestation
attestation.destroy
dossier.attestation = dossier.build_attestation
Mailers::NewAttestationMailer.new_attestation(dossier).deliver_later
puts "Email envoyé à #{email} pour le dossier #{dossier.id}"
end
end
end

View file

@ -16,6 +16,8 @@ describe Admin::ProceduresController, type: :controller do
let(:cadastre) { '0' }
let(:cerfa_flag) { true }
let(:cadre_juridique) { 'cadre juridique' }
let(:duree_conservation_dossiers_dans_ds) { 3 }
let(:duree_conservation_dossiers_hors_ds) { 6 }
let(:procedure_params) {
{
@ -26,6 +28,8 @@ describe Admin::ProceduresController, type: :controller do
lien_demarche: lien_demarche,
cerfa_flag: cerfa_flag,
cadre_juridique: cadre_juridique,
duree_conservation_dossiers_dans_ds: duree_conservation_dossiers_dans_ds,
duree_conservation_dossiers_hors_ds: duree_conservation_dossiers_hors_ds,
module_api_carto_attributes: {
use_api_carto: use_api_carto,
quartiers_prioritaires: quartiers_prioritaires,
@ -196,6 +200,8 @@ describe Admin::ProceduresController, type: :controller do
it { expect(subject.direction).to eq(direction) }
it { expect(subject.lien_demarche).to eq(lien_demarche) }
it { expect(subject.administrateur_id).to eq(admin.id) }
it { expect(subject.duree_conservation_dossiers_dans_ds).to eq(duree_conservation_dossiers_dans_ds) }
it { expect(subject.duree_conservation_dossiers_hors_ds).to eq(duree_conservation_dossiers_hors_ds) }
end
describe 'procedure module api carto attributs in database' do
@ -267,6 +273,8 @@ describe Admin::ProceduresController, type: :controller do
let(:lien_demarche) { 'http://plip.com' }
let(:use_api_carto) { '1' }
let(:cadastre) { '1' }
let(:duree_conservation_dossiers_dans_ds) { 7 }
let(:duree_conservation_dossiers_hors_ds) { 5 }
describe 'procedure attributs in database' do
subject { procedure }
@ -276,6 +284,8 @@ describe Admin::ProceduresController, type: :controller do
it { expect(subject.organisation).to eq(organisation) }
it { expect(subject.direction).to eq(direction) }
it { expect(subject.lien_demarche).to eq(lien_demarche) }
it { expect(subject.duree_conservation_dossiers_dans_ds).to eq(duree_conservation_dossiers_dans_ds) }
it { expect(subject.duree_conservation_dossiers_hors_ds).to eq(duree_conservation_dossiers_hors_ds) }
end
describe 'procedure module api carto attributs in database' do

View file

@ -276,7 +276,7 @@ describe NewGestionnaire::AvisController, type: :controller do
it { expect(created_gestionnaire).to be_nil }
it { is_expected.to redirect_to sign_up_gestionnaire_avis_path(avis_id, invited_email) }
it { expect(flash.alert).to eq(['Password : Le mot de passe est vide']) }
it { expect(flash.alert).to eq(['Password doit être rempli']) }
end
end
end

View file

@ -10,6 +10,8 @@ FactoryBot.define do
published_at nil
cerfa_flag false
administrateur { create(:administrateur) }
duree_conservation_dossiers_dans_ds 3
duree_conservation_dossiers_hors_ds 6
after(:build) do |procedure, _evaluator|
if procedure.module_api_carto.nil?

View file

@ -1,6 +1,9 @@
require 'spec_helper'
require 'features/admin/procedure_spec_helper'
feature 'As an administrateur I wanna clone a procedure', js: true do
include ProcedureSpecHelper
let(:administrateur) { create(:administrateur) }
before do
@ -12,9 +15,7 @@ feature 'As an administrateur I wanna clone a procedure', js: true do
before 'Create procedure' do
page.find_by_id('new-procedure').click
page.find_by_id('from-scratch').click
fill_in 'procedure_libelle', with: 'libelle de la procedure'
page.execute_script("$('#procedure_description').val('description de la procedure')")
fill_in 'procedure_cadre_juridique', with: 'cadre juridique'
fill_in_dummy_procedure_details
page.find_by_id('save-procedure').click
end

View file

@ -1,6 +1,9 @@
require 'spec_helper'
require 'features/admin/procedure_spec_helper'
feature 'As an administrateur I wanna create a new procedure', js: true do
include ProcedureSpecHelper
let(:administrateur) { create(:administrateur) }
before do
@ -35,11 +38,11 @@ feature 'As an administrateur I wanna create a new procedure', js: true do
scenario 'Finding save button for new procedure, libelle, description and cadre_juridique required' do
page.find_by_id('new-procedure').click
page.find_by_id('from-scratch').click
fill_in 'procedure_duree_conservation_dossiers_dans_ds', with: '3'
fill_in 'procedure_duree_conservation_dossiers_hors_ds', with: '6'
page.find_by_id('save-procedure').click
page.find_by_id('flash_message').visible?
fill_in 'procedure_libelle', with: 'libelle de la procedure'
page.execute_script("$('#procedure_description').val('description de la procedure')")
fill_in 'procedure_cadre_juridique', with: 'cadre juridique'
fill_in_dummy_procedure_details
page.find_by_id('save-procedure').click
expect(page).to have_current_path(admin_procedure_types_de_champ_path(Procedure.first.id.to_s))
end
@ -49,9 +52,7 @@ feature 'As an administrateur I wanna create a new procedure', js: true do
before 'Create procedure' do
page.find_by_id('new-procedure').click
page.find_by_id('from-scratch').click
fill_in 'procedure_libelle', with: 'libelle de la procedure'
page.execute_script("$('#procedure_description').val('description de la procedure')")
fill_in 'procedure_cadre_juridique', with: 'cadre juridique'
fill_in_dummy_procedure_details
page.find_by_id('save-procedure').click
procedure = Procedure.last

View file

@ -0,0 +1,9 @@
module ProcedureSpecHelper
def fill_in_dummy_procedure_details
fill_in 'procedure_libelle', with: 'libelle de la procedure'
page.execute_script("$('#procedure_description').val('description de la procedure')")
fill_in 'procedure_cadre_juridique', with: 'cadre juridique'
fill_in 'procedure_duree_conservation_dossiers_dans_ds', with: '3'
fill_in 'procedure_duree_conservation_dossiers_hors_ds', with: '6'
end
end

View file

@ -0,0 +1,37 @@
require 'rails_helper'
RSpec.describe ConservationDeDonneesHelper, type: :helper do
let(:procedure) { build(:procedure, duree_conservation_dossiers_dans_ds: dans_ds, duree_conservation_dossiers_hors_ds: hors_ds) }
describe "politiques_conservation_de_donnees" do
subject { politiques_conservation_de_donnees(procedure) }
context "when both retention times are set" do
let(:dans_ds) { 3 }
let(:hors_ds) { 6 }
it { is_expected.to eq([ "dans demarches-simplifiees.fr 3 mois après le début de linstruction du dossier", "hors demarches-simplifiees.fr pendant 6 mois" ]) }
end
context "when only in-app retention time is set" do
let(:dans_ds) { 3 }
let(:hors_ds) { nil }
it { is_expected.to eq([ "dans demarches-simplifiees.fr 3 mois après le début de linstruction du dossier" ]) }
end
context "when only out of app retention time is set" do
let(:dans_ds) { nil }
let(:hors_ds) { 6 }
it { is_expected.to eq([ "hors demarches-simplifiees.fr pendant 6 mois" ]) }
end
context "when the retention time is not set" do
let(:dans_ds) { nil }
let(:hors_ds) { nil }
it { is_expected.to be_empty }
end
end
end

40
spec/lib/biz_dev_spec.rb Normal file
View file

@ -0,0 +1,40 @@
require 'spec_helper'
describe BizDev, lib: true do
let(:first_biz_dev_id) { BizDev::BIZ_DEV_IDS.first }
let(:non_biz_dev_id) { first_biz_dev_id - 1 }
it { expect(BizDev::BIZ_DEV_MAPPING).not_to include(non_biz_dev_id) }
describe '#full_name' do
subject { described_class.full_name(administration_id) }
context 'when administration is a business developer' do
let(:administration_id) { first_biz_dev_id }
it { is_expected.not_to be_empty }
end
context 'when administration is not a business developer' do
let(:administration_id) { non_biz_dev_id }
it { is_expected.not_to be_empty }
end
end
describe '#pipedrive_id' do
subject { described_class.pipedrive_id(administration_id) }
context 'when administration is a business developer' do
let(:administration_id) { first_biz_dev_id }
it { is_expected.to be > 0 }
end
context 'when administration is not a business developer' do
let(:administration_id) { non_biz_dev_id }
it { is_expected.to be > 0 }
end
end
end

View file

@ -0,0 +1,36 @@
RSpec.describe AdministrationMailer, type: :mailer do
describe '#new_admin_email' do
let(:admin) { create(:administrateur) }
let(:administration) { create(:administration) }
subject { described_class.new_admin_email(admin, administration) }
it { expect(subject.subject).not_to be_empty }
end
describe '#invite_admin' do
let(:admin) { create(:administrateur) }
let(:token) { "Toc toc toc" }
let(:administration_id) { BizDev::BIZ_DEV_IDS.first }
subject { described_class.invite_admin(admin, token, administration_id) }
it { expect(subject.subject).not_to be_empty }
end
describe '#refuse_amin' do
let(:mail) { "l33t-4dm1n@h4x0r.com" }
subject { described_class.refuse_admin(mail) }
it { expect(subject.subject).not_to be_empty }
end
describe '#dubious_procedures' do
let(:procedures_and_type_de_champs) { [] }
subject { described_class.dubious_procedures(procedures_and_type_de_champs) }
it { expect(subject.subject).not_to be_empty }
end
end

View file

@ -7,7 +7,7 @@ RSpec.describe AvisMailer, type: :mailer do
subject { described_class.avis_invitation(avis) }
it { expect(subject.subject).to eq("Donnez votre avis sur le dossier nº #{avis.dossier.id} (#{avis.dossier.procedure.libelle})") }
it { expect(subject.body).to include("Vous avez été invité par #{avis.claimant.email} à donner votre avis sur le dossier nº #{avis.dossier.id} de la procédure : #{avis.dossier.procedure.libelle}.") }
it { expect(subject.body).to include("Vous avez été invité par #{avis.claimant.email} à donner votre avis sur le dossier nº #{avis.dossier.id} de la procédure &quot;#{avis.dossier.procedure.libelle}&quot;.") }
it { expect(subject.body).to include(avis.introduction) }
end
end

View file

@ -34,6 +34,6 @@ RSpec.describe GestionnaireMailer, type: :mailer do
subject { described_class.last_week_overview(gestionnaire) }
it { expect(subject.body).to include('Vos activités') }
it { expect(subject.body).to include('Votre activité hebdomadaire') }
end
end

View file

@ -57,7 +57,7 @@ RSpec.describe NotificationMailer, type: :mailer do
subject(:subject) { described_class.new_answer(dossier) }
it { expect(subject.body).to match('Un nouveau message est disponible dans votre espace demarches-simplifiees.fr.') }
it { expect(subject.body).to include("Pour le consulter, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") }
it { expect(subject.subject).to eq("Nouveau message pour votre dossier demarches-simplifiees.fr  #{dossier.id}") }
it { expect(subject.body).to include(users_dossier_recapitulatif_url(dossier_id: dossier.id)) }
it { expect(subject.subject).to eq("Nouveau message pour votre dossier  #{dossier.id}") }
end
end

View file

@ -8,7 +8,7 @@ class AdministrationMailerPreview < ActionMailer::Preview
end
def invite_admin
AdministrationMailer.invite_admin(Administrateur.last, "12345678")
AdministrationMailer.invite_admin(Administrateur.last, "12345678", 0)
end
def refuse_admin

View file

@ -1,6 +1,8 @@
require 'spec_helper'
describe Administrateur, type: :model do
let(:administration) { create(:administration) }
describe 'assocations' do
it { is_expected.to have_and_belong_to_many(:gestionnaires) }
it { is_expected.to have_many(:procedures) }
@ -53,14 +55,14 @@ describe Administrateur, type: :model do
describe '#find_inactive_by_token' do
let(:administrateur) { create(:administration).invite_admin('paul@tps.fr') }
let(:reset_password_token) { administrateur.invite! }
let(:reset_password_token) { administrateur.invite!(administration.id) }
it { expect(Administrateur.find_inactive_by_token(reset_password_token)).not_to be_nil }
end
describe '#reset_password' do
let(:administrateur) { create(:administration).invite_admin('paul@tps.fr') }
let(:reset_password_token) { administrateur.invite! }
let(:reset_password_token) { administrateur.invite!(administration.id) }
it { expect(Administrateur.reset_password(reset_password_token, '12345678').errors).to be_empty }
it { expect(Administrateur.reset_password('123', '12345678').errors).not_to be_empty }

View file

@ -591,7 +591,7 @@ describe Dossier do
end.to change(ActionMailer::Base.deliveries, :size).from(0).to(1)
mail = ActionMailer::Base.deliveries.last
expect(mail.subject).to eq("Retrouvez votre brouillon pour la démarche : #{procedure.libelle}")
expect(mail.subject).to eq("Retrouvez votre brouillon pour la démarche \"#{procedure.libelle}\"")
end
it "does not send an email when the dossier is created with a non brouillon state" do

View file

@ -41,7 +41,7 @@ describe Invite do
it do
expect(invite.save).to be false
expect(invite.errors.full_messages).to eq(["Email est vide"])
expect(invite.errors.full_messages).to eq(["Email doit être rempli"])
end
end
end

View file

@ -199,6 +199,63 @@ describe Procedure do
it { expect(procedure.valid?).to eq(true) }
end
shared_examples 'duree de conservation' do
context 'duree_conservation_required it true, the field gets validated' do
before { subject.durees_conservation_required = true }
it { is_expected.not_to allow_value(nil).for(field_name) }
it { is_expected.not_to allow_value('').for(field_name) }
it { is_expected.not_to allow_value('trois').for(field_name) }
it { is_expected.to allow_value(3).for(field_name) }
end
context 'duree_conservation_required is false, the field doesnt get validated' do
before { subject.durees_conservation_required = false }
it { is_expected.to allow_value(nil).for(field_name) }
it { is_expected.to allow_value('').for(field_name) }
it { is_expected.not_to allow_value('trois').for(field_name) }
it { is_expected.to allow_value(3).for(field_name) }
end
end
describe 'duree de conservation dans ds' do
let(:field_name) { :duree_conservation_dossiers_dans_ds }
it_behaves_like 'duree de conservation'
end
describe 'duree de conservation hors ds' do
let(:field_name) { :duree_conservation_dossiers_hors_ds }
it_behaves_like 'duree de conservation'
end
end
describe '#duree_de_conservation_required' do
it 'automatically jumps to true once both durees de conservation have been set' do
p = build(
:procedure,
durees_conservation_required: false,
duree_conservation_dossiers_dans_ds: nil,
duree_conservation_dossiers_hors_ds: nil
)
p.save
expect(p.durees_conservation_required).to be_falsey
p.duree_conservation_dossiers_hors_ds = 3
p.save
expect(p.durees_conservation_required).to be_falsey
p.duree_conservation_dossiers_dans_ds = 6
p.save
expect(p.durees_conservation_required).to be_truthy
p.duree_conservation_dossiers_dans_ds = nil
p.save
expect(p.durees_conservation_required).to be_truthy
end
end
describe '#types_de_champ_ordered' do