diff --git a/app/controllers/instructeurs/procedures_controller.rb b/app/controllers/instructeurs/procedures_controller.rb index ba5cf835f..decaa9c17 100644 --- a/app/controllers/instructeurs/procedures_controller.rb +++ b/app/controllers/instructeurs/procedures_controller.rb @@ -74,6 +74,8 @@ module Instructeurs end def update_order_positions + current_instructeur.update_instructeur_procedures_positions(ordered_procedure_ids_params) + redirect_to instructeur_procedures_path, notice: "L'ordre des démarches a été mis à jour." end def show @@ -381,5 +383,9 @@ module Instructeurs def cookies_export_key "exports_#{@procedure.id}_seen_at" end + + def ordered_procedure_ids_params + params.require(:ordered_procedure_ids) + end end end diff --git a/app/models/instructeur.rb b/app/models/instructeur.rb index 40cd09587..83f035d44 100644 --- a/app/models/instructeur.rb +++ b/app/models/instructeur.rb @@ -118,6 +118,15 @@ class Instructeur < ApplicationRecord InstructeursProcedure.insert_all(missing_instructeur_procedures) if missing_instructeur_procedures.size.positive? end + def update_instructeur_procedures_positions(ordered_procedure_ids) + procedure_id_position = ordered_procedure_ids.reverse.each.with_index.to_h + InstructeursProcedure.transaction do + procedure_id_position.each do |procedure_id, position| + InstructeursProcedure.where(procedure_id:, instructeur_id: id).update(position:) + end + end + end + def procedure_presentation_and_errors_for_procedure_id(procedure_id) assign_to .joins(:groupe_instructeur) diff --git a/app/models/instructeurs_procedure.rb b/app/models/instructeurs_procedure.rb index a16ad581b..6f0216fa4 100644 --- a/app/models/instructeurs_procedure.rb +++ b/app/models/instructeurs_procedure.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class InstructeursProcedure < ApplicationRecord belongs_to :instructeur belongs_to :procedure