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.
This commit is contained in:
Julien Froidefond
2025-08-24 22:25:12 +02:00
parent 6fba622003
commit 1a0877f51d
10 changed files with 18 additions and 19 deletions

View File

@@ -4,13 +4,10 @@ import { SkillsManagementPage } from "@/components/admin/skills";
export default async function SkillsPage() { export default async function SkillsPage() {
// Charger les données côté serveur // Charger les données côté serveur
try { try {
const adminData = await AdminService.getAdminData(); const { skillCategories, teams } = await AdminService.getAdminData();
return ( return (
<SkillsManagementPage <SkillsManagementPage skillCategories={skillCategories} teams={teams} />
skillCategories={adminData.skillCategories}
teams={adminData.teams}
/>
); );
} catch (error) { } catch (error) {
console.error("Failed to load admin data:", error); console.error("Failed to load admin data:", error);

View File

@@ -4,13 +4,14 @@ import { TeamsManagementPage } from "@/components/admin/teams";
export default async function TeamsPage() { export default async function TeamsPage() {
// Charger les données côté serveur // Charger les données côté serveur
try { try {
const adminData = await AdminService.getAdminData(); const { teams, teamStats, skillCategories } =
await AdminService.getAdminData();
return ( return (
<TeamsManagementPage <TeamsManagementPage
teams={adminData.teams} teams={teams}
teamStats={adminData.teamStats} teamStats={teamStats}
skillCategories={adminData.skillCategories} skillCategories={skillCategories}
/> />
); );
} catch (error) { } catch (error) {

View File

@@ -4,9 +4,9 @@ import { UsersManagementPage } from "@/components/admin/users";
export default async function UsersPage() { export default async function UsersPage() {
// Charger les données côté serveur // Charger les données côté serveur
try { try {
const adminData = await AdminService.getAdminData(); const { teams } = await AdminService.getAdminData();
return <UsersManagementPage teams={adminData.teams} />; return <UsersManagementPage teams={teams} />;
} catch (error) { } catch (error) {
console.error("Failed to load admin data:", error); console.error("Failed to load admin data:", error);
return ( return (

View File

@@ -75,8 +75,8 @@ export async function POST(request: NextRequest) {
// Créer la nouvelle skill // Créer la nouvelle skill
const result = await pool.query( const result = await pool.query(
`INSERT INTO skills (name, category_id, description, icon) `INSERT INTO skills (id, name, category_id, description, icon)
VALUES ($1, $2, $3, $4) VALUES (gen_random_uuid(), $1, $2, $3, $4)
RETURNING id, name, description, icon, category_id`, RETURNING id, name, description, icon, category_id`,
[name, categoryId, description || "", icon || ""] [name, categoryId, description || "", icon || ""]
); );

View File

@@ -16,7 +16,7 @@ import {
DialogHeader, DialogHeader,
DialogTitle, DialogTitle,
} from "@/components/ui/dialog"; } from "@/components/ui/dialog";
import { Team } from "@/clients/domains/admin-client"; import { Team } from "@/lib/types";
interface UserFormData { interface UserFormData {
firstName: string; firstName: string;

View File

@@ -3,7 +3,7 @@
import { useState } from "react"; import { useState } from "react";
import { Users, Building2 } from "lucide-react"; import { Users, Building2 } from "lucide-react";
import { Button } from "@/components/ui/button"; 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 { TreeViewPage } from "../management/tree-view-page";
import { useTreeView } from "@/hooks/use-tree-view"; import { useTreeView } from "@/hooks/use-tree-view";
import { useFormDialog } from "@/hooks/use-form-dialog"; import { useFormDialog } from "@/hooks/use-form-dialog";

View File

@@ -53,6 +53,7 @@ export function useSkillsManagement(skillCategories: SkillCategory[]) {
}; };
const handleCreateSkill = async () => { const handleCreateSkill = async () => {
console.log("skillFormData", skillFormData);
if (!skillFormData.name || !skillFormData.categoryId) { if (!skillFormData.name || !skillFormData.categoryId) {
toast({ toast({
title: "Erreur", title: "Erreur",
@@ -70,6 +71,7 @@ export function useSkillsManagement(skillCategories: SkillCategory[]) {
const skillData = { const skillData = {
...skillFormData, ...skillFormData,
category: category.category, category: category.category,
categoryId: category.id,
}; };
const newSkill = await adminClient.createSkill(skillData); const newSkill = await adminClient.createSkill(skillData);

View File

@@ -1,6 +1,6 @@
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { useToast } from "@/hooks/use-toast"; import { useToast } from "@/hooks/use-toast";
import { Team } from "@/clients/domains/admin-client"; import { Team } from "@/lib/types";
interface User { interface User {
uuid: string; uuid: string;

View File

@@ -1,12 +1,9 @@
import { import {
SkillLevel,
SKILL_LEVEL_VALUES, SKILL_LEVEL_VALUES,
CategoryEvaluation, CategoryEvaluation,
RadarChartData, RadarChartData,
UserEvaluation,
SkillCategory, SkillCategory,
} from "./types"; } from "./types";
import { evaluationClient } from "../clients";
export function calculateCategoryScore( export function calculateCategoryScore(
categoryEvaluation: CategoryEvaluation categoryEvaluation: CategoryEvaluation

View File

@@ -30,6 +30,8 @@ export interface Skill {
export interface SkillCategory { export interface SkillCategory {
category: string; category: string;
icon: string; icon: string;
id: string;
name: string;
skills: Skill[]; skills: Skill[];
} }