import { NextResponse } from "next/server"; import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; import { Role } from "@/prisma/generated/prisma/client"; export async function GET() { try { const session = await auth(); if (!session?.user || session.user.role !== Role.ADMIN) { return NextResponse.json({ error: "Accès refusé" }, { status: 403 }); } // Récupérer les préférences globales du site let sitePreferences = await prisma.sitePreferences.findUnique({ where: { id: "global" }, }); // Si elles n'existent pas, créer une entrée par défaut if (!sitePreferences) { sitePreferences = await prisma.sitePreferences.create({ data: { id: "global", homeBackground: null, eventsBackground: null, leaderboardBackground: null, }, }); } return NextResponse.json(sitePreferences); } catch (error) { console.error("Error fetching admin preferences:", error); return NextResponse.json( { error: "Erreur lors de la récupération des préférences" }, { status: 500 } ); } } export async function PUT(request: Request) { try { const session = await auth(); if (!session?.user || session.user.role !== Role.ADMIN) { return NextResponse.json({ error: "Accès refusé" }, { status: 403 }); } const body = await request.json(); const { homeBackground, eventsBackground, leaderboardBackground } = body; const preferences = await prisma.sitePreferences.upsert({ where: { id: "global" }, update: { homeBackground: homeBackground === "" ? null : (homeBackground ?? undefined), eventsBackground: eventsBackground === "" ? null : (eventsBackground ?? undefined), leaderboardBackground: leaderboardBackground === "" ? null : (leaderboardBackground ?? undefined), }, create: { id: "global", homeBackground: homeBackground === "" ? null : (homeBackground ?? null), eventsBackground: eventsBackground === "" ? null : (eventsBackground ?? null), leaderboardBackground: leaderboardBackground === "" ? null : (leaderboardBackground ?? null), }, }); return NextResponse.json(preferences); } catch (error) { console.error("Error updating admin preferences:", error); return NextResponse.json( { error: "Erreur lors de la mise à jour des préférences" }, { status: 500 } ); } }