2df679777c
Revisión con IA / ai-review (pull_request) Successful in 31s
La validacion rechaza 0 pero el mensaje decia "entre 0 y 24". Ojo que "entre 1 y 24" habria sido igual de incorrecto: duracionHoras es Float y la UI muestra las duraciones de menos de una hora en minutos, asi que 0,5 (media hora) es un valor valido y esperado. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
41 lines
1.5 KiB
TypeScript
41 lines
1.5 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { prisma } from "@/lib/prisma";
|
|
import { verificarSesion } from "@/lib/auth-admin";
|
|
|
|
// Lista los trabajos cargados por el jefe logueado (los suyos, no los globales).
|
|
export async function GET() {
|
|
const sesion = await verificarSesion("jefe_session");
|
|
if (!sesion || sesion.role !== "jefe")
|
|
return NextResponse.json({ error: "No autorizado" }, { status: 401 });
|
|
|
|
const servicios = await prisma.tipoServicio.findMany({
|
|
where: { jefeMecanicoId: sesion.sub },
|
|
orderBy: { nombre: "asc" },
|
|
});
|
|
|
|
return NextResponse.json(servicios);
|
|
}
|
|
|
|
// Crea un trabajo propio del jefe (nombre + duración en horas).
|
|
export async function POST(req: NextRequest) {
|
|
const sesion = await verificarSesion("jefe_session");
|
|
if (!sesion || sesion.role !== "jefe")
|
|
return NextResponse.json({ error: "No autorizado" }, { status: 401 });
|
|
|
|
const { nombre, duracionHoras } = await req.json();
|
|
const dur = Number(duracionHoras);
|
|
if (!nombre || typeof nombre !== "string" || !nombre.trim())
|
|
return NextResponse.json({ error: "El nombre del trabajo es obligatorio" }, { status: 400 });
|
|
if (!Number.isFinite(dur) || dur <= 0 || dur > 24)
|
|
return NextResponse.json(
|
|
{ error: "La duración debe ser mayor que 0 y hasta 24 horas" },
|
|
{ status: 400 }
|
|
);
|
|
|
|
const servicio = await prisma.tipoServicio.create({
|
|
data: { nombre: nombre.trim(), duracionHoras: dur, jefeMecanicoId: sesion.sub },
|
|
});
|
|
|
|
return NextResponse.json(servicio, { status: 201 });
|
|
}
|