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() {
// Charger les données côté serveur
try {
const adminData = await AdminService.getAdminData();
const { skillCategories, teams } = await AdminService.getAdminData();
return (
<SkillsManagementPage
skillCategories={adminData.skillCategories}
teams={adminData.teams}
/>
<SkillsManagementPage skillCategories={skillCategories} teams={teams} />
);
} catch (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() {
// Charger les données côté serveur
try {
const adminData = await AdminService.getAdminData();
const { teams, teamStats, skillCategories } =
await AdminService.getAdminData();
return (
<TeamsManagementPage
teams={adminData.teams}
teamStats={adminData.teamStats}
skillCategories={adminData.skillCategories}
teams={teams}
teamStats={teamStats}
skillCategories={skillCategories}
/>
);
} catch (error) {

View File

@@ -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 <UsersManagementPage teams={adminData.teams} />;
return <UsersManagementPage teams={teams} />;
} catch (error) {
console.error("Failed to load admin data:", error);
return (

View File

@@ -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 || ""]
);

View File

@@ -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;

View File

@@ -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";

View File

@@ -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);

View File

@@ -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;

View File

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

View File

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