add simple_routing

This commit is contained in:
simon lehericey 2023-04-26 17:33:14 +02:00 committed by LeSim
parent 8b568c2035
commit 01caa498d3
3 changed files with 63 additions and 0 deletions

View file

@ -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

View file

@ -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 dun champ']] }
= render Procedure::InstructeursMenuComponent.new(procedure: @procedure) do
- content_for(:title, 'Routage')
%h1 Routage à partir dun 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

View file

@ -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'