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:
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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 || ""]
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user