From 1a0877f51dbfd2f9cb903f754ab5998f52967d7c Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Sun, 24 Aug 2025 22:25:12 +0200 Subject: [PATCH] refactor: update data fetching in management pages and improve type imports - Simplified data extraction from AdminService in SkillsPage, TeamsPage, and UsersPage. - Updated import paths for Team type in user-related components for consistency. - Added id and name properties to SkillCategory interface for better data structure. - Enhanced logging in useSkillsManagement for debugging skill creation process. --- app/admin/manage/skills/page.tsx | 7 ++----- app/admin/manage/teams/page.tsx | 9 +++++---- app/admin/manage/users/page.tsx | 4 ++-- app/api/admin/skills/route.ts | 4 ++-- components/admin/users/user-form-dialog.tsx | 2 +- components/admin/users/users-management-page.tsx | 2 +- hooks/use-skills-management.ts | 2 ++ hooks/use-users-management.ts | 2 +- lib/evaluation-utils.ts | 3 --- lib/types.ts | 2 ++ 10 files changed, 18 insertions(+), 19 deletions(-) diff --git a/app/admin/manage/skills/page.tsx b/app/admin/manage/skills/page.tsx index 1b40676..281d69a 100644 --- a/app/admin/manage/skills/page.tsx +++ b/app/admin/manage/skills/page.tsx @@ -4,13 +4,10 @@ import { SkillsManagementPage } from "@/components/admin/skills"; export default async function SkillsPage() { // Charger les données côté serveur try { - const adminData = await AdminService.getAdminData(); + const { skillCategories, teams } = await AdminService.getAdminData(); return ( - + ); } catch (error) { console.error("Failed to load admin data:", error); diff --git a/app/admin/manage/teams/page.tsx b/app/admin/manage/teams/page.tsx index 831a471..3b7cff8 100644 --- a/app/admin/manage/teams/page.tsx +++ b/app/admin/manage/teams/page.tsx @@ -4,13 +4,14 @@ import { TeamsManagementPage } from "@/components/admin/teams"; export default async function TeamsPage() { // Charger les données côté serveur try { - const adminData = await AdminService.getAdminData(); + const { teams, teamStats, skillCategories } = + await AdminService.getAdminData(); return ( ); } catch (error) { diff --git a/app/admin/manage/users/page.tsx b/app/admin/manage/users/page.tsx index fbb0020..3a0b931 100644 --- a/app/admin/manage/users/page.tsx +++ b/app/admin/manage/users/page.tsx @@ -4,9 +4,9 @@ import { UsersManagementPage } from "@/components/admin/users"; export default async function UsersPage() { // Charger les données côté serveur try { - const adminData = await AdminService.getAdminData(); + const { teams } = await AdminService.getAdminData(); - return ; + return ; } catch (error) { console.error("Failed to load admin data:", error); return ( diff --git a/app/api/admin/skills/route.ts b/app/api/admin/skills/route.ts index d530908..663bb55 100644 --- a/app/api/admin/skills/route.ts +++ b/app/api/admin/skills/route.ts @@ -75,8 +75,8 @@ export async function POST(request: NextRequest) { // Créer la nouvelle skill const result = await pool.query( - `INSERT INTO skills (name, category_id, description, icon) - VALUES ($1, $2, $3, $4) + `INSERT INTO skills (id, name, category_id, description, icon) + VALUES (gen_random_uuid(), $1, $2, $3, $4) RETURNING id, name, description, icon, category_id`, [name, categoryId, description || "", icon || ""] ); diff --git a/components/admin/users/user-form-dialog.tsx b/components/admin/users/user-form-dialog.tsx index 6d48f65..7669555 100644 --- a/components/admin/users/user-form-dialog.tsx +++ b/components/admin/users/user-form-dialog.tsx @@ -16,7 +16,7 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; -import { Team } from "@/clients/domains/admin-client"; +import { Team } from "@/lib/types"; interface UserFormData { firstName: string; diff --git a/components/admin/users/users-management-page.tsx b/components/admin/users/users-management-page.tsx index ba58743..41c4b16 100644 --- a/components/admin/users/users-management-page.tsx +++ b/components/admin/users/users-management-page.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { Users, Building2 } from "lucide-react"; import { Button } from "@/components/ui/button"; -import { Team } from "@/clients/domains/admin-client"; +import { Team } from "@/lib/types"; import { TreeViewPage } from "../management/tree-view-page"; import { useTreeView } from "@/hooks/use-tree-view"; import { useFormDialog } from "@/hooks/use-form-dialog"; diff --git a/hooks/use-skills-management.ts b/hooks/use-skills-management.ts index 2821394..51f56e2 100644 --- a/hooks/use-skills-management.ts +++ b/hooks/use-skills-management.ts @@ -53,6 +53,7 @@ export function useSkillsManagement(skillCategories: SkillCategory[]) { }; const handleCreateSkill = async () => { + console.log("skillFormData", skillFormData); if (!skillFormData.name || !skillFormData.categoryId) { toast({ title: "Erreur", @@ -70,6 +71,7 @@ export function useSkillsManagement(skillCategories: SkillCategory[]) { const skillData = { ...skillFormData, category: category.category, + categoryId: category.id, }; const newSkill = await adminClient.createSkill(skillData); diff --git a/hooks/use-users-management.ts b/hooks/use-users-management.ts index b7fc7d4..014fbd0 100644 --- a/hooks/use-users-management.ts +++ b/hooks/use-users-management.ts @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { useToast } from "@/hooks/use-toast"; -import { Team } from "@/clients/domains/admin-client"; +import { Team } from "@/lib/types"; interface User { uuid: string; diff --git a/lib/evaluation-utils.ts b/lib/evaluation-utils.ts index accd733..549ed76 100644 --- a/lib/evaluation-utils.ts +++ b/lib/evaluation-utils.ts @@ -1,12 +1,9 @@ import { - SkillLevel, SKILL_LEVEL_VALUES, CategoryEvaluation, RadarChartData, - UserEvaluation, SkillCategory, } from "./types"; -import { evaluationClient } from "../clients"; export function calculateCategoryScore( categoryEvaluation: CategoryEvaluation diff --git a/lib/types.ts b/lib/types.ts index afe15d4..ddd183b 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -30,6 +30,8 @@ export interface Skill { export interface SkillCategory { category: string; icon: string; + id: string; + name: string; skills: Skill[]; }