|
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; |
|
|
|
|
|
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; |
|
|
|
|
|
const players = group.members.map((member) => ({ |
|
id: member.userId, |
|
name: member.user.name, |
|
voiceId: member.user.voiceId, |
|
hasAnswered: false, |
|
hasVoted: |
|
currentRound?.guesses.some((g) => g.guesserId === member.userId) || |
|
false, |
|
isEliminated: false, |
|
})); |
|
|
|
|
|
const currentPlayerIndex = roundNumber % players.length; |
|
const currentSpeaker = players[currentPlayerIndex]; |
|
|
|
return NextResponse.json({ |
|
phase: group.gameState.status, |
|
currentQuestion: questions[roundNumber % questions.length], |
|
currentSpeaker, |
|
players, |
|
votes: {}, |
|
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 }); |
|
} |
|
} |
|
|