Files
peakskills/app/api/evaluations/skills/route.ts
2025-08-21 13:54:13 +02:00

117 lines
3.0 KiB
TypeScript

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