From 18054fe3463c7f92f3eb6ab6ea9cd4387d2778d0 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Wed, 17 May 2023 14:49:20 +0200 Subject: [PATCH] feat(routing): add view for dossier a reaffecter --- .../instructeurs/dossiers_controller.rb | 12 +++++++++- .../dossiers/reaffectation.html.haml | 24 +++++++++++++++++++ config/routes.rb | 3 ++- .../instructeurs/dossiers_controller_spec.rb | 22 ++++++++++++++++- 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 app/views/instructeurs/dossiers/reaffectation.html.haml diff --git a/app/controllers/instructeurs/dossiers_controller.rb b/app/controllers/instructeurs/dossiers_controller.rb index a9fee3e01..64a10cc6e 100644 --- a/app/controllers/instructeurs/dossiers_controller.rb +++ b/app/controllers/instructeurs/dossiers_controller.rb @@ -331,7 +331,17 @@ module Instructeurs end end - def reaffecter_un_dossier + def reaffectation + @dossier = current_instructeur.dossiers.find(params[:dossier_id]) + + @groupe_instructeur = @dossier.groupe_instructeur + + @groupes_instructeurs = Kaminari.paginate_array(@groupe_instructeur.other_groupe_instructeurs) + .page(params[:page]) + .per(ITEMS_PER_PAGE) + end + + def reaffecter dossier = current_instructeur.dossiers.find(params[:dossier_id]) new_group = dossier diff --git a/app/views/instructeurs/dossiers/reaffectation.html.haml b/app/views/instructeurs/dossiers/reaffectation.html.haml new file mode 100644 index 000000000..116191aa0 --- /dev/null +++ b/app/views/instructeurs/dossiers/reaffectation.html.haml @@ -0,0 +1,24 @@ +- content_for(:title, "Réaffectation · Dossier nº #{@dossier.id} (#{@dossier.owner_name})") + += render partial: "header", locals: { dossier: @dossier } + +.container.groupe-instructeur + + .card + .card-title Réaffectation du dossier nº #{@dossier.id} du groupe « #{@groupe_instructeur.label} » + %p + Vous pouvez réaffecter le dossier nº #{@dossier.id} à l'un des groupes d'instructeurs suivants. + %table.table.mt-2 + %thead + %tr + %th{ colspan: 2 }= t("instructeurs.dossiers.existing_groupe", count: @groupes_instructeurs.total_count) + %tbody + - @groupes_instructeurs.each do |group| + %tr + %td= group.label + %td.actions= button_to 'Réaffecter le dossier à ce groupe', + reaffecter_instructeur_dossier_path(procedure_id: @dossier.procedure.id, dossier_id: @dossier.id, groupe_instructeur_id: group.id), + { class: 'button', + data: { confirm: "Êtes-vous sûr de vouloir réaffecter le dossier nº #{@dossier.id} du groupe « #{@groupe_instructeur.label} » vers le groupe  « #{group.label} » ?" } } + + = paginate @groupes_instructeurs, views_prefix: 'shared' diff --git a/config/routes.rb b/config/routes.rb index 5a2aa080b..ab883f5fc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -450,7 +450,8 @@ Rails.application.routes.draw do post 'avis' => 'dossiers#create_avis' get 'print' => 'dossiers#print' get 'telecharger_pjs' => 'dossiers#telecharger_pjs' - post 'reaffecter_un_dossier' + get 'reaffectation' + post 'reaffecter' end end diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index e43e2f383..74eeccb38 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -1152,7 +1152,27 @@ describe Instructeurs::DossiersController, type: :controller do end end - describe '#reaffecter_un_dossier' do + describe '#reaffectation' do + let!(:gi_2) { GroupeInstructeur.create(label: 'deuxième groupe', procedure: procedure) } + let!(:gi_3) { GroupeInstructeur.create(label: 'troisième groupe', procedure: procedure) } + let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, groupe_instructeur: procedure.groupe_instructeurs.first) } + + before do + post :reaffectation, + params: { + procedure_id: procedure.id, + dossier_id: dossier.id + } + end + + it do + expect(response).to have_http_status(:ok) + expect(response.body).to include("Vous pouvez réaffecter le dossier nº #{dossier.id} à l'un des groupes d'instructeurs suivants.") + expect(response.body).to include('2 groupes existent') + end + end + + describe '#reaffecter' 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) }