|
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(); |
|
|
|
|
|
const group = await prisma.group.findUnique({ |
|
where: { inviteCode }, |
|
include: { |
|
players: { |
|
include: { |
|
user: true, |
|
}, |
|
}, |
|
}, |
|
}); |
|
|
|
if (!group) { |
|
return NextResponse.json({ error: "Groupe non trouvé" }, { status: 404 }); |
|
} |
|
|
|
|
|
if (group.status === "PLAYING") { |
|
return NextResponse.json( |
|
{ error: "La partie a déjà commencé" }, |
|
{ status: 400 } |
|
); |
|
} |
|
|
|
|
|
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 } |
|
); |
|
} |
|
|
|
|
|
const user = await prisma.user.upsert({ |
|
where: { id: parseInt(userId) }, |
|
update: { name: userName }, |
|
create: { |
|
id: parseInt(userId), |
|
name: userName, |
|
}, |
|
}); |
|
|
|
|
|
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 } |
|
); |
|
} |
|
} |
|
|