feat(procedure_admins): allow self remove from procedure

This commit is contained in:
simon lehericey 2022-11-21 12:29:12 +01:00 committed by LeSim
parent 7e7363c8c3
commit 30b53ec927
2 changed files with 42 additions and 26 deletions

View file

@ -29,20 +29,24 @@ module Administrateurs
end
def destroy
administrateur = @procedure.administrateurs.find(params[:id])
admin_to_delete = @procedure.administrateurs.find(params[:id])
# Prevent self-removal (Also enforced in the UI)
if administrateur == current_administrateur
flash.alert = "Vous ne pouvez pas vous retirer vous-même dune démarche."
return
if (@procedure.administrateurs - [admin_to_delete]).filter(&:active?).empty?
flash.alert = "Il doit rester au moins un administrateur actif."
else
begin
# Actually remove the admin
@procedure.administrateurs.delete(admin_to_delete)
@administrateur = admin_to_delete
flash.notice = "Ladministrateur \« #{admin_to_delete.email} » a été retiré de la démarche « #{@procedure.libelle} »."
if current_administrateur == admin_to_delete
redirect_to admin_procedures_path
end
rescue ActiveRecord::ActiveRecordError => e
flash.alert = e.message
end
end
# Actually remove the admin
@procedure.administrateurs.delete(administrateur)
@administrateur = administrateur
flash.notice = "Ladministrateur \« #{administrateur.email} » a été retiré de la démarche « #{@procedure.libelle} »."
rescue ActiveRecord::ActiveRecordError => e
flash.alert = e.message
end
end
end