From fdf54f298b07a6abc40e62634fc20340b8e19efd Mon Sep 17 00:00:00 2001
From: pabois <pierreandre.boissinot@noesya.coop>
Date: Mon, 16 May 2022 18:09:02 +0200
Subject: [PATCH] =?UTF-8?q?alumni=20redescendu=20d'un=20niveau=20pour=20g?=
 =?UTF-8?q?=C3=A9rer=20correctement=20le=20highlight=20du=20menu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../{people => }/alumni/imports_controller.rb |  8 ++++----
 .../{people => }/alumni_controller.rb         | 10 ++++++----
 .../university/person/with_education.rb       | 13 ++++++++++++
 .../admin/university/{people => }/alumni.rb   |  6 +++---
 .../alumni/_cohort_fields.html.erb            |  0
 .../{people => }/alumni/_list.html.erb        |  2 +-
 .../{people => }/alumni/edit_cohorts.html.erb |  4 ++--
 .../alumni/imports/index.html.erb             |  4 ++--
 .../{people => }/alumni/imports/new.html.erb  |  2 +-
 .../{people => }/alumni/imports/show.html.erb |  0
 .../{people => }/alumni/index.html.erb        |  6 +++---
 .../{people => }/alumni/new.html.erb          |  0
 .../{people => }/alumni/show.html.erb         |  2 +-
 config/admin_navigation.rb                    |  8 ++++----
 config/routes/admin/university.rb             | 20 +++++++++----------
 15 files changed, 49 insertions(+), 36 deletions(-)
 rename app/controllers/admin/university/{people => }/alumni/imports_controller.rb (79%)
 rename app/controllers/admin/university/{people => }/alumni_controller.rb (76%)
 rename app/services/filters/admin/university/{people => }/alumni.rb (81%)
 rename app/views/admin/university/{people => }/alumni/_cohort_fields.html.erb (100%)
 rename app/views/admin/university/{people => }/alumni/_list.html.erb (87%)
 rename app/views/admin/university/{people => }/alumni/edit_cohorts.html.erb (87%)
 rename app/views/admin/university/{people => }/alumni/imports/index.html.erb (77%)
 rename app/views/admin/university/{people => }/alumni/imports/new.html.erb (97%)
 rename app/views/admin/university/{people => }/alumni/imports/show.html.erb (100%)
 rename app/views/admin/university/{people => }/alumni/index.html.erb (67%)
 rename app/views/admin/university/{people => }/alumni/new.html.erb (100%)
 rename app/views/admin/university/{people => }/alumni/show.html.erb (88%)

diff --git a/app/controllers/admin/university/people/alumni/imports_controller.rb b/app/controllers/admin/university/alumni/imports_controller.rb
similarity index 79%
rename from app/controllers/admin/university/people/alumni/imports_controller.rb
rename to app/controllers/admin/university/alumni/imports_controller.rb
index 66b44d749..6de670ed8 100644
--- a/app/controllers/admin/university/people/alumni/imports_controller.rb
+++ b/app/controllers/admin/university/alumni/imports_controller.rb
@@ -1,4 +1,4 @@
-class Admin::University::People::Alumni::ImportsController < Admin::University::ApplicationController
+class Admin::University::Alumni::ImportsController < Admin::University::ApplicationController
   load_and_authorize_resource class: University::Person::Alumnus::Import,
                               through: :current_university,
                               through_association: :person_alumnus_imports
@@ -30,11 +30,11 @@ class Admin::University::People::Alumni::ImportsController < Admin::University::
   def breadcrumb
     super
     add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
-                    admin_university_people_alumni_path
+                    admin_university_alumni_path
     add_breadcrumb  University::Person::Alumnus::Import.model_name.human(count: 2),
-                    admin_university_people_alumni_imports_path
+                    admin_university_alumni_imports_path
     return unless @import
-    @import.persisted?  ? add_breadcrumb(@import, admin_university_people_alumni_import_path(@import))
+    @import.persisted?  ? add_breadcrumb(@import, admin_university_alumni_import_path(@import))
                         : add_breadcrumb(t('create'))
   end
 
diff --git a/app/controllers/admin/university/people/alumni_controller.rb b/app/controllers/admin/university/alumni_controller.rb
similarity index 76%
rename from app/controllers/admin/university/people/alumni_controller.rb
rename to app/controllers/admin/university/alumni_controller.rb
index 5a06332f2..ae1f4a38b 100644
--- a/app/controllers/admin/university/people/alumni_controller.rb
+++ b/app/controllers/admin/university/alumni_controller.rb
@@ -1,9 +1,11 @@
-class Admin::University::People::AlumniController < Admin::University::ApplicationController
+class Admin::University::AlumniController < Admin::University::ApplicationController
   load_and_authorize_resource class: University::Person::Alumnus,
                               through: :current_university,
                               through_association: :people
 
   has_scope :for_search_term
+  has_scope :for_alumni_program
+  has_scope :for_alumni_year
 
   def index
     @alumni = apply_scopes(@alumni).alumni
@@ -25,7 +27,7 @@ class Admin::University::People::AlumniController < Admin::University::Applicati
 
   def update_cohorts
     if @alumnus.update(alumnus_params)
-      redirect_to admin_university_people_alumnus_path(@alumnus),
+      redirect_to admin_university_alumnus_path(@alumnus),
                   notice: t('admin.successfully_updated_html', model: @alumnus.to_s)
     else
       render :edit_cohorts
@@ -39,8 +41,8 @@ class Admin::University::People::AlumniController < Admin::University::Applicati
   def breadcrumb
     super
     add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
-                    admin_university_people_alumni_path
-    add_breadcrumb @alumnus, admin_university_people_alumni_path(@alumnus) if @alumnus
+                    admin_university_alumni_path
+    add_breadcrumb @alumnus, admin_university_alumni_path(@alumnus) if @alumnus
   end
 
   def alumnus_params
diff --git a/app/models/university/person/with_education.rb b/app/models/university/person/with_education.rb
index 3c36e95e9..978a9ed23 100644
--- a/app/models/university/person/with_education.rb
+++ b/app/models/university/person/with_education.rb
@@ -38,6 +38,19 @@ module University::Person::WithEducation
                             class_name: 'Education::Program',
                             foreign_key: 'university_person_id',
                             association_foreign_key: 'education_program_id'
+
+    scope :for_alumni_program, -> (program_id) {
+      left_joins(:cohorts)
+        .where(education_cohorts: { program_id: program_id })
+        .select("university_people.*")
+        .distinct
+    }
+    scope :for_alumni_year, -> (academic_year_id) {
+      left_joins(:cohorts)
+        .where(education_cohorts: { academic_year_id: academic_year_id })
+        .select("university_people.*")
+        .distinct
+    }
   end
 
   def add_to_cohort(cohort)
diff --git a/app/services/filters/admin/university/people/alumni.rb b/app/services/filters/admin/university/alumni.rb
similarity index 81%
rename from app/services/filters/admin/university/people/alumni.rb
rename to app/services/filters/admin/university/alumni.rb
index 6495bda45..ad0f53c25 100644
--- a/app/services/filters/admin/university/people/alumni.rb
+++ b/app/services/filters/admin/university/alumni.rb
@@ -1,9 +1,9 @@
 module Filters
-  class Admin::University::People::Alumni < Filters::Base
+  class Admin::University::Alumni < Filters::Base
     def initialize(user)
       super
       add_search
-      add :for_program,
+      add :for_alumni_program,
           user.university.education_programs,
           I18n.t(
             'filters.attributes.element',
@@ -11,7 +11,7 @@ module Filters
           ),
           false,
           true
-      add :for_academic_year,
+      add :for_alumni_year,
           user.university.academic_years.ordered,
           I18n.t(
             'filters.attributes.element',
diff --git a/app/views/admin/university/people/alumni/_cohort_fields.html.erb b/app/views/admin/university/alumni/_cohort_fields.html.erb
similarity index 100%
rename from app/views/admin/university/people/alumni/_cohort_fields.html.erb
rename to app/views/admin/university/alumni/_cohort_fields.html.erb
diff --git a/app/views/admin/university/people/alumni/_list.html.erb b/app/views/admin/university/alumni/_list.html.erb
similarity index 87%
rename from app/views/admin/university/people/alumni/_list.html.erb
rename to app/views/admin/university/alumni/_list.html.erb
index 00f837195..e86763434 100644
--- a/app/views/admin/university/people/alumni/_list.html.erb
+++ b/app/views/admin/university/alumni/_list.html.erb
@@ -7,7 +7,7 @@
   </thead>
   <tbody>
     <% alumni.each do |alumnus| %>
-      <% path = admin_university_people_alumnus_path(alumnus) %>
+      <% path = admin_university_alumnus_path(alumnus) %>
       <tr>
         <td><%= link_to alumnus.last_name, path %></td>
         <td><%= link_to alumnus.first_name, path %></td>
diff --git a/app/views/admin/university/people/alumni/edit_cohorts.html.erb b/app/views/admin/university/alumni/edit_cohorts.html.erb
similarity index 87%
rename from app/views/admin/university/people/alumni/edit_cohorts.html.erb
rename to app/views/admin/university/alumni/edit_cohorts.html.erb
index 2bc79d96d..ea332608a 100644
--- a/app/views/admin/university/people/alumni/edit_cohorts.html.erb
+++ b/app/views/admin/university/alumni/edit_cohorts.html.erb
@@ -2,7 +2,7 @@
 
 <h2 class="h3"><%= Education::Program.model_name.human(count: 2) %></h2>
 
-<%= simple_form_for [:admin, @alumnus], url: edit_cohorts_admin_university_people_alumnus_path(@alumnus) do |f| %>
+<%= simple_form_for [:admin, @alumnus], url: edit_cohorts_admin_university_alumnus_path(@alumnus) do |f| %>
   <%= f.error_notification %>
   <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
 
@@ -21,7 +21,7 @@
     <div class="col-md-10">
       <div id="cohorts">
         <%= f.simple_fields_for :cohorts, @alumnus.cohorts.sort_by { |c| [c.year ? 0 : 1, c.year] }.reverse, include_id: false do |cohort_f| %>
-          <%= render 'admin/university/people/alumni/cohort_fields', f: cohort_f, include_id: true %>
+          <%= render 'admin/university/alumni/cohort_fields', f: cohort_f, include_id: true %>
         <% end %>
       </div>
     </div>
diff --git a/app/views/admin/university/people/alumni/imports/index.html.erb b/app/views/admin/university/alumni/imports/index.html.erb
similarity index 77%
rename from app/views/admin/university/people/alumni/imports/index.html.erb
rename to app/views/admin/university/alumni/imports/index.html.erb
index a376df884..e48aa45f4 100644
--- a/app/views/admin/university/people/alumni/imports/index.html.erb
+++ b/app/views/admin/university/alumni/imports/index.html.erb
@@ -9,7 +9,7 @@
   <tbody>
     <% @imports.each do |import| %>
       <tr>
-        <td><%= link_to import, admin_university_people_alumni_import_path(import) %></td>
+        <td><%= link_to import, admin_university_alumni_import_path(import) %></td>
       </tr>
     <% end %>
   </tbody>
@@ -18,6 +18,6 @@
 <% content_for :action_bar_right do %>
   <%= link_to_if  can?(:create, University::Person::Alumnus::Import),
                   t('create'),
-                  new_admin_university_people_alumni_import_path,
+                  new_admin_university_alumni_import_path,
                   class: button_classes %>
 <% end %>
diff --git a/app/views/admin/university/people/alumni/imports/new.html.erb b/app/views/admin/university/alumni/imports/new.html.erb
similarity index 97%
rename from app/views/admin/university/people/alumni/imports/new.html.erb
rename to app/views/admin/university/alumni/imports/new.html.erb
index 0749b75c5..84e9abb84 100644
--- a/app/views/admin/university/people/alumni/imports/new.html.erb
+++ b/app/views/admin/university/alumni/imports/new.html.erb
@@ -11,7 +11,7 @@
       Les valeurs pour gender peuvent être m (masculin), f (féminin) et n (non binaire).
     </p>
     <%= simple_form_for @import,
-                        url: admin_university_people_alumni_imports_path do |f| %>
+                        url: admin_university_alumni_imports_path do |f| %>
       <%= f.error_notification %>
       <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
 
diff --git a/app/views/admin/university/people/alumni/imports/show.html.erb b/app/views/admin/university/alumni/imports/show.html.erb
similarity index 100%
rename from app/views/admin/university/people/alumni/imports/show.html.erb
rename to app/views/admin/university/alumni/imports/show.html.erb
diff --git a/app/views/admin/university/people/alumni/index.html.erb b/app/views/admin/university/alumni/index.html.erb
similarity index 67%
rename from app/views/admin/university/people/alumni/index.html.erb
rename to app/views/admin/university/alumni/index.html.erb
index dc53377d8..6db0169c7 100644
--- a/app/views/admin/university/people/alumni/index.html.erb
+++ b/app/views/admin/university/alumni/index.html.erb
@@ -1,14 +1,14 @@
 <% content_for :title, "#{University::Person::Alumnus.model_name.human(count: 2)} (#{@alumni.total_count})" %>
 
-<%= render 'filters', current_path: admin_university_people_alumni_path, filters: @filters if @filters.any?  %>
+<%= render 'filters', current_path: admin_university_alumni_path, filters: @filters if @filters.any?  %>
 
-<%= render 'admin/university/people/alumni/list', alumni: @alumni %>
+<%= render 'admin/university/alumni/list', alumni: @alumni %>
 
 <%= paginate @alumni, theme: 'bootstrap-5' %>
 
 <% content_for :action_bar_left do %>
   <%= link_to t('import'),
-              new_admin_university_people_alumni_import_path,
+              new_admin_university_alumni_import_path,
               class: button_classes if can? :manage, University::Person::Alumnus::Import %>
 <% end %>
 
diff --git a/app/views/admin/university/people/alumni/new.html.erb b/app/views/admin/university/alumni/new.html.erb
similarity index 100%
rename from app/views/admin/university/people/alumni/new.html.erb
rename to app/views/admin/university/alumni/new.html.erb
diff --git a/app/views/admin/university/people/alumni/show.html.erb b/app/views/admin/university/alumni/show.html.erb
similarity index 88%
rename from app/views/admin/university/people/alumni/show.html.erb
rename to app/views/admin/university/alumni/show.html.erb
index ca7335644..c122295e9 100644
--- a/app/views/admin/university/people/alumni/show.html.erb
+++ b/app/views/admin/university/alumni/show.html.erb
@@ -20,5 +20,5 @@
 
 <% content_for :action_bar_right do %>
   <%= edit_link @alumnus %>
-  <%= link_to t('university.manage_cohorts'), edit_cohorts_admin_university_people_alumnus_path(@alumnus), class: button_classes if can?(:update, @alumnus) %>
+  <%= link_to t('university.manage_cohorts'), edit_cohorts_admin_university_alumnus_path(@alumnus), class: button_classes if can?(:update, @alumnus) %>
 <% end %>
diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb
index f0f93fb02..a319d52b1 100644
--- a/config/admin_navigation.rb
+++ b/config/admin_navigation.rb
@@ -6,11 +6,11 @@ SimpleNavigation::Configuration.run do |navigation|
   navigation.items do |primary|
     primary.item :dashboard, t('admin.dashboard'), admin_root_path, { icon: 'tachometer-alt', highlights_on: /admin$/ }
 
-    if can?(:read, User) || can?(:read, University::Person) || can?(:read, University::Organization)
+    if can?(:read, University::Person) || can?(:read, University::Organization)
       primary.item :university, University.model_name.human, nil, { kind: :header }
-      primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' }
-      primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' }
-      primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_people_alumni_path, { icon: 'users' }
+      primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' } if can?(:read, University::Person)
+      primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' } if can?(:read, University::Organization)
+      primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_alumni_path, { icon: 'users' } if can?(:read, University::Person)
     end
 
     if can?(:read, Education::Program)
diff --git a/config/routes/admin/university.rb b/config/routes/admin/university.rb
index 5106085dc..8b8d2a3b5 100644
--- a/config/routes/admin/university.rb
+++ b/config/routes/admin/university.rb
@@ -3,17 +3,15 @@ namespace :university do
   namespace :organizations do
     resources :imports, only: [:index, :show, :new, :create]
   end
-  namespace :people do
-    namespace :alumni do
-      resources :imports, only: [:index, :show, :new, :create]
-    end
-    resources :alumni, only: [:index, :show] do
-      member do
-        get 'edit_cohorts' => 'alumni#edit_cohorts'
-        patch 'edit_cohorts' => 'alumni#update_cohorts'
-        get 'edit_experience' => 'alumni#edit_experiences'
-        patch 'edit_experiences' => 'alumni#update_experiences'
-      end
+  namespace :alumni do
+    resources :imports, only: [:index, :show, :new, :create]
+  end
+  resources :alumni, only: [:index, :show] do
+    member do
+      get 'edit_cohorts' => 'alumni#edit_cohorts'
+      patch 'edit_cohorts' => 'alumni#update_cohorts'
+      get 'edit_experience' => 'alumni#edit_experiences'
+      patch 'edit_experiences' => 'alumni#update_experiences'
     end
   end
   resources :people, :organizations
-- 
GitLab