commit
fb2b6686aa
7 changed files with 57 additions and 6 deletions
|
@ -362,7 +362,7 @@ module Users
|
||||||
Dossier.with_champs.find(params[:id])
|
Dossier.with_champs.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def change_groupe_instructeur?
|
def should_change_groupe_instructeur?
|
||||||
if params[:dossier].key?(:groupe_instructeur_id)
|
if params[:dossier].key?(:groupe_instructeur_id)
|
||||||
groupe_instructeur_id = params[:dossier][:groupe_instructeur_id]
|
groupe_instructeur_id = params[:dossier][:groupe_instructeur_id]
|
||||||
if groupe_instructeur_id.nil?
|
if groupe_instructeur_id.nil?
|
||||||
|
@ -380,6 +380,14 @@ module Users
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def should_fill_groupe_instructeur?
|
||||||
|
!@dossier.procedure.routee? && @dossier.groupe_instructeur_id.nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
def defaut_groupe_instructeur
|
||||||
|
@dossier.procedure.defaut_groupe_instructeur
|
||||||
|
end
|
||||||
|
|
||||||
def update_dossier_and_compute_errors
|
def update_dossier_and_compute_errors
|
||||||
errors = []
|
errors = []
|
||||||
|
|
||||||
|
@ -396,11 +404,15 @@ module Users
|
||||||
|
|
||||||
if !@dossier.save(**validation_options)
|
if !@dossier.save(**validation_options)
|
||||||
errors += @dossier.errors.full_messages
|
errors += @dossier.errors.full_messages
|
||||||
elsif change_groupe_instructeur?
|
elsif should_change_groupe_instructeur?
|
||||||
@dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params)
|
@dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if should_fill_groupe_instructeur?
|
||||||
|
@dossier.assign_to_groupe_instructeur(defaut_groupe_instructeur)
|
||||||
|
end
|
||||||
|
|
||||||
if !save_draft?
|
if !save_draft?
|
||||||
errors += @dossier.check_mandatory_champs
|
errors += @dossier.check_mandatory_champs
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,7 @@
|
||||||
# agent_connect_id :string
|
# agent_connect_id :string
|
||||||
#
|
#
|
||||||
class Instructeur < ApplicationRecord
|
class Instructeur < ApplicationRecord
|
||||||
has_many :administrateurs_instructeurs
|
has_and_belongs_to_many :administrateurs
|
||||||
has_many :administrateurs, through: :administrateurs_instructeurs
|
|
||||||
|
|
||||||
has_many :assign_to, dependent: :destroy
|
has_many :assign_to, dependent: :destroy
|
||||||
has_many :groupe_instructeurs, through: :assign_to
|
has_many :groupe_instructeurs, through: :assign_to
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
%span.badge.baseline= procedure.instructeurs.count
|
%span.badge.baseline= procedure.instructeurs.count
|
||||||
|
|
||||||
%span.icon.folder
|
%span.icon.folder
|
||||||
%span.badge.baseline= procedure.dossiers.count
|
%span.badge.baseline= procedure.dossiers.state_not_brouillon.visible_by_administration.count
|
||||||
|
|
||||||
%div
|
%div
|
||||||
= link_to admin_procedure_path(procedure), class: 'button mr-1 edit-procedure' do
|
= link_to admin_procedure_path(procedure), class: 'button mr-1 edit-procedure' do
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
class AddForeignKeysToAdministrateursInstructeurs < ActiveRecord::Migration[6.1]
|
||||||
|
def up
|
||||||
|
# Sanity check
|
||||||
|
say_with_time 'Removing AdministrateursInstructeur where the associated Administrateur no longer exists ' do
|
||||||
|
deleted_administrateurs_ids = AdministrateursInstructeur.where.missing(:administrateur).pluck(:administrateur_id)
|
||||||
|
AdministrateursInstructeur.where(administrateur_id: deleted_administrateurs_ids).delete_all
|
||||||
|
end
|
||||||
|
|
||||||
|
say_with_time 'Removing AdministrateursInstructeur where the associated Instructeur no longer exists ' do
|
||||||
|
deleted_instructeurs_ids = AdministrateursInstructeur.where.missing(:instructeur).pluck(:instructeur_id)
|
||||||
|
AdministrateursInstructeur.where(instructeur_id: deleted_instructeurs_ids).delete_all
|
||||||
|
end
|
||||||
|
|
||||||
|
add_foreign_key :administrateurs_instructeurs, :administrateurs
|
||||||
|
add_foreign_key :administrateurs_instructeurs, :instructeurs
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
remove_foreign_key :administrateurs_instructeurs, :administrateurs
|
||||||
|
remove_foreign_key :administrateurs_instructeurs, :instructeurs
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2022_02_04_130722) do
|
ActiveRecord::Schema.define(version: 2022_03_02_101337) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -852,6 +852,9 @@ ActiveRecord::Schema.define(version: 2022_02_04_130722) do
|
||||||
end
|
end
|
||||||
|
|
||||||
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id"
|
||||||
|
add_foreign_key "administrateurs_instructeurs", "administrateurs"
|
||||||
|
add_foreign_key "administrateurs_instructeurs", "instructeurs"
|
||||||
|
add_foreign_key "administrateurs_procedures", "administrateurs"
|
||||||
add_foreign_key "archives_groupe_instructeurs", "archives"
|
add_foreign_key "archives_groupe_instructeurs", "archives"
|
||||||
add_foreign_key "archives_groupe_instructeurs", "groupe_instructeurs"
|
add_foreign_key "archives_groupe_instructeurs", "groupe_instructeurs"
|
||||||
add_foreign_key "assign_tos", "groupe_instructeurs"
|
add_foreign_key "assign_tos", "groupe_instructeurs"
|
||||||
|
|
|
@ -464,6 +464,17 @@ describe Users::DossiersController, type: :controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the dossier was created on a routee procedure, but routage was later disabled" do
|
||||||
|
let(:dossier) { create(:dossier, groupe_instructeur: nil, user: user) }
|
||||||
|
|
||||||
|
it "sets a default groupe_instructeur" do
|
||||||
|
subject
|
||||||
|
|
||||||
|
expect(response).to redirect_to(merci_dossier_path(dossier))
|
||||||
|
expect(dossier.reload.groupe_instructeur).to eq(dossier.procedure.defaut_groupe_instructeur)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "on an closed procedure" do
|
context "on an closed procedure" do
|
||||||
before { dossier.procedure.close! }
|
before { dossier.procedure.close! }
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,10 @@ describe Instructeur, type: :model do
|
||||||
procedure_3
|
procedure_3
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'associations' do
|
||||||
|
it { is_expected.to have_and_belong_to_many(:administrateurs) }
|
||||||
|
end
|
||||||
|
|
||||||
describe 'follow' do
|
describe 'follow' do
|
||||||
let(:dossier) { create :dossier }
|
let(:dossier) { create :dossier }
|
||||||
let(:already_followed_dossier) { create :dossier }
|
let(:already_followed_dossier) { create :dossier }
|
||||||
|
|
Loading…
Reference in a new issue