diff --git a/api/routes/asistencias/asistencias.js b/api/routes/asistencias/asistencias.js index 100e2e3..9816bfe 100644 --- a/api/routes/asistencias/asistencias.js +++ b/api/routes/asistencias/asistencias.js @@ -1,6 +1,6 @@ import express from 'express'; const router = express.Router(); -import { PrismaClient } from '../../prisma/generated/client/index.js'; +import { PrismaClient, Prisma } from '../../prisma/generated/client/index.js'; const prisma = new PrismaClient(); // GET all asistencias @@ -32,7 +32,7 @@ router.get('/:id', async (req, res) => { } }); -// POST /api/asistencias ➜ crear asistencia +// POST ➜ crear asistencia router.post('/', async (req, res) => { const { empleado_id, @@ -40,7 +40,7 @@ router.post('/', async (req, res) => { salida, historial, observacion, - estado = 'pendiente', + estado, fecha_anulado, creador_id, modificado_id, @@ -53,13 +53,13 @@ router.post('/', async (req, res) => { try { const nuevaAsistencia = await prisma.asistencia.create({ data: { - empleado: { connect: { id: BigInt(empleado_id) } }, // FK con validación implícita - entrada: entrada ? new Date(entrada) : null, - salida: salida ? new Date(salida) : null, - historial, // tipo Json en el schema + empleado_id: BigInt(empleado_id), // FK a Cliente.id + entrada: entrada ? new Date(entrada) : null, + salida: salida ? new Date(salida) : null, + historial, // JSON observacion, estado, - fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null, + fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null, creador_id, modificado_id, anulador_id, @@ -67,23 +67,22 @@ router.post('/', async (req, res) => { }) res.status(201).json(nuevaAsistencia) - } catch (error) { - console.error(error) + } catch (e){ - // FK inválida - if ( - error.code === 'P2003' && - error.meta?.constraint === 'Asistencia_empleado_id_fkey' - ) - return res - .status(400) - .json({ error: 'El empleado_id proporcionado no existe.' }) + // ⚠️ captura FK error: Asistencia_empleado_id_fkey + if(e instanceof Prisma.PrismaClientKnownRequestError ) { + if( e.code === 'P2003') { + return res.status(400).json({ error: 'El empleado_id proporcionado no existe.' }) + } + } + console.error(e) res.status(500).json({ error: 'Error al crear asistencia.' }) } }) + // PUT update asistencia by ID router.put('/:id', async (req, res) => { const { id } = req.params;