fix: validar km máximo 1M y mostrar error si falla la reserva
Deploy / deploy (push) Successful in 4m39s
Deploy / deploy (push) Successful in 4m39s
Si alguien ingresaba un km fuera del rango integer de Postgres la app crasheaba silenciosamente — el cliente no veía ningún mensaje. Se agrega validación de rango (1–1.000.000) en frontend y backend, y se muestra el error de la API debajo del botón de confirmar. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,10 @@ export async function POST(req: NextRequest) {
|
||||
if (!autoId || !tipoServicioId || !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 },
|
||||
@@ -42,7 +46,7 @@ export async function POST(req: NextRequest) {
|
||||
return NextResponse.json({ error: "El horario ya no está disponible" }, { status: 409 });
|
||||
|
||||
const turno = await prisma.turno.create({
|
||||
data: { clienteId: sesion.sub, autoId, tipoServicioId, fechaInicio: inicio, fechaFin: fin, kilometros: Number(kilometros) },
|
||||
data: { clienteId: sesion.sub, autoId, tipoServicioId, fechaInicio: inicio, fechaFin: fin, kilometros: km },
|
||||
include: { auto: true, tipoServicio: true },
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user