diff --git a/app/controllers/manager/procedures_controller.rb b/app/controllers/manager/procedures_controller.rb index 0d05bed76..810d0a1a9 100644 --- a/app/controllers/manager/procedures_controller.rb +++ b/app/controllers/manager/procedures_controller.rb @@ -8,7 +8,7 @@ module Manager # this will be used to set the records shown on the `index` action. def scoped_resource if unfiltered_list? - # Don't display deleted dossiers in the unfiltered list… + # Don't display discarded demarches in the unfiltered list… Procedure.kept else # … but allow them to be searched and displayed. @@ -22,10 +22,13 @@ module Manager redirect_to manager_procedure_path(procedure) end - def hide - procedure.hide! - flash[:notice] = "La démarche a bien été supprimée, en cas d'erreur contactez un développeur." - redirect_to manager_procedures_path + def discard + procedure.discard_and_keep_track!(current_administration) + + logger.info("La démarche #{procedure.id} est supprimée par #{current_administration.email}") + flash[:notice] = "La démarche #{procedure.id} a été supprimée." + + redirect_to manager_procedure_path(procedure) end def add_administrateur @@ -51,7 +54,7 @@ module Manager private def procedure - Procedure.find(params[:id]) + @procedure ||= Procedure.with_discarded.find(params[:id]) end def type_de_champ diff --git a/app/models/deleted_dossier.rb b/app/models/deleted_dossier.rb index 0538f09f1..0a0ebc9a8 100644 --- a/app/models/deleted_dossier.rb +++ b/app/models/deleted_dossier.rb @@ -4,10 +4,11 @@ class DeletedDossier < ApplicationRecord validates :dossier_id, uniqueness: true enum reason: { - user_request: 'user_request', - manager_request: 'manager_request', - user_removed: 'user_removed', - expired: 'expired' + user_request: 'user_request', + manager_request: 'manager_request', + user_removed: 'user_removed', + procedure_removed: 'procedure_removed', + expired: 'expired' } def self.create_from_dossier(dossier, reason) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 3c3a72fca..b212b7ca9 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -511,9 +511,16 @@ class Procedure < ApplicationRecord groupe_instructeurs.count > 1 end - def hide! + def can_be_deleted_by_manager? + kept? && dossiers.state_instruction_commencee.empty? + end + + def discard_and_keep_track!(author) + dossiers.each do |dossier| + dossier.discard_and_keep_track!(author, :procedure_removed) + end + discard! - dossiers.discard_all end def flipper_id diff --git a/app/views/manager/procedures/show.html.erb b/app/views/manager/procedures/show.html.erb index dd020bb5f..ede594883 100644 --- a/app/views/manager/procedures/show.html.erb +++ b/app/views/manager/procedures/show.html.erb @@ -22,6 +22,9 @@ as well as a link to its edit page.