File size: 2,628 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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 });
  }
}