import { NextRequest, NextResponse } from "next/server"; import { prisma } from "@/lib/prisma"; import { verificarSesion } from "@/lib/auth-admin"; import { crearTurno } from "@/lib/turnos"; export async function GET() { const sesion = await verificarSesion("cliente_session"); if (!sesion) return NextResponse.json({ error: "No autorizado" }, { status: 401 }); const turnos = await prisma.turno.findMany({ where: { clienteId: sesion.sub }, include: { auto: true, tipoServicio: true, jefeMecanico: { select: { id: true, nombre: true } } }, orderBy: { fechaInicio: "desc" }, }); return NextResponse.json(turnos); } export async function POST(req: NextRequest) { const sesion = await verificarSesion("cliente_session"); if (!sesion) return NextResponse.json({ error: "No autorizado" }, { status: 401 }); const { autoId, tipoServicioId, jefeMecanicoId, fechaInicio, kilometros } = await req.json(); if (!autoId || !tipoServicioId || !jefeMecanicoId || !fechaInicio || !kilometros) return NextResponse.json({ error: "Datos incompletos" }, { status: 400 }); const km = Number(kilometros); if (!Number.isInteger(km) || km <= 0 || km > 1000000) return NextResponse.json({ error: "Kilometraje inválido (debe ser entre 1 y 1.000.000)" }, { status: 400 }); // Verificar que el auto pertenece al cliente const auto = await prisma.auto.findFirst({ where: { id: autoId, clienteId: sesion.sub }, }); if (!auto) return NextResponse.json({ error: "Auto no encontrado" }, { status: 404 }); const resultado = await crearTurno({ clienteId: sesion.sub, jefeMecanicoId, tipoServicioId, fechaInicio: new Date(fechaInicio), autoId, kilometros: km, }); if (!resultado.ok) return NextResponse.json({ error: resultado.error }, { status: resultado.status }); return NextResponse.json(resultado.turno, { status: 201 }); }