This commit is contained in:
2026-06-10 02:04:37 -06:00
parent 1ba3d8dea4
commit 31cdce03a0
131 changed files with 15922 additions and 106 deletions
+47
View File
@@ -0,0 +1,47 @@
import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/db";
import { servicioCatalogoSchema } from "@/lib/schemas";
export async function GET() {
try {
const servicios = await prisma.servicioCatalogo.findMany({
orderBy: [{ fase: "asc" }, { orden: "asc" }],
});
return NextResponse.json(servicios);
} catch (error: unknown) {
const msg = error instanceof Error ? error.message : "Error interno";
return NextResponse.json({ error: msg }, { status: 500 });
}
}
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const parsed = servicioCatalogoSchema.safeParse(body);
if (!parsed.success) {
return NextResponse.json(
{ error: parsed.error.issues.map((i) => i.message).join(", ") },
{ status: 400 }
);
}
const servicio = await prisma.servicioCatalogo.create({
data: {
nombre: parsed.data.nombre,
descripcion: parsed.data.descripcion,
fase: parsed.data.fase,
tipoPago: parsed.data.tipoPago,
precioBase: parsed.data.precioBase,
tiempoEntrega: parsed.data.tiempoEntrega,
entregablesDefault: parsed.data.entregablesDefault,
categoriaId: parsed.data.categoriaId,
variante: parsed.data.variante,
activo: true,
orden: parsed.data.orden,
},
});
return NextResponse.json(servicio, { status: 201 });
} catch (error: unknown) {
const msg = error instanceof Error ? error.message : "Error interno";
return NextResponse.json({ error: msg }, { status: 500 });
}
}