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

route·app·1.5 KB · 32 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.

1 export

POST

Code source· typescript

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

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, description, prixMin, prixMax, devise, duree, disponible, categorieIds, videoUrl } = await req.json();
    if (!nom) return NextResponse.json({ error: "Nom requis" }, { status: 400 });

    const count = await prisma.prestation.count({ where: { tenantId: session.tenantId } });
    const prestation = await prisma.prestation.create({
      data: { tenantId: session.tenantId, nom, description: description || null, prixMin, prixMax, devise: devise || "FCFA", duree: duree || null, disponible: disponible ?? true, ordre: count, videoUrl: videoUrl || null },
    });
    // Associer les catégories
    if (categorieIds && categorieIds.length > 0) {
      await prisma.prestationCategorie.createMany({
        data: categorieIds.map((categorieId: string) => ({ prestationId: prestation.id, categorieId })),
        skipDuplicates: true,
      });
    }
    return NextResponse.json({ success: true, prestation });
  } catch (error) {
    console.error("services POST error:", error);
    return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
  }
}