2024-04-29 00:17:15 +02:00
# frozen_string_literal: true
2021-11-25 16:26:55 +01:00
module Administrateurs
2019-04-12 10:43:51 +02:00
class ProcedureAdministrateursController < AdministrateurController
2019-09-24 16:38:58 +02:00
before_action :retrieve_procedure , except : [ :new ]
2022-07-21 16:52:31 +02:00
before_action :ensure_not_super_admin! , only : [ :create ]
2022-07-21 18:56:01 +02:00
2019-04-12 10:43:51 +02:00
def index
end
def create
email = params . require ( :administrateur ) [ :email ] & . strip & . downcase
# Find the admin
2020-01-30 17:08:09 +01:00
administrateur = Administrateur . by_email ( email )
2019-04-12 10:43:51 +02:00
if administrateur . nil?
2021-10-27 18:59:18 +02:00
flash . alert = " L’ administrateur « #{ email } » n’ existe pas. Invitez-le à demander un compte administrateur à l’ adresse <a href= #{ DEMANDE_INSCRIPTION_ADMIN_PAGE_URL } > #{ DEMANDE_INSCRIPTION_ADMIN_PAGE_URL } </a>. "
2019-04-12 10:43:51 +02:00
return
end
# Prevent duplicates (also enforced in the database in administrateurs_procedures)
if @procedure . administrateurs . include? ( administrateur )
flash . alert = " L’ administrateur « #{ administrateur . email } » est déjà administrateur de « #{ @procedure . libelle } ». "
return
end
# Actually add the admin
@procedure . administrateurs << administrateur
@administrateur = administrateur
flash . notice = " L’ administrateur « #{ administrateur . email } » a été ajouté à la démarche « #{ @procedure . libelle } ». "
end
def destroy
2022-11-21 12:29:12 +01:00
admin_to_delete = @procedure . administrateurs . find ( params [ :id ] )
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 = " L’ administrateur \ « #{ 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
2019-04-12 10:43:51 +02:00
end
end
end
end