dcrey7's picture
Upload 522 files
811126d verified
import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export async function POST(
request: NextRequest,
context: { params: { inviteCode: string } }
) {
try {
const { inviteCode } = await context.params;
// Récupérer le groupe
const group = await prisma.group.findUnique({
where: { inviteCode },
include: { players: true },
});
if (!group) {
return NextResponse.json({ error: "Groupe non trouvé" }, { status: 404 });
}
// Vérifier que tous les joueurs sont prêts
const allPlayersReady = group.players.every((player) => player.isReady);
if (!allPlayersReady) {
return NextResponse.json(
{ error: "Tous les joueurs ne sont pas prêts" },
{ status: 400 }
);
}
// Vérifier le nombre minimum de joueurs
if (group.players.length < 3) {
return NextResponse.json(
{ error: "Il faut au moins 3 joueurs pour commencer" },
{ status: 400 }
);
}
// Choisir un imposteur au hasard
const imposteurIndex = Math.floor(Math.random() * group.players.length);
const imposteur = group.players[imposteurIndex];
// Mettre à jour le statut du groupe
const updatedGroup = await prisma.group.update({
where: { id: group.id },
data: {
status: "PLAYING",
imposteurId: imposteur.id,
currentRound: 1,
totalRounds: 3, // Nombre de rounds par défaut
},
include: {
players: true,
},
});
return NextResponse.json({
success: true,
group: updatedGroup,
});
} catch (error: any) {
console.error("Erreur lors du démarrage de la partie:", error);
return NextResponse.json(
{
error: "Erreur lors du démarrage de la partie",
details: error.message,
},
{ status: 500 }
);
}
}