src/app/api/admin/categories-services/route.ts

route·app·1.8 KB · 44 lignes· Voir l'itinéraire
Annotation non disponible

Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.

2 exports

GETPOST

Code source· typescript

import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/prisma/client";
import { getSession } from "@/lib/auth/session";

export async function GET() {
  try {
    const session = await getSession();
    if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
      return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
    }
    const categories = await prisma.categorieService.findMany({
      where: { tenantId: session.tenantId },
      include: {
        enfants: { include: { prestations: { include: { prestation: { include: { medias: true } } } } }, orderBy: { ordre: "asc" } },
        prestations: { include: { prestation: { include: { medias: true } } } },
      },
      orderBy: { ordre: "asc" },
    });
    return NextResponse.json({ categories });
  } catch (error) {
    console.error("categories-services GET error:", error);
    return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
  }
}

export async function POST(req: NextRequest) {
  try {
    const session = await getSession();
    if (!session || session.role !== "TENANT_ADMIN" || !session.tenantId) {
      return NextResponse.json({ error: "Non autorisé" }, { status: 401 });
    }
    const { nom, parentId } = await req.json();
    if (!nom) return NextResponse.json({ error: "Nom requis" }, { status: 400 });
    const count = await prisma.categorieService.count({ where: { tenantId: session.tenantId, parentId: parentId ?? null } });
    const categorie = await prisma.categorieService.create({
      data: { tenantId: session.tenantId, nom, parentId: parentId ?? null, ordre: count },
    });
    return NextResponse.json({ success: true, categorie });
  } catch (error) {
    console.error("categories-services POST error:", error);
    return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
  }
}