diff --git a/app/components/procedure/one_groupe_management_component.rb b/app/components/procedure/one_groupe_management_component.rb index f1b8aa0e1..172821364 100644 --- a/app/components/procedure/one_groupe_management_component.rb +++ b/app/components/procedure/one_groupe_management_component.rb @@ -17,6 +17,10 @@ class Procedure::OneGroupeManagementComponent < ApplicationComponent @groupe_instructeur.routing_rule&.right || empty end + def operator_name + @groupe_instructeur.routing_rule&.class&.name || empty + end + def targeted_champ_tag select_tag( 'targeted_champ', @@ -39,6 +43,15 @@ class Procedure::OneGroupeManagementComponent < ApplicationComponent .map { |tdc| [tdc.libelle, champ_value(tdc.stable_id).to_json] } end + def operator_tag + select_tag('operator_name', + options_for_select( + [['est égal à', Logic::Eq.name], ["n'est pas égal à", Logic::NotEq.name]], + selected: operator_name + ), + class: 'fr-select') + end + def value_tag select_tag( 'value', diff --git a/app/components/procedure/one_groupe_management_component/one_groupe_management_component.html.haml b/app/components/procedure/one_groupe_management_component/one_groupe_management_component.html.haml index 3df93fb48..0aa12ca39 100644 --- a/app/components/procedure/one_groupe_management_component/one_groupe_management_component.html.haml +++ b/app/components/procedure/one_groupe_management_component/one_groupe_management_component.html.haml @@ -40,7 +40,8 @@ .fr-mr-2w.no-wrap si le champ .target.fr-mr-2w = targeted_champ_tag - .operator.fr-mr-2w.no-wrap est égal à + .operator.fr-mr-2w.no-wrap + = operator_tag .value = value_tag .fr-hint-text diff --git a/app/controllers/administrateurs/routing_controller.rb b/app/controllers/administrateurs/routing_controller.rb index 0e87ede8b..3e047cdbf 100644 --- a/app/controllers/administrateurs/routing_controller.rb +++ b/app/controllers/administrateurs/routing_controller.rb @@ -9,7 +9,13 @@ module Administrateurs right = targeted_champ_changed? ? empty : value - groupe_instructeur.update!(routing_rule: ds_eq(left, right)) + new_routing_rule = case operator_name + when Eq.name + ds_eq(left, right) + when NotEq.name + ds_not_eq(left, right) + end + groupe_instructeur.update!(routing_rule: new_routing_rule) end def update_defaut_groupe_instructeur @@ -27,6 +33,10 @@ module Administrateurs Logic.from_json(params[:targeted_champ]) end + def operator_name + params[:operator_name] + end + def value Logic.from_json(params[:value]) end diff --git a/spec/controllers/administrateurs/routing_controller_spec.rb b/spec/controllers/administrateurs/routing_controller_spec.rb index 03eb31d36..effa2b7a7 100644 --- a/spec/controllers/administrateurs/routing_controller_spec.rb +++ b/spec/controllers/administrateurs/routing_controller_spec.rb @@ -11,6 +11,7 @@ describe Administrateurs::RoutingController, type: :controller do { procedure_id: procedure.id, targeted_champ: champ_value(drop_down_tdc.stable_id).to_json, + operator_name: Logic::Eq.name, value: empty.to_json, groupe_instructeur_id: gi_2.id }