fix(groupe_instructeur): always use assign_to_groupe_instructeur method
This commit is contained in:
parent
08a2a2c9aa
commit
71cfe094aa
6 changed files with 19 additions and 20 deletions
|
@ -174,6 +174,7 @@ module Users
|
||||||
errors = submit_dossier_and_compute_errors
|
errors = submit_dossier_and_compute_errors
|
||||||
|
|
||||||
if errors.blank?
|
if errors.blank?
|
||||||
|
RoutingEngine.compute(@dossier)
|
||||||
@dossier.passer_en_construction!
|
@dossier.passer_en_construction!
|
||||||
@dossier.process_declarative!
|
@dossier.process_declarative!
|
||||||
NotificationMailer.send_en_construction_notification(@dossier).deliver_later
|
NotificationMailer.send_en_construction_notification(@dossier).deliver_later
|
||||||
|
@ -210,6 +211,8 @@ module Users
|
||||||
if errors.blank?
|
if errors.blank?
|
||||||
editing_fork_origin = @dossier.editing_fork_origin
|
editing_fork_origin = @dossier.editing_fork_origin
|
||||||
editing_fork_origin.merge_fork(@dossier)
|
editing_fork_origin.merge_fork(@dossier)
|
||||||
|
RoutingEngine.compute(editing_fork_origin)
|
||||||
|
|
||||||
redirect_to dossier_path(editing_fork_origin)
|
redirect_to dossier_path(editing_fork_origin)
|
||||||
else
|
else
|
||||||
flash.now.alert = errors
|
flash.now.alert = errors
|
||||||
|
@ -493,10 +496,6 @@ module Users
|
||||||
@dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params)
|
@dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
if @dossier.procedure.feature_enabled?(:routing_rules)
|
|
||||||
RoutingEngine.compute(@dossier)
|
|
||||||
end
|
|
||||||
|
|
||||||
errors
|
errors
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -511,7 +510,7 @@ module Users
|
||||||
@dossier.assign_to_groupe_instructeur(defaut_groupe_instructeur)
|
@dossier.assign_to_groupe_instructeur(defaut_groupe_instructeur)
|
||||||
end
|
end
|
||||||
|
|
||||||
if @dossier.groupe_instructeur.nil?
|
if !@dossier.procedure.feature_enabled?(:routing_rules) && @dossier.groupe_instructeur.nil?
|
||||||
errors += format_errors(errors: ["Le champ « #{@dossier.procedure.routing_criteria_name} » doit être rempli"])
|
errors += format_errors(errors: ["Le champ « #{@dossier.procedure.routing_criteria_name} » doit être rempli"])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ module Mutations
|
||||||
field :errors, [Types::ValidationErrorType], null: true
|
field :errors, [Types::ValidationErrorType], null: true
|
||||||
|
|
||||||
def resolve(dossier:, groupe_instructeur:)
|
def resolve(dossier:, groupe_instructeur:)
|
||||||
dossier.update!(groupe_instructeur:)
|
dossier.assign_to_groupe_instructeur(groupe_instructeur)
|
||||||
|
|
||||||
{ dossier: }
|
{ dossier: }
|
||||||
end
|
end
|
||||||
|
|
|
@ -680,21 +680,17 @@ class Dossier < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def assign_to_groupe_instructeur(groupe_instructeur, author = nil)
|
def assign_to_groupe_instructeur(groupe_instructeur, author = nil)
|
||||||
if (groupe_instructeur.nil? || groupe_instructeur.procedure == procedure) && self.groupe_instructeur != groupe_instructeur
|
return if groupe_instructeur.present? && groupe_instructeur.procedure != procedure
|
||||||
if update(groupe_instructeur:, groupe_instructeur_updated_at: Time.zone.now)
|
return if self.groupe_instructeur == groupe_instructeur
|
||||||
|
|
||||||
|
update!(groupe_instructeur:, groupe_instructeur_updated_at: Time.zone.now)
|
||||||
|
|
||||||
if !brouillon?
|
if !brouillon?
|
||||||
unfollow_stale_instructeurs
|
unfollow_stale_instructeurs
|
||||||
|
|
||||||
if author.present?
|
if author.present?
|
||||||
log_dossier_operation(author, :changer_groupe_instructeur, self)
|
log_dossier_operation(author, :changer_groupe_instructeur, self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
true
|
|
||||||
end
|
|
||||||
else
|
|
||||||
false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def archiver!(instructeur)
|
def archiver!(instructeur)
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
module RoutingEngine
|
module RoutingEngine
|
||||||
def self.compute(dossier)
|
def self.compute(dossier)
|
||||||
|
return if !dossier.procedure.feature_enabled?(:routing_rules)
|
||||||
|
|
||||||
matching_groupe = dossier.procedure.groupe_instructeurs.active.find do |gi|
|
matching_groupe = dossier.procedure.groupe_instructeurs.active.find do |gi|
|
||||||
gi.routing_rule&.compute(dossier.champs)
|
gi.routing_rule&.compute(dossier.champs)
|
||||||
end
|
end
|
||||||
matching_groupe ||= dossier.procedure.defaut_groupe_instructeur
|
matching_groupe ||= dossier.procedure.defaut_groupe_instructeur
|
||||||
dossier.update!(groupe_instructeur: matching_groupe)
|
dossier.assign_to_groupe_instructeur(matching_groupe)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -612,12 +612,12 @@ describe Dossier do
|
||||||
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
||||||
|
|
||||||
it "can change groupe instructeur" do
|
it "can change groupe instructeur" do
|
||||||
expect(dossier.assign_to_groupe_instructeur(new_groupe_instructeur_new_procedure)).to be_falsey
|
dossier.assign_to_groupe_instructeur(new_groupe_instructeur_new_procedure)
|
||||||
expect(dossier.groupe_instructeur).not_to eq(new_groupe_instructeur_new_procedure)
|
expect(dossier.groupe_instructeur).not_to eq(new_groupe_instructeur_new_procedure)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can not change groupe instructeur if new groupe is from another procedure" do
|
it "can not change groupe instructeur if new groupe is from another procedure" do
|
||||||
expect(dossier.assign_to_groupe_instructeur(new_groupe_instructeur)).to be_truthy
|
dossier.assign_to_groupe_instructeur(new_groupe_instructeur)
|
||||||
expect(dossier.groupe_instructeur).to eq(new_groupe_instructeur)
|
expect(dossier.groupe_instructeur).to eq(new_groupe_instructeur)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
describe RoutingEngine, type: :model do
|
describe RoutingEngine, type: :model do
|
||||||
include Logic
|
include Logic
|
||||||
|
|
||||||
|
before { Flipper.enable(:routing_rules, procedure) }
|
||||||
|
|
||||||
describe '.compute' do
|
describe '.compute' do
|
||||||
let(:procedure) do
|
let(:procedure) do
|
||||||
create(:procedure).tap do |p|
|
create(:procedure).tap do |p|
|
||||||
|
|
Loading…
Reference in a new issue