Files
taller_automotriz/src/app/api/admin/historial/route.ts
T
Beldor 93ad1cb8c1 feat: bootstrap taller-turnos project
Estructura inicial con Next.js 14, PostgreSQL/Prisma 7, autenticación por
magic link (clientes) y JWT (admins), lógica de scheduling con 4 slots
paralelos y API routes completas para cliente y panel admin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 11:51:19 -03:00

44 lines
1.6 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { verificarSesion } from "@/lib/auth-admin";
export async function GET(req: NextRequest) {
const sesion = await verificarSesion("admin_session");
if (!sesion) return NextResponse.json({ error: "No autorizado" }, { status: 401 });
const { searchParams } = new URL(req.url);
const autoId = searchParams.get("autoId");
if (!autoId) return NextResponse.json({ error: "autoId requerido" }, { status: 400 });
const historial = await prisma.historialServicio.findMany({
where: { autoId },
include: { admin: { select: { nombre: true } }, tipoServicio: { select: { nombre: true } } },
orderBy: { fechaRealizado: "desc" },
});
return NextResponse.json(historial);
}
export async function POST(req: NextRequest) {
const sesion = await verificarSesion("admin_session");
if (!sesion) return NextResponse.json({ error: "No autorizado" }, { status: 401 });
const { autoId, tipoServicioId, descripcion, observaciones, fechaRealizado } = await req.json();
if (!autoId || !descripcion || !fechaRealizado)
return NextResponse.json({ error: "Datos incompletos" }, { status: 400 });
const registro = await prisma.historialServicio.create({
data: {
autoId,
adminId: sesion.sub,
tipoServicioId: tipoServicioId || null,
descripcion,
observaciones: observaciones || null,
fechaRealizado: new Date(fechaRealizado),
},
include: { admin: { select: { nombre: true } }, tipoServicio: { select: { nombre: true } } },
});
return NextResponse.json(registro, { status: 201 });
}