feat(routage): self managing instructeurs
This commit is contained in:
parent
d4e8158887
commit
357c684688
9 changed files with 63 additions and 13 deletions
|
@ -196,6 +196,13 @@ module NewAdministrateur
|
||||||
notice: "Le routage est activé."
|
notice: "Le routage est activé."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_instructeurs_self_management_enabled
|
||||||
|
procedure.update!(instructeurs_self_management_enabled_params)
|
||||||
|
|
||||||
|
redirect_to admin_procedure_groupe_instructeurs_path(procedure),
|
||||||
|
notice: "L’autogestion des instructeurs est #{procedure.instructeurs_self_management_enabled? ? "activée" : "désactivée"}."
|
||||||
|
end
|
||||||
|
|
||||||
def import
|
def import
|
||||||
if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
|
if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
|
||||||
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"
|
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"
|
||||||
|
@ -297,5 +304,9 @@ module NewAdministrateur
|
||||||
def marcel_content_type
|
def marcel_content_type
|
||||||
Marcel::MimeType.for(group_csv_file.read, name: group_csv_file.original_filename, declared_type: group_csv_file.content_type)
|
Marcel::MimeType.for(group_csv_file.read, name: group_csv_file.original_filename, declared_type: group_csv_file.content_type)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def instructeurs_self_management_enabled_params
|
||||||
|
params.require(:procedure).permit(:instructeurs_self_management_enabled)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -57,4 +57,8 @@ module ProcedureHelper
|
||||||
def procedure_auto_archive_datetime(procedure)
|
def procedure_auto_archive_datetime(procedure)
|
||||||
procedure_auto_archive_date(procedure) + ' ' + procedure_auto_archive_time(procedure)
|
procedure_auto_archive_date(procedure) + ' ' + procedure_auto_archive_time(procedure)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def can_manage_groupe_instructeurs?(procedure)
|
||||||
|
procedure.routee? && current_administrateur.present? && current_administrateur.owns?(procedure)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -637,6 +637,10 @@ class Procedure < ApplicationRecord
|
||||||
routing_enabled? || groupe_instructeurs.size > 1
|
routing_enabled? || groupe_instructeurs.size > 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def instructeurs_self_management?
|
||||||
|
routee? || instructeurs_self_management_enabled?
|
||||||
|
end
|
||||||
|
|
||||||
def defaut_groupe_instructeur_for_new_dossier
|
def defaut_groupe_instructeur_for_new_dossier
|
||||||
if !routee? || feature_enabled?(:procedure_routage_api)
|
if !routee? || feature_enabled?(:procedure_routage_api)
|
||||||
defaut_groupe_instructeur
|
defaut_groupe_instructeur
|
||||||
|
|
|
@ -1,12 +1,23 @@
|
||||||
- content_for(:title, "Instructeurs du groupe #{@groupe_instructeur.label}")
|
- if @procedure.routee?
|
||||||
|
- content_for(:title, "Instructeurs du groupe #{@groupe_instructeur.label}")
|
||||||
|
|
||||||
= render partial: 'new_administrateur/breadcrumbs',
|
= render partial: 'new_administrateur/breadcrumbs',
|
||||||
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)),
|
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)),
|
||||||
link_to('Groupes d’instructeurs', instructeur_groupes_path(@procedure)),
|
link_to('Groupes d’instructeurs', instructeur_groupes_path(@procedure)),
|
||||||
@groupe_instructeur.label] }
|
@groupe_instructeur.label] }
|
||||||
|
|
||||||
|
- else
|
||||||
|
- content_for(:title, "Instructeurs de la démarche #{@procedure.libelle}")
|
||||||
|
|
||||||
|
= render partial: 'new_administrateur/breadcrumbs',
|
||||||
|
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)), 'Instructeurs'] }
|
||||||
|
|
||||||
.container.groupe-instructeur
|
.container.groupe-instructeur
|
||||||
%h1 Groupe « #{@groupe_instructeur.label} »
|
%h1
|
||||||
|
- if @procedure.routee?
|
||||||
|
Groupe « #{@groupe_instructeur.label} »
|
||||||
|
- else
|
||||||
|
Démarche « #{@procedure.libelle} »
|
||||||
|
|
||||||
.card.mt-2
|
.card.mt-2
|
||||||
.card-title Gestion des instructeurs
|
.card-title Gestion des instructeurs
|
||||||
|
@ -27,10 +38,11 @@
|
||||||
- @instructeurs.each do |instructeur|
|
- @instructeurs.each do |instructeur|
|
||||||
%tr
|
%tr
|
||||||
%td= instructeur.email
|
%td= instructeur.email
|
||||||
|
- confirmation_message = @procedure.routee? ? "Êtes-vous sûr de vouloir retirer l’instructeur « #{instructeur.email} » du groupe « #{@groupe_instructeur.label} » ?" : "Êtes-vous sûr de vouloir retirer l’instructeur « #{instructeur.email} » de la démarche ?"
|
||||||
%td.actions= button_to 'retirer',
|
%td.actions= button_to 'retirer',
|
||||||
{ action: :remove_instructeur },
|
{ action: :remove_instructeur },
|
||||||
{ method: :delete,
|
{ method: :delete,
|
||||||
data: { confirm: "Êtes-vous sûr de vouloir retirer l’instructeur « #{instructeur.email} » du groupe « #{@groupe_instructeur.label} » ?" },
|
data: { confirm: confirmation_message },
|
||||||
params: { instructeur: { id: instructeur.id }},
|
params: { instructeur: { id: instructeur.id }},
|
||||||
class: 'button' }
|
class: 'button' }
|
||||||
|
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
|
|
|
|
||||||
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
|
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
|
||||||
|
|
||||||
- if @procedure.routee?
|
- if @procedure.instructeurs_self_management?
|
||||||
|
|
|
|
||||||
- if current_administrateur.present? && current_administrateur.owns?(@procedure)
|
- if can_manage_groupe_instructeurs?(@procedure)
|
||||||
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
|
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
|
||||||
- else
|
- else
|
||||||
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
|
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
|
|
|
|
||||||
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
|
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
|
||||||
|
|
||||||
- if @procedure.routee?
|
- if @procedure.instructeurs_self_management?
|
||||||
|
|
|
|
||||||
- if current_administrateur.present? && current_administrateur.owns?(@procedure)
|
- if can_manage_groupe_instructeurs?(@procedure)
|
||||||
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
|
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
|
||||||
- else
|
- else
|
||||||
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
|
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
|
||||||
|
|
|
@ -2,4 +2,17 @@
|
||||||
.card-title Routage
|
.card-title Routage
|
||||||
%p.notice= t('.notice_html')
|
%p.notice= t('.notice_html')
|
||||||
|
|
||||||
= link_to 'Activer le routage', update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure), class: 'button primary', method: 'patch'
|
= link_to t('.button.routing_enable'), update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure), class: 'button primary mt-1', method: 'patch'
|
||||||
|
|
||||||
|
.card-title.mt-4 L‘autogestion des instructeurs
|
||||||
|
%p.notice= t('.self_managment_notice_html')
|
||||||
|
|
||||||
|
= form_for procedure,
|
||||||
|
method: :patch,
|
||||||
|
url: update_instructeurs_self_management_enabled_admin_procedure_groupe_instructeurs_path(procedure),
|
||||||
|
html: { class: 'form procedure-form__column--form no-background' } do |f|
|
||||||
|
%label.toggle-switch
|
||||||
|
= f.check_box :instructeurs_self_management_enabled, class: 'toggle-switch-checkbox', onchange: 'this.form.submit()'
|
||||||
|
%span.toggle-switch-control.round
|
||||||
|
%span.toggle-switch-label.on
|
||||||
|
%span.toggle-switch-label.off
|
||||||
|
|
|
@ -38,4 +38,9 @@ fr:
|
||||||
<br><br>
|
<br><br>
|
||||||
Cette fonctionnalité permet d’acheminer les dossier vers chaque groupe, et de ne plus avoir besoin de filtrer ses dossiers parmi une grande quantité de demandes. Elle est donc particulièrement adaptée pour les démarches nationales instruites localement.
|
Cette fonctionnalité permet d’acheminer les dossier vers chaque groupe, et de ne plus avoir besoin de filtrer ses dossiers parmi une grande quantité de demandes. Elle est donc particulièrement adaptée pour les démarches nationales instruites localement.
|
||||||
<br><br>
|
<br><br>
|
||||||
Les instructeurs ne voient que les dossiers les concernant, et n’ont donc pas accès aux données extérieures à leur périmètre.
|
Les instructeurs ne voient que les dossiers les concernant, et n’ont donc pas accès aux données extérieures à leur périmètre.
|
||||||
|
self_managment_notice_html: |
|
||||||
|
L’autogestion des instructeurs permet aux instructeurs de gérer eux-mêmes la liste des instructeurs de la démarche.
|
||||||
|
button:
|
||||||
|
routing_enable: Activer le routage
|
||||||
|
self_managment_toggle: Activer l’autogestion des instructeurs
|
||||||
|
|
|
@ -424,6 +424,7 @@ Rails.application.routes.draw do
|
||||||
collection do
|
collection do
|
||||||
patch 'update_routing_criteria_name'
|
patch 'update_routing_criteria_name'
|
||||||
patch 'update_routing_enabled'
|
patch 'update_routing_enabled'
|
||||||
|
patch 'update_instructeurs_self_management_enabled'
|
||||||
post 'import'
|
post 'import'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue