From e7e702a574d05fdcc5aad141a1f77ebebf5e8aa3 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Wed, 17 May 2023 14:02:44 +0200 Subject: [PATCH] feat(routing): add reaffecter_un_dossier --- .../instructeurs/dossiers_controller.rb | 15 +++++++++++++ config/locales/fr.yml | 4 ++++ config/routes.rb | 1 + .../instructeurs/dossiers_controller_spec.rb | 21 +++++++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/app/controllers/instructeurs/dossiers_controller.rb b/app/controllers/instructeurs/dossiers_controller.rb index fc4b82b19..a9fee3e01 100644 --- a/app/controllers/instructeurs/dossiers_controller.rb +++ b/app/controllers/instructeurs/dossiers_controller.rb @@ -331,6 +331,21 @@ module Instructeurs end end + def reaffecter_un_dossier + dossier = current_instructeur.dossiers.find(params[:dossier_id]) + + new_group = dossier + .procedure + .groupe_instructeurs.find(params[:groupe_instructeur_id]) + + dossier.assign_to_groupe_instructeur(new_group) + + dossier.update!(forced_groupe_instructeur: true) + + flash.notice = t('instructeurs.dossiers.reaffectation', dossier_id: dossier.id, label: new_group.label) + redirect_to instructeur_procedure_path(procedure) + end + private def dossier_scope diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 870ab3e23..27722f8d8 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -785,6 +785,10 @@ fr: deleted_by_instructeur: "Le dossier a bien été supprimé de votre interface" impossible_deletion: "Supression impossible : le dossier n’est pas traité" restore: "Le dossier a bien été restauré" + reaffectation: "Le dossier nº %{dossier_id} a été réaffecté au groupe d’instructeurs « %{label} »." + existing_groupe: + one: "%{count} groupe existe" + other: "%{count} groupes existent" labels: to_follow: à suivre total: dossiers diff --git a/config/routes.rb b/config/routes.rb index 4f5efd627..5a2aa080b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -450,6 +450,7 @@ Rails.application.routes.draw do post 'avis' => 'dossiers#create_avis' get 'print' => 'dossiers#print' get 'telecharger_pjs' => 'dossiers#telecharger_pjs' + post 'reaffecter_un_dossier' end end diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index 22fa39364..e43e2f383 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -1151,4 +1151,25 @@ describe Instructeurs::DossiersController, type: :controller do it { expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") } end end + + describe '#reaffecter_un_dossier' do + let!(:gi_2) { GroupeInstructeur.create(label: 'deuxième groupe', procedure: procedure) } + let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, groupe_instructeur: procedure.groupe_instructeurs.first) } + + before do + post :reaffecter, + params: { + procedure_id: procedure.id, + dossier_id: dossier.id, + groupe_instructeur_id: gi_2.id + } + end + + it do + expect(dossier.reload.groupe_instructeur.id).to eq(gi_2.id) + expect(dossier.forced_groupe_instructeur).to be_truthy + expect(response).to redirect_to(instructeur_procedure_path(procedure)) + expect(flash.notice).to eq("Le dossier nº #{dossier.id} a été réaffecté au groupe d’instructeurs « deuxième groupe ».") + end + end end