fix(manager): can add to super admin both roles of administrator and instructor if he is already one of them
This commit is contained in:
parent
f16addd080
commit
7625ec5c8f
3 changed files with 57 additions and 7 deletions
|
@ -68,18 +68,35 @@ module Manager
|
||||||
def add_administrateur_and_instructeur
|
def add_administrateur_and_instructeur
|
||||||
administrateur = Administrateur.by_email(current_super_admin.email)
|
administrateur = Administrateur.by_email(current_super_admin.email)
|
||||||
instructeur = Instructeur.by_email(current_super_admin.email)
|
instructeur = Instructeur.by_email(current_super_admin.email)
|
||||||
if administrateur && instructeur
|
notices, alerts = [], []
|
||||||
ActiveRecord::Base.transaction do
|
|
||||||
|
if administrateur
|
||||||
|
if !AdministrateursProcedure.exists?(procedure: procedure, administrateur: administrateur)
|
||||||
AdministrateursProcedure.create!(procedure: procedure, administrateur: administrateur, manager: true)
|
AdministrateursProcedure.create!(procedure: procedure, administrateur: administrateur, manager: true)
|
||||||
|
end
|
||||||
|
notices.push "L’administrateur #{administrateur.email} a été ajouté à la démarche."
|
||||||
|
else
|
||||||
|
alerts.push "L’administrateur #{administrateur.email} est introuvable."
|
||||||
|
end
|
||||||
|
|
||||||
|
if instructeur
|
||||||
procedure.groupe_instructeurs.map do |groupe_instructeur|
|
procedure.groupe_instructeurs.map do |groupe_instructeur|
|
||||||
|
if !instructeur.assign_to.exists?(groupe_instructeur: groupe_instructeur)
|
||||||
instructeur.assign_to.create(groupe_instructeur: groupe_instructeur, manager: true)
|
instructeur.assign_to.create(groupe_instructeur: groupe_instructeur, manager: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if procedure.groupe_instructeurs.many?
|
||||||
flash[:notice] = "L’administrateur \"#{administrateur.email}\" a été ajouté à la démarche. L'instructeur \"#{instructeur.email}\" a été ajouté aux #{procedure.groupe_instructeurs.count} groupes d'instructeurs"
|
notices.push "L'instructeur #{instructeur.email} a été ajouté aux #{procedure.groupe_instructeurs.count} groupes d'instructeurs."
|
||||||
else
|
else
|
||||||
flash[:alert] = "L’administrateur \"#{administrateur.email}\" est introuvable."
|
notices.push "L'instructeur #{instructeur.email} a été ajouté à la démarche."
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
alerts.push "L'instructeur #{instructeur.email} est introuvable."
|
||||||
|
end
|
||||||
|
|
||||||
|
flash[:notice] = notices.join(" ") if notices.present?
|
||||||
|
flash[:alert] = alerts.join(" ") if alerts.present?
|
||||||
|
|
||||||
redirect_to manager_procedure_path(procedure)
|
redirect_to manager_procedure_path(procedure)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ as well as a link to its edit page.
|
||||||
<button>Ajouter un administrateur (pour toujours)</button>
|
<button>Ajouter un administrateur (pour toujours)</button>
|
||||||
<p>J'utilise cette option ETQ support quand un usager a besoin de devenir administrateur sur une démarche</p>
|
<p>J'utilise cette option ETQ support quand un usager a besoin de devenir administrateur sur une démarche</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if procedure.administrateurs.any? { |admin| admin.email == current_super_admin.email } %>
|
<% if procedure.administrateurs.any? { |admin| admin.email == current_super_admin.email } && procedure.instructeurs.any? { |instructeur| instructeur.email == current_super_admin.email } %>
|
||||||
<p style="margin-top: 20px;">Vous êtes administrateur de cette démarche. Aller à la démarche
|
<p style="margin-top: 20px;">Vous êtes administrateur de cette démarche. Aller à la démarche
|
||||||
<%= link_to("ETQ admin", admin_procedure_path(procedure), **external_link_attributes) %>
|
<%= link_to("ETQ admin", admin_procedure_path(procedure), **external_link_attributes) %>
|
||||||
ou
|
ou
|
||||||
|
|
|
@ -135,6 +135,39 @@ describe Manager::ProceduresController, type: :controller do
|
||||||
subject
|
subject
|
||||||
expect(procedure.administrateurs).to include(administrateur)
|
expect(procedure.administrateurs).to include(administrateur)
|
||||||
expect(procedure.instructeurs).to include(administrateur.instructeur)
|
expect(procedure.instructeurs).to include(administrateur.instructeur)
|
||||||
|
expect(flash[:alert]).to be_nil
|
||||||
|
expect(flash[:notice]).to eq("L’administrateur #{administrateur.email} a été ajouté à la démarche. L'instructeur #{administrateur.instructeur.email} a été ajouté à la démarche.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the current super admin is an instructor of the procedure but not an administrator" do
|
||||||
|
let!(:administrateur) { create(:administrateur, email: super_admin.email, instructeur: instructeur) }
|
||||||
|
let(:instructeur) { create(:instructeur) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
procedure.groupe_instructeurs.map do |groupe_instructeur|
|
||||||
|
groupe_instructeur.add_instructeurs(emails: [instructeur.email])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "adds the current super admin as administrateur to the procedure" do
|
||||||
|
subject
|
||||||
|
expect(procedure.administrateurs).to include(administrateur)
|
||||||
|
expect(procedure.instructeurs).to include(administrateur.instructeur)
|
||||||
|
expect(flash[:alert]).to be_nil
|
||||||
|
expect(flash[:notice]).to eq("L’administrateur #{administrateur.email} a été ajouté à la démarche. L'instructeur #{instructeur.email} a été ajouté à la démarche.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the current super admin is an administrator of the procedure but not an instructor" do
|
||||||
|
let(:procedure) { create(:procedure, administrateurs: [administrateur, autre_administrateur]) }
|
||||||
|
|
||||||
|
it "adds the current super admin as instructor to the procedure" do
|
||||||
|
subject
|
||||||
|
expect(procedure.administrateurs).to include(administrateur)
|
||||||
|
expect(procedure.instructeurs).to include(administrateur.instructeur)
|
||||||
|
expect(flash[:alert]).to be_nil
|
||||||
|
expect(flash[:notice]).to eq("L’administrateur #{administrateur.email} a été ajouté à la démarche. L'instructeur #{administrateur.instructeur.email} a été ajouté à la démarche.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue