import { NextRequest, NextResponse } from "next/server"; import { cookies } from "next/headers"; import { evaluationService } from "@/services/evaluation-service"; import { UserProfile, SkillLevel } from "@/lib/types"; const COOKIE_NAME = "peakSkills_userId"; export async function PUT(request: NextRequest) { try { // Récupérer l'utilisateur depuis le cookie (maintenant un UUID) const cookieStore = await cookies(); const userUuid = cookieStore.get(COOKIE_NAME)?.value; if (!userUuid) { return NextResponse.json( { error: "Utilisateur non authentifié" }, { status: 401 } ); } const userProfile = await evaluationService.getUserByUuid(userUuid); if (!userProfile) { return NextResponse.json( { error: "Utilisateur introuvable" }, { status: 404 } ); } const body = await request.json(); const { category, skillId, level, canMentor, wantsToLearn, action } = body; if (!category || !skillId) { return NextResponse.json( { error: "category et skillId sont requis" }, { status: 400 } ); } switch (action) { case "updateLevel": if (level === undefined) { return NextResponse.json( { error: "level est requis pour updateLevel" }, { status: 400 } ); } await evaluationService.updateSkillLevelUuid( userProfile, category, skillId, level ); break; case "updateMentorStatus": if (canMentor === undefined) { return NextResponse.json( { error: "canMentor est requis pour updateMentorStatus" }, { status: 400 } ); } await evaluationService.updateSkillMentorStatusUuid( userProfile, category, skillId, canMentor ); break; case "updateLearningStatus": if (wantsToLearn === undefined) { return NextResponse.json( { error: "wantsToLearn est requis pour updateLearningStatus" }, { status: 400 } ); } await evaluationService.updateSkillLearningStatusUuid( userProfile, category, skillId, wantsToLearn ); break; case "addSkill": await evaluationService.addSkillToEvaluationUuid( userProfile, category, skillId ); break; case "removeSkill": await evaluationService.removeSkillFromEvaluationUuid( userProfile, category, skillId ); break; default: return NextResponse.json( { error: "Action non supportée" }, { status: 400 } ); } return NextResponse.json({ success: true }); } catch (error) { console.error("Erreur lors de la mise à jour de la skill:", error); return NextResponse.json( { error: "Erreur interne du serveur" }, { status: 500 } ); } }