diff --git a/app/controllers/instructeurs/groupe_instructeur_services_controller.rb b/app/controllers/instructeurs/groupe_instructeur_services_controller.rb index ec553c27a2c..74364013aca 100644 --- a/app/controllers/instructeurs/groupe_instructeur_services_controller.rb +++ b/app/controllers/instructeurs/groupe_instructeur_services_controller.rb @@ -9,7 +9,7 @@ def create assign_procedure_and_groupe_instructeur @service = @groupe_instructeur.build_groupe_instructeur_service(service_params) if @service.save - redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été ajoutées" + redirect_to_groupe_instructeur("Les informations de contact ont bien été ajoutées") else flash[:alert] = @service.errors.full_messages render :new @@ -25,7 +25,7 @@ def update assign_procedure_and_groupe_instructeur @service = @groupe_instructeur.groupe_instructeur_service if @service.update(service_params) - redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été modifiées" + redirect_to_groupe_instructeur("Les informations de contact ont bien été modifiées") else flash[:alert] = @service.errors.full_messages render :edit @@ -35,11 +35,19 @@ def update def destroy assign_procedure_and_groupe_instructeur @groupe_instructeur.groupe_instructeur_service.destroy - redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été supprimées" + redirect_to_groupe_instructeur("Les informations de contact ont bien été supprimées") end private + def redirect_to_groupe_instructeur(notice) + if params[:from_admin] == "true" + redirect_to admin_procedure_groupe_instructeur_path(@groupe_instructeur, procedure_id: @procedure.id), notice: notice + else + redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: notice + end + end + def assign_procedure_and_groupe_instructeur @procedure = current_instructeur.procedures.find params[:procedure_id] @groupe_instructeur = current_instructeur.groupe_instructeurs.find params[:groupe_id] diff --git a/app/views/administrateurs/groupe_instructeurs/_groupe_instructeur_service.html.haml b/app/views/administrateurs/groupe_instructeurs/_groupe_instructeur_service.html.haml index 457f2a91294..e7883cd0dc2 100644 --- a/app/views/administrateurs/groupe_instructeurs/_groupe_instructeur_service.html.haml +++ b/app/views/administrateurs/groupe_instructeurs/_groupe_instructeur_service.html.haml @@ -5,13 +5,13 @@ = "Le groupe #{groupe_instructeur.label} n'a pas d'informations de contact. Les informations de contact affichées à l'usager seront celles du service de la procédure" %p.mt-3 - if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur) - = link_to "+ Ajouter des informations de contact", new_instructeur_groupe_groupe_instructeur_service_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id), class: "fr-btn" + = link_to "+ Ajouter des informations de contact", new_instructeur_groupe_groupe_instructeur_service_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id, from_admin: true), class: "fr-btn" - else Si vous souhaitez créer un service pour ce groupe, vous devez faire partie du groupe instructeur - else %p.mt-3 - if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur) - = link_to "Modifier les informations de contact", edit_instructeur_groupe_groupe_instructeur_service_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id), class: "fr-btn" + = link_to "Modifier les informations de contact", edit_instructeur_groupe_groupe_instructeur_service_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id, from_admin: true), class: "fr-btn" - else Si vous souhaitez modifier ce service, vous devez faire partie du groupe instructeur %p.mt-3= service.nom diff --git a/app/views/instructeurs/groupe_instructeur_services/_form.html.haml b/app/views/instructeurs/groupe_instructeur_services/_form.html.haml index fe482b10d0d..ce9ef2d661f 100644 --- a/app/views/instructeurs/groupe_instructeur_services/_form.html.haml +++ b/app/views/instructeurs/groupe_instructeur_services/_form.html.haml @@ -1,4 +1,5 @@ = form_with url: instructeur_groupe_groupe_instructeur_service_path, model: @service, local: true do |f| + = hidden_field_tag :from_admin, params[:from_admin] = render Dsfr::CalloutComponent.new(title: "Informations de contact") do |c| - c.body do diff --git a/spec/controllers/instructeurs/groupe_instructeur_services_controller_spec.rb b/spec/controllers/instructeurs/groupe_instructeur_services_controller_spec.rb index 8295f39554a..41d16ad3912 100644 --- a/spec/controllers/instructeurs/groupe_instructeur_services_controller_spec.rb +++ b/spec/controllers/instructeurs/groupe_instructeur_services_controller_spec.rb @@ -3,6 +3,7 @@ let(:procedure) { create(:procedure) } let(:assign_to) { create(:assign_to, instructeur: instructeur, groupe_instructeur: build(:groupe_instructeur, procedure: procedure)) } let(:gi) { assign_to.groupe_instructeur } + let(:from_admin) { nil } before do sign_in(instructeur.user) @@ -20,7 +21,8 @@ adresse: 'adresse' }, procedure_id: procedure.id, - groupe_id: gi.id + groupe_id: gi.id, + from_admin: from_admin } end @@ -34,6 +36,14 @@ expect(GroupeInstructeurService.last.horaires).to eq('horaires') expect(GroupeInstructeurService.last.adresse).to eq('adresse') end + + context 'from admin' do + let(:from_admin) { true } + it do + post :create, params: params + expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(gi, procedure_id: procedure.id)) + end + end end context 'when submitting an invalid service' do @@ -69,7 +79,8 @@ id: service.id, groupe_instructeur_service: service_params, procedure_id: procedure.id, - groupe_id: gi.id + groupe_id: gi.id, + from_admin: from_admin } } @@ -84,6 +95,11 @@ it { expect(response).to redirect_to(instructeur_groupe_path(gi, procedure_id: procedure.id)) } end + context 'when updating a service as an admin' do + let(:from_admin) { true } + it { expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(gi, procedure_id: procedure.id)) } + end + context 'when updating a service with invalid data' do let(:service_params) { { nom: '' } }