dcrey7's picture
Upload 522 files
811126d verified
import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/prisma";
const questions = [
"Quelle est votre plus grande peur ?",
"Quel est votre meilleur souvenir d'enfance ?",
"Si vous pouviez voyager n'importe où, où iriez-vous ?",
"Quel est votre plat préféré ?",
"Quelle est votre activité préférée le week-end ?",
"Quel super-pouvoir voudriez-vous avoir ?",
"Quel est votre film préféré ?",
"Si vous pouviez rencontrer une célébrité, qui serait-ce ?",
"Quelle est votre plus grande ambition ?",
"Quel talent aimeriez-vous avoir ?",
];
export async function GET(
request: NextRequest,
{ params }: { params: { inviteCode: string } }
) {
try {
const { inviteCode } = await params;
// Récupérer le groupe et son état de jeu
const group = await prisma.group.findUnique({
where: { inviteCode },
include: {
members: {
include: {
user: true,
},
},
gameState: {
include: {
rounds: {
include: {
guesses: true,
},
orderBy: {
roundNumber: "desc",
},
take: 1,
},
},
},
},
});
if (!group) {
return NextResponse.json({ error: "Groupe non trouvé" }, { status: 404 });
}
if (!group.gameState) {
return NextResponse.json(
{ error: "Partie non commencée" },
{ status: 400 }
);
}
const currentRound = group.gameState.rounds[0];
const roundNumber = currentRound?.roundNumber || 0;
// Formater les données pour le frontend
const players = group.members.map((member) => ({
id: member.userId,
name: member.user.name,
voiceId: member.user.voiceId,
hasAnswered: false, // À implémenter
hasVoted:
currentRound?.guesses.some((g) => g.guesserId === member.userId) ||
false,
isEliminated: false, // À implémenter
}));
// Déterminer le joueur actuel
const currentPlayerIndex = roundNumber % players.length;
const currentSpeaker = players[currentPlayerIndex];
return NextResponse.json({
phase: group.gameState.status,
currentQuestion: questions[roundNumber % questions.length],
currentSpeaker,
players,
votes: {}, // À implémenter
roundNumber: roundNumber + 1,
});
} catch (error) {
console.error("Erreur lors de la récupération de l'état du jeu:", error);
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
}