File size: 1,885 Bytes
811126d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
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 }
);
}
}
|