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; const { userId, userName } = await request.json(); // Vérifier que le groupe existe const group = await prisma.group.findUnique({ where: { inviteCode }, include: { players: { include: { user: true, }, }, }, }); if (!group) { return NextResponse.json({ error: "Groupe non trouvé" }, { status: 404 }); } // Vérifier que le jeu n'a pas commencé if (group.status === "PLAYING") { return NextResponse.json( { error: "La partie a déjà commencé" }, { status: 400 } ); } // Vérifier que l'utilisateur n'est pas déjà dans le groupe const existingPlayer = group.players.find( (player) => player.userId === parseInt(userId) ); if (existingPlayer) { return NextResponse.json( { error: "Vous êtes déjà dans ce groupe" }, { status: 400 } ); } // Créer ou récupérer l'utilisateur const user = await prisma.user.upsert({ where: { id: parseInt(userId) }, update: { name: userName }, create: { id: parseInt(userId), name: userName, }, }); // Ajouter l'utilisateur au groupe const player = await prisma.player.create({ data: { group: { connect: { id: group.id } }, user: { connect: { id: user.id } }, isReady: false, }, include: { user: true, }, }); return NextResponse.json({ success: true, player: { id: player.userId, name: player.user.name, isReady: player.isReady, }, }); } catch (error) { console.error("Erreur lors de l'ajout au groupe:", error); return NextResponse.json( { error: "Erreur serveur", details: error.message }, { status: 500 } ); } }