From 96dd6bec524aef6c147442a299d7799401fdafe5 Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Sat, 30 Sep 2023 10:45:54 +0000 Subject: [PATCH 1/7] feat: US4.3 update and delete groupe gestionnaire --- app/models/groupe_gestionnaire.rb | 4 + .../groupe_gestionnaires_controller_spec.rb | 84 +++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/app/models/groupe_gestionnaire.rb b/app/models/groupe_gestionnaire.rb index 31a30abfb..f0a4d26a8 100644 --- a/app/models/groupe_gestionnaire.rb +++ b/app/models/groupe_gestionnaire.rb @@ -26,4 +26,8 @@ class GroupeGestionnaire < ApplicationRecord def parent_name parent&.name end + + def can_be_deleted?(current_user) + (gestionnaires.empty? || (gestionnaires == [current_user]))&& administrateurs.empty? && children.empty? + end end diff --git a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb index 63c57d385..8d377a9b3 100644 --- a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb +++ b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb @@ -110,4 +110,88 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) } end end + + describe "#show" do + subject { get :show, params: { id: child_groupe_gestionnaire.id } } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it { expect(response).to have_http_status(:ok) } + it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) } + end + end + + describe "#edit" do + subject { get :edit, params: { id: child_groupe_gestionnaire.id } } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it { expect(response).to have_http_status(:ok) } + it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) } + end + end + + describe "#update" do + subject { post :update, params: { id: child_groupe_gestionnaire.id, groupe_gestionnaire: { name: 'new child name' } } } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it { expect(child_groupe_gestionnaire.reload.name).to eq('new child name') } + it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaire_path(child_groupe_gestionnaire)) } + end + end + + describe "#destroy" do + subject { post :destroy, params: { id: child_groupe_gestionnaire.id } } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it { expect(GroupeGestionnaire.all.count).to eq(1) } + it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) } + end + end end From e6474f0d1448ab4cbcd72c35cf0f896c45f388de Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Sun, 1 Oct 2023 10:52:05 +0000 Subject: [PATCH 2/7] feat: US4.3.9 children management --- .../children_component.html.haml | 6 ++++-- app/models/groupe_gestionnaire.rb | 4 ---- .../groupe_gestionnaires_controller_spec.rb | 16 ++++++++-------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml index dd5f75806..0147657ab 100644 --- a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml +++ b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml @@ -1,7 +1,9 @@ .fr-col-6.fr-col-md-4.fr-col-lg-3 - = link_to @path, id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do + = link_to gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do .fr-tile__body.flex.column.align-center.justify-between - %p.fr-badge.fr-badge--success Validé + %div + %span.icon.accept + %p.fr-tile-status-accept Validé %div .line-count.fr-my-1w %p.fr-tag= @groupe_gestionnaire.children.size diff --git a/app/models/groupe_gestionnaire.rb b/app/models/groupe_gestionnaire.rb index f0a4d26a8..31a30abfb 100644 --- a/app/models/groupe_gestionnaire.rb +++ b/app/models/groupe_gestionnaire.rb @@ -26,8 +26,4 @@ class GroupeGestionnaire < ApplicationRecord def parent_name parent&.name end - - def can_be_deleted?(current_user) - (gestionnaires.empty? || (gestionnaires == [current_user]))&& administrateurs.empty? && children.empty? - end end diff --git a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb index 8d377a9b3..212259501 100644 --- a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb +++ b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb @@ -113,8 +113,8 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do describe "#show" do subject { get :show, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } context "when not logged" do before { subject } @@ -134,8 +134,8 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do describe "#edit" do subject { get :edit, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } context "when not logged" do before { subject } @@ -155,8 +155,8 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do describe "#update" do subject { post :update, params: { id: child_groupe_gestionnaire.id, groupe_gestionnaire: { name: 'new child name' } } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } context "when not logged" do before { subject } @@ -176,8 +176,8 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do describe "#destroy" do subject { post :destroy, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) } + let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } + let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } context "when not logged" do before { subject } From 9ff1e57feb52bdea9dbbdb121affc86c3a59e94a Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Mon, 9 Oct 2023 17:18:38 +0000 Subject: [PATCH 3/7] feat: US5.1 US5.2 administrateur in admin --- .../card/children_component/children_component.html.haml | 2 +- .../gestionnaire_component.rb | 2 +- app/views/administrateurs/procedures/_main_menu.html.haml | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 app/views/administrateurs/procedures/_main_menu.html.haml diff --git a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml index 0147657ab..e2cabda86 100644 --- a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml +++ b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml @@ -1,5 +1,5 @@ .fr-col-6.fr-col-md-4.fr-col-lg-3 - = link_to gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do + = link_to @path, id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do .fr-tile__body.flex.column.align-center.justify-between %div %span.icon.accept diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_gestionnaires/gestionnaire_component.rb b/app/components/groupe_gestionnaire/groupe_gestionnaire_gestionnaires/gestionnaire_component.rb index 0e8e1bab5..957b9ea35 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_gestionnaires/gestionnaire_component.rb +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_gestionnaires/gestionnaire_component.rb @@ -24,7 +24,7 @@ class GroupeGestionnaire::GroupeGestionnaireGestionnaires::GestionnaireComponent end def remove_button - if is_there_at_least_another_active_admin? + if is_there_at_least_another_active_admin? && @is_gestionnaire button_to 'Retirer', gestionnaire_groupe_gestionnaire_gestionnaire_path(@groupe_gestionnaire, @gestionnaire), method: :delete, diff --git a/app/views/administrateurs/procedures/_main_menu.html.haml b/app/views/administrateurs/procedures/_main_menu.html.haml new file mode 100644 index 000000000..d34efdfbf --- /dev/null +++ b/app/views/administrateurs/procedures/_main_menu.html.haml @@ -0,0 +1,8 @@ +.fr-container + %nav#header-navigation.fr-nav{ role: 'navigation', 'aria-label': 'Menu principal administrateur' } + %ul.fr-nav__list + %li.fr-nav__item= link_to 'Mes démarches', admin_procedures_path, class:'fr-nav__link', 'aria-current': current_page?(controller: 'procedures', action: :index) ? 'true' : nil + - if Rails.application.config.ds_zonage_enabled + %li.fr-nav__item= link_to 'Toutes les démarches', all_admin_procedures_path(zone_ids: current_administrateur.zones), class:'fr-nav__link', 'aria-current': current_page?(all_admin_procedures_path) ? 'page' : nil + - if current_administrateur.groupe_gestionnaire_id + %li.fr-nav__item= link_to 'Mon groupe gestionnaire', admin_groupe_gestionnaire_path, class:'fr-nav__link', 'aria-current': current_page?(admin_groupe_gestionnaire_path) ? 'page' : nil From 8d8feedff08e6bccd92003c2eba4c9b50410273d Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Tue, 10 Oct 2023 12:42:37 +0000 Subject: [PATCH 4/7] fix: group "it" test --- .../groupe_gestionnaires_controller_spec.rb | 84 ------------------- 1 file changed, 84 deletions(-) diff --git a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb index 212259501..63c57d385 100644 --- a/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb +++ b/spec/controllers/gestionnaires/groupe_gestionnaires_controller_spec.rb @@ -110,88 +110,4 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) } end end - - describe "#show" do - subject { get :show, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } - - context "when not logged" do - before { subject } - it { expect(response).to redirect_to(new_user_session_path) } - end - - context "when logged in" do - before do - sign_in(gestionnaire.user) - subject - end - - it { expect(response).to have_http_status(:ok) } - it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) } - end - end - - describe "#edit" do - subject { get :edit, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } - - context "when not logged" do - before { subject } - it { expect(response).to redirect_to(new_user_session_path) } - end - - context "when logged in" do - before do - sign_in(gestionnaire.user) - subject - end - - it { expect(response).to have_http_status(:ok) } - it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) } - end - end - - describe "#update" do - subject { post :update, params: { id: child_groupe_gestionnaire.id, groupe_gestionnaire: { name: 'new child name' } } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } - - context "when not logged" do - before { subject } - it { expect(response).to redirect_to(new_user_session_path) } - end - - context "when logged in" do - before do - sign_in(gestionnaire.user) - subject - end - - it { expect(child_groupe_gestionnaire.reload.name).to eq('new child name') } - it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaire_path(child_groupe_gestionnaire)) } - end - end - - describe "#destroy" do - subject { post :destroy, params: { id: child_groupe_gestionnaire.id } } - let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) } - let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire_root.id}/", gestionnaires: [gestionnaire]) } - - context "when not logged" do - before { subject } - it { expect(response).to redirect_to(new_user_session_path) } - end - - context "when logged in" do - before do - sign_in(gestionnaire.user) - subject - end - - it { expect(GroupeGestionnaire.all.count).to eq(1) } - it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) } - end - end end From b19413643c7be3c1f349b251bf37edbf8c6cfc11 Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Tue, 24 Oct 2023 15:45:20 +0000 Subject: [PATCH 5/7] feat: write message to gestionnaires as administrateur --- .../card/children_component/children_component.html.haml | 4 +--- .../commentaires_component/commentaires_component.html.haml | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml index e2cabda86..dd5f75806 100644 --- a/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml +++ b/app/components/groupe_gestionnaire/card/children_component/children_component.html.haml @@ -1,9 +1,7 @@ .fr-col-6.fr-col-md-4.fr-col-lg-3 = link_to @path, id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do .fr-tile__body.flex.column.align-center.justify-between - %div - %span.icon.accept - %p.fr-tile-status-accept Validé + %p.fr-badge.fr-badge--success Validé %div .line-count.fr-my-1w %p.fr-tag= @groupe_gestionnaire.children.size diff --git a/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml b/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml index 5af78516a..87e1117f8 100644 --- a/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml +++ b/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml @@ -1,6 +1,7 @@ .fr-col-6.fr-col-md-4.fr-col-lg-3 = link_to @path, id: 'administrateurs', class: 'fr-tile fr-enlarge-link' do .fr-tile__body.flex.column.align-center.justify-between + %p.fr-badge.fr-badge--success Validé %div .line-count.fr-my-1w %p.fr-tag= @administrateur.commentaire_groupe_gestionnaires.size From a6ca4b668eb9ec4b39f32ccb8c72b5813560133f Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Thu, 26 Oct 2023 08:51:37 +0000 Subject: [PATCH 6/7] feat: answer message to administrateur as gestionnaire --- .../card/commentaires_component.rb | 8 ++ .../commentaires_component.html.haml | 4 +- .../commentaire_component.rb | 3 +- .../commentaire_component.html.haml | 6 + .../commentaire_component.rb | 26 +++++ .../commentaire_component.html.haml | 4 + .../groupe_gestionnaire_controller.rb | 4 +- ...pe_gestionnaire_commentaires_controller.rb | 48 ++++++++ app/models/commentaire_groupe_gestionnaire.rb | 9 ++ .../destroy.turbo_stream.haml | 3 + .../index.html.haml | 16 +++ .../show.html.haml | 15 +++ .../groupe_gestionnaires/show.html.haml | 2 + .../commentaires/_form.html.haml | 10 +- config/locales/en.yml | 7 ++ config/locales/fr.yml | 4 + .../commentaire_groupe_gestionnaire/fr.yml | 5 + .../groupe_gestionnaire_commentaires/en.yml | 7 ++ .../groupe_gestionnaire_commentaires/fr.yml | 7 ++ config/routes.rb | 1 + ...ils_to_commentaire_groupe_gestionnaires.rb | 7 ++ db/schema.rb | 2 + .../groupe_gestionnaire_controller_spec.rb | 2 +- ...stionnaire_commentaires_controller_spec.rb | 110 ++++++++++++++++++ .../commentaire_groupe_gestionnaire_spec.rb | 23 ++++ 25 files changed, 321 insertions(+), 12 deletions(-) create mode 100644 app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb create mode 100644 app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml create mode 100644 app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb create mode 100644 app/views/gestionnaires/groupe_gestionnaire_commentaires/destroy.turbo_stream.haml create mode 100644 app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml create mode 100644 app/views/gestionnaires/groupe_gestionnaire_commentaires/show.html.haml create mode 100644 config/locales/models/commentaire_groupe_gestionnaire/fr.yml create mode 100644 config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/en.yml create mode 100644 config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/fr.yml create mode 100644 db/migrate/20231025134902_add_emails_to_commentaire_groupe_gestionnaires.rb create mode 100644 spec/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller_spec.rb diff --git a/app/components/groupe_gestionnaire/card/commentaires_component.rb b/app/components/groupe_gestionnaire/card/commentaires_component.rb index 9cfd67073..e97990032 100644 --- a/app/components/groupe_gestionnaire/card/commentaires_component.rb +++ b/app/components/groupe_gestionnaire/card/commentaires_component.rb @@ -4,4 +4,12 @@ class GroupeGestionnaire::Card::CommentairesComponent < ApplicationComponent @administrateur = administrateur @path = path end + + def number_commentaires + if @administrateur + @administrateur.commentaire_groupe_gestionnaires.size + else + @groupe_gestionnaire.commentaire_groupe_gestionnaires.select(:sender_id, :sender_type).distinct.size + end + end end diff --git a/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml b/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml index 87e1117f8..984401841 100644 --- a/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml +++ b/app/components/groupe_gestionnaire/card/commentaires_component/commentaires_component.html.haml @@ -4,7 +4,7 @@ %p.fr-badge.fr-badge--success Validé %div .line-count.fr-my-1w - %p.fr-tag= @administrateur.commentaire_groupe_gestionnaires.size + %p.fr-tag= number_commentaires %h3.fr-h6 - = t('.title', count: @administrateur.commentaire_groupe_gestionnaires.size) + = t('.title', count: number_commentaires) %p.fr-btn.fr-btn--tertiary= t('views.shared.actions.see') diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component.rb b/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component.rb index 48b2e71fc..98e87b747 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component.rb +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component.rb @@ -5,6 +5,7 @@ class GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent < @commentaire = commentaire @connected_user = connected_user @is_gestionnaire = is_gestionnaire + @groupe_gestionnaire = commentaire.groupe_gestionnaire end private @@ -13,7 +14,7 @@ class GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent < if @commentaire.sent_by?(@connected_user) t('.you') else - (@commentaire.gestionnaire || @commentaire.sender).email + @commentaire.gestionnaire_id ? @commentaire.gestionnaire_email : @commentaire.sender_email end end diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component/commentaire_component.html.haml b/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component/commentaire_component.html.haml index f4881d75b..eea959a25 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component/commentaire_component.html.haml +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_commentaires/commentaire_component/commentaire_component.html.haml @@ -10,3 +10,9 @@ %p= t('.deleted_body') - else = render SimpleFormatComponent.new(@commentaire.body, allow_a: false) + + .message-extras.flex.justify-start + - if @commentaire.soft_deletable?(@connected_user) + = button_to gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire), method: :delete, class: 'button danger', form: { data: { turbo: true, turbo_confirm: t('.confirm') } } do + %span.icon.delete + = t('.delete_button') diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb new file mode 100644 index 000000000..91540ff2c --- /dev/null +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb @@ -0,0 +1,26 @@ +class GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent < ApplicationComponent + include ApplicationHelper + + def initialize(groupe_gestionnaire:, commentaire:) + @groupe_gestionnaire = groupe_gestionnaire + @commentaire = commentaire + end + + def email + if @commentaire.sender == current_gestionnaire + "#{current_gestionnaire.email} (C’est vous !)" + else + @commentaire.sender_email + end + end + + def created_at + try_format_datetime(@commentaire.created_at) + end + + def see_button + link_to 'Voir', + gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire), + class: 'button' + end +end diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml new file mode 100644 index 000000000..82114d035 --- /dev/null +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml @@ -0,0 +1,4 @@ +%tr{ id: dom_id(@commentaire) } + %td= email + %td= created_at + %td= see_button diff --git a/app/controllers/administrateurs/groupe_gestionnaire_controller.rb b/app/controllers/administrateurs/groupe_gestionnaire_controller.rb index f473e2c06..6511f262e 100644 --- a/app/controllers/administrateurs/groupe_gestionnaire_controller.rb +++ b/app/controllers/administrateurs/groupe_gestionnaire_controller.rb @@ -12,7 +12,7 @@ module Administrateurs end def commentaires - @commentaire = Commentaire.new + @commentaire = CommentaireGroupeGestionnaire.new end def create_commentaire @@ -42,7 +42,7 @@ module Administrateurs end def commentaire_params - params.require(:commentaire).permit(:body) + params.require(:commentaire_groupe_gestionnaire).permit(:body) end end end diff --git a/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb b/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb new file mode 100644 index 000000000..c05faaf86 --- /dev/null +++ b/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb @@ -0,0 +1,48 @@ +module Gestionnaires + class GroupeGestionnaireCommentairesController < GestionnaireController + before_action :retrieve_groupe_gestionnaire + before_action :retrieve_last_commentaire, only: [:show, :create, :destroy] + + def index + end + + def show + @commentaire = CommentaireGroupeGestionnaire.new + end + + def create + @commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires.create(commentaire_params.merge(sender: @last_commentaire.sender, gestionnaire: current_gestionnaire)) + + if @commentaire.errors.empty? + flash.notice = "Message envoyé" + redirect_to gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire) + else + flash.alert = @commentaire.errors.full_messages + render :show + end + end + + def destroy + if @last_commentaire.soft_deletable?(current_gestionnaire) + @last_commentaire.soft_delete! + + flash.notice = t('.notice') + else + flash.alert = t('.alert_acl') + end + # redirect_to gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @last_commentaire) + rescue Discard::RecordNotDiscarded + flash.alert = t('.alert_already_discarded') + end + + private + + def retrieve_last_commentaire + @last_commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires.find(params[:id]) + end + + def commentaire_params + params.require(:commentaire_groupe_gestionnaire).permit(:body) + end + end +end diff --git a/app/models/commentaire_groupe_gestionnaire.rb b/app/models/commentaire_groupe_gestionnaire.rb index 6d7c5faba..f7182bf53 100644 --- a/app/models/commentaire_groupe_gestionnaire.rb +++ b/app/models/commentaire_groupe_gestionnaire.rb @@ -6,6 +6,8 @@ class CommentaireGroupeGestionnaire < ApplicationRecord validates :body, presence: { message: "ne peut être vide" } + before_create :set_emails + def soft_deletable?(connected_user) sent_by?(connected_user) && sent_by_gestionnaire? && !discarded? end @@ -25,4 +27,11 @@ class CommentaireGroupeGestionnaire < ApplicationRecord someone == sender end end + + private + + def set_emails + self.sender_email = sender.email + self.gestionnaire_email = gestionnaire&.email + end end diff --git a/app/views/gestionnaires/groupe_gestionnaire_commentaires/destroy.turbo_stream.haml b/app/views/gestionnaires/groupe_gestionnaire_commentaires/destroy.turbo_stream.haml new file mode 100644 index 000000000..cbf383795 --- /dev/null +++ b/app/views/gestionnaires/groupe_gestionnaire_commentaires/destroy.turbo_stream.haml @@ -0,0 +1,3 @@ +- if @last_commentaire.discarded? + = turbo_stream.update @last_commentaire do + = render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: @last_commentaire, connected_user: current_gestionnaire)) diff --git a/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml b/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml new file mode 100644 index 000000000..1fdbb4285 --- /dev/null +++ b/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml @@ -0,0 +1,16 @@ += render partial: 'gestionnaires/breadcrumbs', + locals: { steps: [['Groupes gestionnaire', gestionnaire_groupe_gestionnaires_path], + ["#{@groupe_gestionnaire.name.truncate_words(10)}", gestionnaire_groupe_gestionnaire_path(@groupe_gestionnaire)], + ["Messagerie"]], preview: false } + +.container + %h1 Messagerie de « #{@groupe_gestionnaire.name} » + + %table.table + %thead + %tr + %th= 'Adresse email' + %th= 'Dernier message' + %th + %tbody#commentaires + = render(GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent.with_collection(@groupe_gestionnaire.commentaire_groupe_gestionnaires.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC"), groupe_gestionnaire: @groupe_gestionnaire)) diff --git a/app/views/gestionnaires/groupe_gestionnaire_commentaires/show.html.haml b/app/views/gestionnaires/groupe_gestionnaire_commentaires/show.html.haml new file mode 100644 index 000000000..1ced5e908 --- /dev/null +++ b/app/views/gestionnaires/groupe_gestionnaire_commentaires/show.html.haml @@ -0,0 +1,15 @@ += render partial: 'gestionnaires/breadcrumbs', + locals: { steps: [['Groupes gestionnaire', gestionnaire_groupe_gestionnaires_path], + ["#{@groupe_gestionnaire.name.truncate_words(10)}", gestionnaire_groupe_gestionnaire_path(@groupe_gestionnaire)], + ["Messagerie", gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire)], + [@last_commentaire.sender_email]], preview: false } + +.container + %h1 Messages de « #{ @last_commentaire.sender_email } » +.messagerie.container + %ul.messages-list{ data: { controller: 'scroll-to' } } + - @groupe_gestionnaire.commentaire_groupe_gestionnaires.where(sender_id: @last_commentaire.sender_id, sender_type: @last_commentaire.sender_type).each do |commentaire| + %li.message{ class: commentaire_is_from_me_class(commentaire, current_gestionnaire), id: dom_id(commentaire) } + = render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: commentaire, connected_user: current_gestionnaire)) + - if @last_commentaire.sender + = render partial: "shared/groupe_gestionnaires/commentaires/form", locals: { commentaire: @commentaire, form_url: gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire) } diff --git a/app/views/gestionnaires/groupe_gestionnaires/show.html.haml b/app/views/gestionnaires/groupe_gestionnaires/show.html.haml index bceaf483f..60d22bda5 100644 --- a/app/views/gestionnaires/groupe_gestionnaires/show.html.haml +++ b/app/views/gestionnaires/groupe_gestionnaires/show.html.haml @@ -22,3 +22,5 @@ = render GroupeGestionnaire::Card::GestionnairesComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_gestionnaires_path(@groupe_gestionnaire)) = render GroupeGestionnaire::Card::AdministrateursComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_administrateurs_path(@groupe_gestionnaire)) = render GroupeGestionnaire::Card::ChildrenComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire)) + = render GroupeGestionnaire::Card::CommentairesComponent.new(groupe_gestionnaire: @groupe_gestionnaire, administrateur: nil, path: gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire)) + diff --git a/app/views/shared/groupe_gestionnaires/commentaires/_form.html.haml b/app/views/shared/groupe_gestionnaires/commentaires/_form.html.haml index 625c962e3..f90764094 100644 --- a/app/views/shared/groupe_gestionnaires/commentaires/_form.html.haml +++ b/app/views/shared/groupe_gestionnaires/commentaires/_form.html.haml @@ -1,12 +1,10 @@ = render NestedForms::FormOwnerComponent.new = form_for(commentaire, url: form_url) do |f| - - dossier = commentaire.dossier - - placeholder = t('views.shared.dossiers.messages.form.write_message_to_administration_placeholder') - - if instructeur_signed_in? || administrateur_signed_in? || expert_signed_in? - - placeholder = t('views.shared.dossiers.messages.form.write_message_placeholder') + - if @last_commentaire + = f.hidden_field :last_commentaire, value: @last_commentaire.id, name: :id %p.mandatory-explanation= t('asterisk_html', scope: [:utils]) - = render Dsfr::InputComponent.new(form: f, attribute: :body, input_type: :text_area, opts: { rows: 5, placeholder: placeholder, title: placeholder, class: 'fr-input message-textarea'}) + = render Dsfr::InputComponent.new(form: f, attribute: :body, input_type: :text_area, opts: { rows: 5, placeholder: t('views.gestionnaires.groupe_gestionnaires.messages.form.write_message_placeholder'), title: t('views.gestionnaires.groupe_gestionnaires.messages.form.write_message_placeholder'), class: 'fr-input message-textarea'}) .fr-mt-3w - = f.submit t('views.shared.dossiers.messages.form.send_message'), class: 'fr-btn', data: { disable: true } + = f.submit t('views.gestionnaires.groupe_gestionnaires.messages.form.send_message'), class: 'fr-btn', data: { disable: true } diff --git a/config/locales/en.yml b/config/locales/en.yml index 694c4c470..75eb5be32 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -346,6 +346,13 @@ en: form: "Form" edit_siret: "Edit SIRET" edit_identity: "Edit identity data" + gestionnaires: + groupe_gestionnaires: + delete: Delete + messages: + form: + send_message: "Send message" + write_message_placeholder: "Write your message here" instructeurs: dossiers: tab_steps: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index c516507b3..f0528d636 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -351,6 +351,10 @@ fr: gestionnaires: groupe_gestionnaires: delete: Supprimer + messages: + form: + send_message: "Envoyer le message" + write_message_placeholder: "Écrivez votre message ici" instructeurs: dossiers: tab_steps: diff --git a/config/locales/models/commentaire_groupe_gestionnaire/fr.yml b/config/locales/models/commentaire_groupe_gestionnaire/fr.yml new file mode 100644 index 000000000..002c9fa92 --- /dev/null +++ b/config/locales/models/commentaire_groupe_gestionnaire/fr.yml @@ -0,0 +1,5 @@ +fr: + activerecord: + attributes: + commentaire_groupe_gestionnaire: + body: 'Votre message' diff --git a/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/en.yml b/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/en.yml new file mode 100644 index 000000000..fe7f97818 --- /dev/null +++ b/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/en.yml @@ -0,0 +1,7 @@ +en: + gestionnaires: + groupe_gestionnaire_commentaires: + destroy: + notice: Your message had been deleted + alert_acl: "Can not destroy message: it does not belong to you" + alert_already_discarded: "Can not destroy message: it was already destroyed" diff --git a/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/fr.yml b/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/fr.yml new file mode 100644 index 000000000..cbe157b0e --- /dev/null +++ b/config/locales/views/gestionnaires/groupe_gestionnaire_commentaires/fr.yml @@ -0,0 +1,7 @@ +fr: + gestionnaires: + groupe_gestionnaire_commentaires: + destroy: + notice: Votre message a été supprimé + alert_acl: Impossible de supprimer le message, celui-ci ne vous appartient pas + alert_already_discarded: Ce message a déjà été supprimé diff --git a/config/routes.rb b/config/routes.rb index 0b5906c7d..9e2be2ff9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -515,6 +515,7 @@ Rails.application.routes.draw do delete :remove, on: :member end resources :children, controller: 'groupe_gestionnaire_children', only: [:index, :create, :destroy] + resources :commentaires, controller: 'groupe_gestionnaire_commentaires', only: [:index, :show, :create, :destroy] end end end diff --git a/db/migrate/20231025134902_add_emails_to_commentaire_groupe_gestionnaires.rb b/db/migrate/20231025134902_add_emails_to_commentaire_groupe_gestionnaires.rb new file mode 100644 index 000000000..f89073dc9 --- /dev/null +++ b/db/migrate/20231025134902_add_emails_to_commentaire_groupe_gestionnaires.rb @@ -0,0 +1,7 @@ +class AddEmailsToCommentaireGroupeGestionnaires < ActiveRecord::Migration[6.1] + def change + # in case sender or gestionnaire would have been deleted + add_column :commentaire_groupe_gestionnaires, :sender_email, :string + add_column :commentaire_groupe_gestionnaires, :gestionnaire_email, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 87a077727..948530382 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -265,8 +265,10 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_10_113623) do t.string "body" t.datetime "created_at", precision: 6, null: false t.datetime "discarded_at", precision: 6 + t.string "gestionnaire_email" t.bigint "gestionnaire_id" t.bigint "groupe_gestionnaire_id" + t.string "sender_email" t.bigint "sender_id", null: false t.string "sender_type", null: false t.datetime "updated_at", precision: 6, null: false diff --git a/spec/controllers/administrateurs/groupe_gestionnaire_controller_spec.rb b/spec/controllers/administrateurs/groupe_gestionnaire_controller_spec.rb index edb4839af..c24b8b95c 100644 --- a/spec/controllers/administrateurs/groupe_gestionnaire_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_gestionnaire_controller_spec.rb @@ -90,7 +90,7 @@ describe Administrateurs::GroupeGestionnaireController, type: :controller do subject { post :create_commentaire, params: { - commentaire: { + commentaire_groupe_gestionnaire: { body: body } } diff --git a/spec/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller_spec.rb b/spec/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller_spec.rb new file mode 100644 index 000000000..54b00c08f --- /dev/null +++ b/spec/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller_spec.rb @@ -0,0 +1,110 @@ +describe Gestionnaires::GroupeGestionnaireCommentairesController, type: :controller do + let(:gestionnaire) { create(:gestionnaire).tap { _1.user.update(last_sign_in_at: Time.zone.now) } } + let(:administrateur) { create(:administrateur) } + let(:groupe_gestionnaire) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire], administrateurs: [administrateur]) } + let!(:commentaire) { create(:commentaire_groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire, sender: administrateur) } + + describe "yyyy#index" do + render_views + subject { get :index, params: { groupe_gestionnaire_id: groupe_gestionnaire.id } } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it do + expect(response).to have_http_status(:ok) + expect(assigns(:groupe_gestionnaire).commentaire_groupe_gestionnaires.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC")).to include(commentaire) + expect(response.body).to include(commentaire.sender_email) + end + end + end + + describe "yyyy#show" do + render_views + subject { get :show, params: { groupe_gestionnaire_id: groupe_gestionnaire.id, id: commentaire.id } } + + context "when not logged" do + before { subject } + it { expect(response).to redirect_to(new_user_session_path) } + end + + context "when logged in" do + before do + sign_in(gestionnaire.user) + subject + end + + it do + expect(response).to have_http_status(:ok) + expect(assigns(:groupe_gestionnaire).commentaire_groupe_gestionnaires.where(sender: administrateur)).to include(commentaire) + expect(response.body).to include(commentaire.body) + end + end + end + + describe "yyyy#create" do + before do + sign_in(gestionnaire.user) + post :create, + params: { + id: commentaire.id, + groupe_gestionnaire_id: groupe_gestionnaire.id, + commentaire_groupe_gestionnaire: { body: "avant\napres" } + } + end + + context 'of a new commentaire' do + it do + expect(groupe_gestionnaire.reload.commentaire_groupe_gestionnaires.map(&:body)).to include("avant\napres") + expect(flash.notice).to eq("Message envoyé") + end + end + end + + describe "yyyy#destroy" do + before do + sign_in(gestionnaire.user) + end + + def remove_commentaire(commentaire) + delete :destroy, + params: { + groupe_gestionnaire_id: groupe_gestionnaire.id, + id: commentaire_to_delete.id + }, + format: :turbo_stream + end + + context 'when the commentaire was created by the gestionnaire' do + let(:commentaire_to_delete) { create(:commentaire_groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire, gestionnaire: gestionnaire, sender: administrateur) } + + before { remove_commentaire(commentaire_to_delete) } + + it do + expect(groupe_gestionnaire.reload.commentaire_groupe_gestionnaires.count).to eq(2) + expect(commentaire_to_delete.reload.discarded?).to eq(true) + expect(flash.notice).to eq("Votre message a été supprimé") + end + end + + context 'when the commentaire was not created by the gestionnaire' do + let(:commentaire_to_delete) { commentaire } + + before { remove_commentaire(commentaire_to_delete) } + + it do + expect(groupe_gestionnaire.reload.commentaire_groupe_gestionnaires.count).to eq(1) + expect(commentaire_to_delete.reload.discarded?).to eq(false) + expect(flash.alert).to eq("Impossible de supprimer le message, celui-ci ne vous appartient pas") + end + end + end +end diff --git a/spec/models/commentaire_groupe_gestionnaire_spec.rb b/spec/models/commentaire_groupe_gestionnaire_spec.rb index 58eec17ee..5379018ea 100644 --- a/spec/models/commentaire_groupe_gestionnaire_spec.rb +++ b/spec/models/commentaire_groupe_gestionnaire_spec.rb @@ -5,6 +5,29 @@ describe CommentaireGroupeGestionnaire, type: :model do it { is_expected.to belong_to(:sender) } end + describe "#create" do + let(:commentaire_groupe_gestionnaire) { create :commentaire_groupe_gestionnaire, sender: sender, gestionnaire: gestionnaire } + + context 'when created by an administrateur' do + let(:sender) { create(:administrateur) } + let(:gestionnaire) { nil } + it 'set correctly sender_email and gestionnaire_email' do + expect(commentaire_groupe_gestionnaire.sender_email).to eq(sender.email) + expect(commentaire_groupe_gestionnaire.gestionnaire_email).to eq(nil) + end + end + + context 'when answer by a gestionnaire' do + let(:sender) { create(:administrateur) } + let(:gestionnaire) { create(:gestionnaire) } + + it 'set correctly sender_email and gestionnaire_email' do + expect(commentaire_groupe_gestionnaire.sender_email).to eq(sender.email) + expect(commentaire_groupe_gestionnaire.gestionnaire_email).to eq(gestionnaire.email) + end + end + end + describe "#soft_deletable?" do subject { commentaire_groupe_gestionnaire.soft_deletable?(user) } From 0bb189d0271acc95128c95f74fe606d28726242d Mon Sep 17 00:00:00 2001 From: seb-by-ouidou Date: Thu, 26 Oct 2023 09:03:53 +0000 Subject: [PATCH 7/7] feat: replace fail by flast alert --- .../gestionnaires/groupe_gestionnaires_controller.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/gestionnaires/groupe_gestionnaires_controller.rb b/app/controllers/gestionnaires/groupe_gestionnaires_controller.rb index 17272ce81..cce7a147e 100644 --- a/app/controllers/gestionnaires/groupe_gestionnaires_controller.rb +++ b/app/controllers/gestionnaires/groupe_gestionnaires_controller.rb @@ -26,12 +26,12 @@ module Gestionnaires def destroy if !@groupe_gestionnaire.can_be_deleted?(current_gestionnaire) - fail "Impossible de supprimer ce groupe.." + flash[:alert] = "Impossible de supprimer ce groupe.." + else + @groupe_gestionnaire.destroy + + flash[:notice] = "Le groupe #{@groupe_gestionnaire.id} est supprimé" end - @groupe_gestionnaire.destroy - - flash[:notice] = "Le groupe #{@groupe_gestionnaire.id} est supprimé" - redirect_to gestionnaire_groupe_gestionnaires_path end