ajout d'un écran intermediaire pour gérer la reaffectation des dossiers

This commit is contained in:
clemkeirua 2020-01-07 17:39:50 +01:00
parent 45c8c8ca21
commit 12430a8068
6 changed files with 61 additions and 1 deletions

View file

@ -60,6 +60,27 @@ module NewAdministrateur
redirect_to procedure_groupe_instructeurs_path(procedure)
end
def reaffecter_dossiers
@procedure = procedure
@groupe_instructeur = groupe_instructeur
@groupes_instructeurs = paginated_groupe_instructeurs
.without_group(@groupe_instructeur)
end
def reaffecter
target_group = GroupeInstructeur.find(params[:target_group])
if target_group.blank? || !procedure.groupe_instructeurs.include?(target_group)
flash[:notice] = "Impossible de réaffecter les dossiers au groupe demandé."
else
groupe_instructeur.dossiers.each do |d|
d.update(groupe_instructeur: target_group)
end
flash[:notice] = "Les dossiers du groupe « #{groupe_instructeur.label} » ont été réaffectés au groupe « #{target_group.label} »."
end
redirect_to procedure_groupe_instructeurs_path(procedure)
end
def add_instructeur
emails = params['emails'].presence || []
emails = emails.map(&:strip).map(&:downcase)

View file

@ -10,4 +10,6 @@ class GroupeInstructeur < ApplicationRecord
validates :label, uniqueness: { scope: :procedure, message: 'existe déjà' }
before_validation -> { label&.strip! }
scope :without_group, -> (group) { where.not(id: group) }
end

View file

@ -43,5 +43,9 @@
= link_to procedure_groupe_instructeur_path(@procedure, group), { method: :delete, class: 'button', data: { confirm: "Êtes-vous sûr de vouloir supprimer le groupe « #{group.label} » ?" }} do
%span.icon.delete
supprimer ce groupe
- else
%td.actions
= link_to reaffecter_dossiers_procedure_groupe_instructeur_path(@procedure, group), class: 'button', title:'Réaffecter les dossiers à un autre groupe afin de pouvoir le supprimer' do
%span.icon.follow
déplacer les dossiers
= paginate @groupes_instructeurs

View file

@ -0,0 +1,27 @@
= render partial: 'new_administrateur/breadcrumbs',
locals: { steps: [link_to('Démarches', admin_procedures_path),
link_to(@procedure.libelle, admin_procedure_path(@procedure)),
link_to('Groupes dinstructeurs', procedure_groupe_instructeurs_path(@procedure)),
@groupe_instructeur.label] }
.container.groupe-instructeur
.card
.card-title Réaffectation des dossiers du groupe «&nbsp;#{@groupe_instructeur.label}&nbsp;»
%p
Le groupe « #{@groupe_instructeur.label} » contient des dossiers. Afin de procéder à sa suppression, vous devez réaffecter ses dossiers à un autre groupe instructeur.
%table.table.mt-2
%thead
%tr
%th{ colspan: 2 }= t(".existing_groupe", count: @groupes_instructeurs.total_count)
%tbody
- @groupes_instructeurs.each do |group|
%tr
%td= group.label
%td.actions= button_to 'Réaffecter les dossiers à ce groupe',
reaffecter_procedure_groupe_instructeur_path(:target_group => group),
{ class: 'button',
data: { confirm: "Êtes-vous sûr de vouloir réaffecter les dossiers du groupe « #{@groupe_instructeur.label} » vers le groupe  « #{group.label} » ?" } }
= paginate @groupes_instructeurs

View file

@ -16,3 +16,7 @@ fr:
assignment:
one: "Linstructeur %{value} a été affecté au groupe « %{groupe} »."
other: "Les instructeurs %{value} ont été affectés au groupe « %{groupe} »."
reaffecter_dossiers:
existing_groupe:
one: "%{count} groupe existe"
other: "%{count} groupes existent"

View file

@ -360,6 +360,8 @@ Rails.application.routes.draw do
member do
post 'add_instructeur'
delete 'remove_instructeur'
get 'reaffecter_dossiers'
post 'reaffecter'
end
collection do