From 01caa498d3d6cfa341bff2c0640f2e87a37fa4b7 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 26 Apr 2023 17:33:14 +0200 Subject: [PATCH] add simple_routing --- .../groupe_instructeurs_controller.rb | 33 +++++++++++++++++++ .../simple_routing.html.haml | 27 +++++++++++++++ config/routes.rb | 3 ++ 3 files changed, 63 insertions(+) create mode 100644 app/views/administrateurs/groupe_instructeurs/simple_routing.html.haml diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index 17d4eb185..4c5bbadd5 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -1,6 +1,7 @@ module Administrateurs class GroupeInstructeursController < AdministrateurController include ActiveSupport::NumberHelper + include Logic before_action :ensure_not_super_admin!, only: [:add_instructeur] @@ -29,6 +30,38 @@ module Administrateurs @groupes_instructeurs = paginated_groupe_instructeurs end + def simple_routing + @procedure = procedure + end + + def create_simple_routing + @procedure = procedure + stable_id = params[:create_simple_routing][:stable_id].to_i + + tdc = @procedure.active_revision.routable_types_de_champ.find { |tdc| tdc.stable_id == stable_id } + + tdc_options = tdc.options["drop_down_options"].reject(&:empty?) + + tdc_options.each do |option_label| + gi = procedure.groupe_instructeurs.find_by({ label: option_label }) || procedure.groupe_instructeurs + .create({ label: option_label, instructeurs: [current_administrateur.instructeur] }) + gi.update(routing_rule: ds_eq(champ_value(stable_id), constant(gi.label))) + end + + defaut = @procedure.defaut_groupe_instructeur + + if !tdc_options.include?(defaut.label) + new_defaut = @procedure.reload.groupe_instructeurs_but_defaut.first + @procedure.update!(defaut_groupe_instructeur: new_defaut) + reaffecter_all_dossiers_to_defaut_groupe + defaut.instructeurs.each { new_defaut.add(_1) } + defaut.destroy! + end + + flash.notice = 'Les groupes instructeurs ont été ajoutés' + redirect_to admin_procedure_groupe_instructeurs_path(procedure) + end + def show @procedure = procedure @groupe_instructeur = groupe_instructeur diff --git a/app/views/administrateurs/groupe_instructeurs/simple_routing.html.haml b/app/views/administrateurs/groupe_instructeurs/simple_routing.html.haml new file mode 100644 index 000000000..0882440ba --- /dev/null +++ b/app/views/administrateurs/groupe_instructeurs/simple_routing.html.haml @@ -0,0 +1,27 @@ += render partial: 'administrateurs/breadcrumbs', + locals: { steps: [[t('.procedures'), admin_procedures_path], + [@procedure.libelle.truncate_words(10), admin_procedure_path(@procedure)], + ['Groupes', admin_procedure_groupe_instructeurs_path(@procedure)], + ['Routage à partir d’un champ']] } + += render Procedure::InstructeursMenuComponent.new(procedure: @procedure) do + - content_for(:title, 'Routage') + %h1 Routage à partir d’un champ + = form_for :create_simple_routing, + method: :post, + data: { controller: 'radio-enabled-submit' }, + url: create_simple_routing_admin_procedure_groupe_instructeurs_path(@procedure) do |f| + + %div{ data: { 'action': "click->radio-enabled-submit#click" } } + .notice + Sélectionner le champ à partir duquel créer des groupes d'instructeurs + - buttons_content = @procedure.active_revision.routable_types_de_champ.map { |tdc| { label: tdc.libelle, value: tdc.stable_id } } + = render Dsfr::RadioButtonListComponent.new(form: f, + target: :stable_id, + buttons: buttons_content) + + %ul.fr-btns-group.fr-btns-group--inline-sm + %li + = link_to 'Retour', options_admin_procedure_groupe_instructeurs_path(@procedure, state: :choix), class: 'fr-btn fr-btn--secondary' + %li + %button.fr-btn{ disabled: true, data: { 'radio-enabled-submit-target': 'submit' } } Créer les groupes diff --git a/config/routes.rb b/config/routes.rb index 3295661ee..28feaa1ab 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -535,6 +535,9 @@ Rails.application.routes.draw do get 'options' get 'ajout' post 'ajout' => 'groupe_instructeurs#create' + get 'simple_routing' + post 'create_simple_routing' + delete 'destroy_all_groups_but_defaut' patch 'update_routing_criteria_name' patch 'update_instructeurs_self_management_enabled' post 'import'