Administrateur can be assign accompagnateur on each of his procedure.
This commit is contained in:
parent
1923f2aec1
commit
1fcb33104d
19 changed files with 385 additions and 74 deletions
|
@ -1,11 +1,30 @@
|
|||
class Admin::AccompagnateursController < AdminController
|
||||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
before_action :retrieve_procedure
|
||||
|
||||
def show
|
||||
assign_scope = @procedure.gestionnaires
|
||||
@accompagnateurs_assign = smart_listing_create :accompagnateurs_assign,
|
||||
assign_scope,
|
||||
partial: "admin/accompagnateurs/list_assign",
|
||||
array: true
|
||||
|
||||
not_assign_scope = current_administrateur.gestionnaires.where.not(id: assign_scope.ids)
|
||||
not_assign_scope = not_assign_scope.where("email LIKE '%#{params[:filter]}%'") if params[:filter]
|
||||
|
||||
@accompagnateurs_not_assign = smart_listing_create :accompagnateurs_not_assign,
|
||||
not_assign_scope,
|
||||
partial: "admin/accompagnateurs/list_not_assign",
|
||||
array: true
|
||||
|
||||
end
|
||||
|
||||
def update
|
||||
AccompagnateurService.change_assignement! Gestionnaire.find(params[:accompagnateur_id]), Procedure.find(params[:procedure_id]), params[:to]
|
||||
|
||||
flash.notice = "Assignement effectué"
|
||||
redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id]
|
||||
end
|
||||
end
|
|
@ -4,37 +4,59 @@ class Admin::GestionnairesController < AdminController
|
|||
|
||||
def index
|
||||
@gestionnaires = smart_listing_create :gestionnaires,
|
||||
current_administrateur.gestionnaires,
|
||||
partial: "admin/gestionnaires/list",
|
||||
array: true
|
||||
current_administrateur.gestionnaires,
|
||||
partial: "admin/gestionnaires/list",
|
||||
array: true
|
||||
@gestionnaire ||= Gestionnaire.new
|
||||
end
|
||||
|
||||
|
||||
def create
|
||||
@gestionnaire = Gestionnaire.create(create_gestionnaire_params)
|
||||
@gestionnaire = Gestionnaire.find_by_email(params[:gestionnaire][:email])
|
||||
|
||||
if @gestionnaire.errors.messages.empty?
|
||||
@gestionnaire.administrateurs.push current_administrateur
|
||||
|
||||
flash.notice = 'Gestionnaire ajouté'
|
||||
GestionnaireMailer.new_gestionnaire(@gestionnaire.email, @gestionnaire.password).deliver_now!
|
||||
if @gestionnaire.nil?
|
||||
new_gestionnaire!
|
||||
else
|
||||
flash.alert = @gestionnaire.errors.full_messages.join('<br />').html_safe
|
||||
assign_gestionnaire!
|
||||
end
|
||||
|
||||
redirect_to admin_gestionnaires_path
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
Gestionnaire.find(params[:id]).destroy
|
||||
Gestionnaire.find(params[:id]).administrateurs.delete current_administrateur
|
||||
redirect_to admin_gestionnaires_path
|
||||
end
|
||||
|
||||
|
||||
def create_gestionnaire_params
|
||||
params.require(:gestionnaire).permit(:email)
|
||||
.merge(password: SecureRandom.hex(5))
|
||||
.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
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue