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

73 lines
1.9 KiB
Ruby
Raw Normal View History

class Admin::InstructeursController < AdminController
2016-02-05 17:40:58 +01:00
include SmartListing::Helper::ControllerExtensions
helper SmartListing::Helper
def index
@instructeurs = smart_listing_create :instructeurs,
current_administrateur.instructeurs,
partial: "admin/instructeurs/list",
2017-06-12 13:49:51 +02:00
array: true
@instructeur ||= Instructeur.new
2016-02-05 17:40:58 +01:00
end
def create
email = params[:instructeur][:email].downcase
@instructeur = Instructeur.find_by(email: email)
procedure_id = params[:procedure_id]
if @instructeur.nil?
invite_instructeur(params[:instructeur][:email])
2016-02-05 17:40:58 +01:00
else
assign_instructeur!
2016-02-05 17:40:58 +01:00
end
if procedure_id.present?
redirect_to admin_procedure_assigns_path(procedure_id: procedure_id)
else
redirect_to admin_instructeurs_path
end
2016-02-05 17:40:58 +01:00
end
2016-02-09 12:23:49 +01:00
def destroy
Instructeur.find(params[:id]).administrateurs.delete current_administrateur
redirect_to admin_instructeurs_path
2016-02-09 12:23:49 +01:00
end
private
def invite_instructeur(email)
password = SecureRandom.hex
@instructeur = Instructeur.create(
email: email,
password: password,
password_confirmation: password,
administrateurs: [current_administrateur]
)
if @instructeur.errors.messages.empty?
@instructeur.invite!
if User.exists?(email: @instructeur.email)
InstructeurMailer.user_to_instructeur(@instructeur.email).deliver_later
else
2018-10-25 15:07:15 +02:00
User.create(email: email, password: password, confirmed_at: Time.zone.now)
end
2018-08-29 22:11:38 +02:00
flash.notice = 'Instructeur ajouté'
else
flash.alert = @instructeur.errors.full_messages
end
end
def assign_instructeur!
if current_administrateur.instructeurs.include?(@instructeur)
2018-08-29 22:11:38 +02:00
flash.alert = 'Instructeur déjà ajouté'
else
@instructeur.administrateurs.push current_administrateur
2018-08-29 22:11:38 +02:00
flash.notice = 'Instructeur ajouté'
# TODO Mailer no assign_to
end
2016-02-05 17:40:58 +01:00
end
end