diff --git a/app/controllers/manager/administrateurs_controller.rb b/app/controllers/manager/administrateurs_controller.rb index 91866045c..83894c0ab 100644 --- a/app/controllers/manager/administrateurs_controller.rb +++ b/app/controllers/manager/administrateurs_controller.rb @@ -33,6 +33,21 @@ module Manager head :ok end + def delete + administrateur = Administrateur.find(params[:id]) + + if !administrateur.can_be_deleted? + fail "Impossible de supprimer cet administrateur car il a des dossiers ou des procédures" + end + administrateur.dossiers.each(&:delete_and_keep_track) + administrateur.destroy + + logger.info("L'administrateur #{administrateur.id} est supprimé par #{current_user.id}") + flash[:notice] = "L'administrateur #{administrateur.id} est supprimé" + + redirect_to manager_administrateurs_path + end + private def create_administrateur_params diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index 6d1de0927..87c4ed221 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -123,4 +123,8 @@ class Administrateur < ApplicationRecord def gestionnaire Gestionnaire.find_by(email: email) end + + def can_be_deleted? + dossiers.state_instruction_commencee.none? && procedures.none? + end end diff --git a/app/views/manager/administrateurs/show.html.erb b/app/views/manager/administrateurs/show.html.erb index 8d152a733..34b4b9857 100644 --- a/app/views/manager/administrateurs/show.html.erb +++ b/app/views/manager/administrateurs/show.html.erb @@ -36,6 +36,7 @@ as well as a link to its edit page. <% if page.resource.invitation_expired? %> <%= link_to "renvoyer l'invitation", reinvite_manager_administrateur_path(page.resource), method: :post, class: "button" %> <% end %> + <%= button_to "supprimer", delete_manager_administrateur_path(page.resource), method: :delete, disabled: !page.resource.can_be_deleted?, class: "button", data: { confirm: "Confirmez-vous la suppression de l'administrateur ?" }, title: page.resource.can_be_deleted? ? "Supprimer" : "Cet administrateur a des dossiers ou des procédures et ne peut être supprimé" %> diff --git a/config/routes.rb b/config/routes.rb index e77e6eb5f..fc9169607 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ Rails.application.routes.draw do resources :administrateurs, only: [:index, :show, :new, :create] do post 'reinvite', on: :member put 'enable_feature', on: :member + delete 'delete', on: :member end resources :users, only: [:index, :show] do