demarches-normaliennes/app/controllers/admin/gestionnaires_controller.rb

62 lines
1.9 KiB
Ruby
Raw Normal View History

2016-02-05 17:40:58 +01:00
class Admin::GestionnairesController < AdminController
include SmartListing::Helper::ControllerExtensions
helper SmartListing::Helper
def index
@gestionnaires = smart_listing_create :gestionnaires,
current_administrateur.gestionnaires,
partial: "admin/gestionnaires/list",
array: true
2016-02-05 17:40:58 +01:00
@gestionnaire ||= Gestionnaire.new
end
def create
@gestionnaire = Gestionnaire.find_by_email(params[:gestionnaire][:email])
if @gestionnaire.nil?
new_gestionnaire!
2016-02-05 17:40:58 +01:00
else
assign_gestionnaire!
2016-02-05 17:40:58 +01:00
end
redirect_to admin_gestionnaires_path
end
2016-02-09 12:23:49 +01:00
def destroy
Gestionnaire.find(params[:id]).administrateurs.delete current_administrateur
2016-02-09 12:23:49 +01:00
redirect_to admin_gestionnaires_path
end
2016-02-09 11:00:13 +01:00
def create_gestionnaire_params
2016-02-05 17:40:58 +01:00
params.require(:gestionnaire).permit(:email)
.merge(password: SecureRandom.hex(5))
.merge(administrateurs: [current_administrateur])
end
private
def new_gestionnaire!
@gestionnaire = Gestionnaire.create(create_gestionnaire_params)
if @gestionnaire.errors.messages.empty?
flash.notice = 'Accompagnateur ajouté'
GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now!
GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now!
else
flash.alert = @gestionnaire.errors.full_messages.join('<br />').html_safe
end
end
def assign_gestionnaire!
if current_administrateur.gestionnaires.include? @gestionnaire
flash.alert = 'Accompagnateur déjà ajouté'
else
GestionnaireMailer.new_assignement(@gestionnaire.email, current_administrateur.email).deliver_now!
@gestionnaire.administrateurs.push current_administrateur
flash.notice = 'Accompagnateur ajouté'
#TODO Mailer no assign_to
end
2016-02-05 17:40:58 +01:00
end
end