Groupe instructeur selector default blank
This commit is contained in:
parent
9c3e72c84a
commit
70500e3d56
11 changed files with 124 additions and 69 deletions
|
@ -254,7 +254,7 @@ module Users
|
|||
|
||||
dossier = Dossier.new(
|
||||
revision: procedure.active_revision,
|
||||
groupe_instructeur: procedure.defaut_groupe_instructeur,
|
||||
groupe_instructeur: procedure.defaut_groupe_instructeur_for_new_dossier,
|
||||
user: current_user,
|
||||
state: Dossier.states.fetch(:brouillon)
|
||||
)
|
||||
|
@ -338,7 +338,21 @@ module Users
|
|||
end
|
||||
|
||||
def change_groupe_instructeur?
|
||||
params[:dossier][:groupe_instructeur_id].present? && @dossier.groupe_instructeur_id != params[:dossier][:groupe_instructeur_id].to_i
|
||||
if params[:dossier].key?(:groupe_instructeur_id)
|
||||
groupe_instructeur_id = params[:dossier][:groupe_instructeur_id]
|
||||
if groupe_instructeur_id.nil?
|
||||
@dossier.groupe_instructeur_id.present?
|
||||
else
|
||||
@dossier.groupe_instructeur_id != groupe_instructeur_id.to_i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def groupe_instructeur_from_params
|
||||
groupe_instructeur_id = params[:dossier][:groupe_instructeur_id]
|
||||
if groupe_instructeur_id.present?
|
||||
@dossier.procedure.groupe_instructeurs.find(groupe_instructeur_id)
|
||||
end
|
||||
end
|
||||
|
||||
def update_dossier_and_compute_errors
|
||||
|
@ -357,13 +371,16 @@ module Users
|
|||
if !@dossier.save
|
||||
errors += @dossier.errors.full_messages
|
||||
elsif change_groupe_instructeur?
|
||||
groupe_instructeur = @dossier.procedure.groupe_instructeurs.find(params[:dossier][:groupe_instructeur_id])
|
||||
@dossier.assign_to_groupe_instructeur(groupe_instructeur)
|
||||
@dossier.assign_to_groupe_instructeur(groupe_instructeur_from_params)
|
||||
end
|
||||
end
|
||||
|
||||
if !save_draft?
|
||||
errors += @dossier.check_mandatory_champs
|
||||
|
||||
if @dossier.groupe_instructeur.nil?
|
||||
errors << "Le champ « #{@dossier.procedure.routing_criteria_name} » doit être rempli"
|
||||
end
|
||||
end
|
||||
|
||||
errors
|
||||
|
|
|
@ -77,7 +77,7 @@ class Dossier < ApplicationRecord
|
|||
|
||||
has_many :dossier_operation_logs, -> { order(:created_at) }, inverse_of: :dossier
|
||||
|
||||
belongs_to :groupe_instructeur, optional: false
|
||||
belongs_to :groupe_instructeur, optional: true
|
||||
belongs_to :revision, class_name: 'ProcedureRevision', optional: false
|
||||
belongs_to :user, optional: false
|
||||
|
||||
|
@ -330,7 +330,7 @@ class Dossier < ApplicationRecord
|
|||
|
||||
validates :user, presence: true
|
||||
validates :individual, presence: true, if: -> { revision.procedure.for_individual? }
|
||||
validates :groupe_instructeur, presence: true
|
||||
validates :groupe_instructeur, presence: true, if: -> { !brouillon? }
|
||||
|
||||
def motivation
|
||||
return nil if !termine?
|
||||
|
@ -419,7 +419,7 @@ class Dossier < ApplicationRecord
|
|||
end
|
||||
|
||||
def show_groupe_instructeur_details?
|
||||
procedure.routee? && (!procedure.feature_enabled?(:procedure_routage_api) || !defaut_groupe_instructeur?)
|
||||
procedure.routee? && groupe_instructeur.present? && (!procedure.feature_enabled?(:procedure_routage_api) || !defaut_groupe_instructeur?)
|
||||
end
|
||||
|
||||
def show_groupe_instructeur_selector?
|
||||
|
|
|
@ -599,6 +599,12 @@ class Procedure < ApplicationRecord
|
|||
groupe_instructeurs.count > 1
|
||||
end
|
||||
|
||||
def defaut_groupe_instructeur_for_new_dossier
|
||||
if !routee? || feature_enabled?(:procedure_routage_api)
|
||||
defaut_groupe_instructeur
|
||||
end
|
||||
end
|
||||
|
||||
def can_be_deleted_by_administrateur?
|
||||
brouillon? || dossiers.state_instruction_commencee.empty?
|
||||
end
|
||||
|
|
|
@ -34,19 +34,9 @@
|
|||
= f.label :groupe_instructeur_id do
|
||||
= dossier.procedure.routing_criteria_name
|
||||
%span.mandatory *
|
||||
-# The routing dropdown has 'include_blank: false', because otherwise a blank
|
||||
-# value may nullify the groupe_instructeur – and thus the link between the dossier
|
||||
-# and its procedure.
|
||||
-#
|
||||
-# If, one day, we need to make clearer to the user that they must actually choose an
|
||||
-# option, THINK TWICE before adding a blank option, and what would happen if the form is
|
||||
-# saved when the blank option is selected.
|
||||
-# Instead please consider other possibilities; like using CSS to gray out the default option,
|
||||
-# or adding some "(please select an option)" wording aside the label of the default group.
|
||||
-# CSS
|
||||
= f.select :groupe_instructeur_id,
|
||||
dossier.procedure.groupe_instructeurs.order(:label).map { |gi| [gi.label, gi.id] },
|
||||
{ include_blank: false }
|
||||
{ include_blank: dossier.brouillon? }
|
||||
|
||||
= f.fields_for :champs, dossier.champs do |champ_form|
|
||||
- champ = champ_form.object
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue