dcrey7's picture
Upload 522 files
811126d verified
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 }
);
}
}