From ef243e2a06cbe034a9a563294a89fe7ce1eda146 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Wed, 29 Nov 2023 18:21:50 +0000 Subject: [PATCH] feat(manager): add expert view --- app/controllers/manager/experts_controller.rb | 4 ++ app/dashboards/expert_dashboard.rb | 42 +++++++++++++++++++ .../manager/application/_user_meta.html.erb | 19 +++++++-- config/routes.rb | 2 + 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 app/controllers/manager/experts_controller.rb create mode 100644 app/dashboards/expert_dashboard.rb diff --git a/app/controllers/manager/experts_controller.rb b/app/controllers/manager/experts_controller.rb new file mode 100644 index 000000000..2125aabc1 --- /dev/null +++ b/app/controllers/manager/experts_controller.rb @@ -0,0 +1,4 @@ +module Manager + class ExpertsController < Manager::ApplicationController + end +end diff --git a/app/dashboards/expert_dashboard.rb b/app/dashboards/expert_dashboard.rb new file mode 100644 index 000000000..7835ff9a1 --- /dev/null +++ b/app/dashboards/expert_dashboard.rb @@ -0,0 +1,42 @@ +require "administrate/base_dashboard" + +class ExpertDashboard < Administrate::BaseDashboard + # ATTRIBUTE_TYPES + # a hash that describes the type of each of the model's fields. + # + # Each different type represents an Administrate::Field object, + # which determines how the attribute is displayed + # on pages throughout the dashboard. + ATTRIBUTE_TYPES = { + id: Field::Number, + user: Field::HasOne.with_options(searchable: true, searchable_field: 'email'), + created_at: Field::DateTime, + updated_at: Field::DateTime + }.freeze + + # COLLECTION_ATTRIBUTES + # an array of attributes that will be displayed on the model's index page. + # + # By default, it's limited to four items to reduce clutter on index pages. + # Feel free to add, remove, or rearrange items. + COLLECTION_ATTRIBUTES = [ + :id, + :user, + :created_at + ].freeze + + # SHOW_PAGE_ATTRIBUTES + # an array of attributes that will be displayed on the model's show page. + SHOW_PAGE_ATTRIBUTES = [ + :id, + :user, + :created_at + ].freeze + + # Overwrite this method to customize how users are displayed + # across all pages of the admin dashboard. + # + def display_resource(expert) + expert.email + end +end diff --git a/app/views/manager/application/_user_meta.html.erb b/app/views/manager/application/_user_meta.html.erb index 9de135947..6654b1068 100644 --- a/app/views/manager/application/_user_meta.html.erb +++ b/app/views/manager/application/_user_meta.html.erb @@ -21,7 +21,7 @@ Instructeur
- <% if user.instructeur.present? %> + <% if user.instructeur? %> <%= link_to('Voir son compte instructeur', manager_instructeur_path(user.instructeur)) %> <% else %> Pas instructeur ! @@ -29,12 +29,25 @@
+
+
+ Expert +
+
+ <% if user.expert? %> + <%= link_to('Voir son compte expert', manager_expert_path(user.expert)) %> + <% else %> + Pas expert ! + <% end %> +
+
+
Administrateur
- <% if user.administrateur.present? %> + <% if user.administrateur? %> <%= link_to('Voir son compte administrateur', manager_administrateur_path(user.administrateur)) %> <% else %> Pas administrateur ! @@ -47,7 +60,7 @@ Gestionnaire
- <% if user.gestionnaire.present? %> + <% if user.gestionnaire? %> <%= link_to('Voir son compte gestionnaire', manager_gestionnaire_path(user.gestionnaire)) %> <% else %> Pas gestionnaire ! diff --git a/config/routes.rb b/config/routes.rb index d244d5ade..a63ce70f1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -53,6 +53,8 @@ Rails.application.routes.draw do put 'unblock_email' end + resources :experts, only: [:index, :show] + resources :instructeurs, only: [:index, :show, :edit, :update] do post 'reinvite', on: :member delete 'delete', on: :member