import { NextResponse } from "next/server"; import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; export async function POST( request: Request, { params }: { params: Promise<{ eventId: string }> } ) { try { const session = await auth(); if (!session?.user?.id) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } const { eventId } = await params; const body = await request.json(); const { rating, comment } = body; // Valider la note (1-5) if (!rating || rating < 1 || rating > 5) { return NextResponse.json( { error: "La note doit être entre 1 et 5" }, { status: 400 } ); } // Vérifier que l'événement existe const event = await prisma.event.findUnique({ where: { id: eventId }, }); if (!event) { return NextResponse.json( { error: "Événement introuvable" }, { status: 404 } ); } // Créer ou mettre à jour le feedback (unique par utilisateur/événement) const feedback = await prisma.eventFeedback.upsert({ where: { userId_eventId: { userId: session.user.id, eventId, }, }, update: { rating, comment: comment || null, }, create: { userId: session.user.id, eventId, rating, comment: comment || null, }, }); return NextResponse.json({ success: true, feedback }); } catch (error) { console.error("Error saving feedback:", error); return NextResponse.json( { error: "Erreur lors de l'enregistrement du feedback" }, { status: 500 } ); } } export async function GET( request: Request, { params }: { params: Promise<{ eventId: string }> } ) { try { const session = await auth(); if (!session?.user?.id) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } const { eventId } = await params; // Récupérer le feedback de l'utilisateur pour cet événement const feedback = await prisma.eventFeedback.findUnique({ where: { userId_eventId: { userId: session.user.id, eventId, }, }, include: { event: { select: { id: true, name: true, date: true, }, }, }, }); return NextResponse.json({ feedback }); } catch (error) { console.error("Error fetching feedback:", error); return NextResponse.json( { error: "Erreur lors de la récupération du feedback" }, { status: 500 } ); } }