Files
peakskills/app/api/evaluations/skills/route.ts
2025-08-25 10:50:39 +02:00

98 lines
2.5 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { AuthService } from "@/services/auth-service";
import { evaluationService } from "@/services/evaluation-service";
export async function PUT(request: NextRequest) {
try {
// Récupérer l'utilisateur depuis le cookie (maintenant un UUID)
const { userProfile } = await AuthService.requireAuthenticatedUser();
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 }
);
}
}