117 lines
3.0 KiB
TypeScript
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 }
|
|
);
|
|
}
|
|
}
|