diff --git a/controllers/fras.controller.js b/controllers/fras.controller.js index 8649d6b..f18718d 100644 --- a/controllers/fras.controller.js +++ b/controllers/fras.controller.js @@ -28,4 +28,31 @@ module.exports.obtenerFras = async (req, res) => { } catch (error) { res.status(500).json({ message: 'Error al obtener los registros de Fras.' }); } +} + +/** + * Actualiza los gramos generados de Fras para una charola específica. + * @async + * @function actualizarGramos + * @param {import('express').Request} req - Objeto de solicitud HTTP de Express. + * @param {import('express').Response} res - Objeto de respuesta HTTP de Express. + * @returns {Promise} Responde con éxito o un error si no se pudo actualizar. + */ +module.exports.actualizarGramos = async (req, res) => { + const charolaId = req.params.charolaId; + const { nuevosGramos } = req.body; + + if (!charolaId || !nuevosGramos) { + return res.status(400).json({ success: false, message: 'Datos no válidos' }); + } + + const fras = new Fras(); + + try { + const resultado = await fras.actualizarGramos(charolaId, nuevosGramos); + res.status(200).json({ success: true, message: 'Gramos actualizados exitosamente', data: resultado }); + } catch (error) { + console.error('Error al actualizar los gramos de Fras:', error); + res.status(500).json({ success: false, message: 'Error del servidor al actualizar los gramos de Fras' }); + } } \ No newline at end of file diff --git a/models/fras.model.js b/models/fras.model.js index 0a98dab..3e53b57 100644 --- a/models/fras.model.js +++ b/models/fras.model.js @@ -1,4 +1,5 @@ // RF29: Visualizar la información del Frass obtenido - https://codeandco-wiki.netlify.app/docs/proyectos/larvas/documentacion/requisitos/RF29 +// RF30: Editar la información del Frass obtenido - https://codeandco-wiki.netlify.app/docs/proyectos/larvas/documentacion/requisitos/RF30 const { PrismaClient } = require('../generated/prisma'); const prisma = new PrismaClient(); @@ -17,11 +18,13 @@ class Fras { select: { CHAROLA: { select: { + charolaId: true, nombreCharola: true, }, }, FRAS: { select: { + frasId: true, fechaRegistro: true, gramosGenerados: true, }, @@ -33,6 +36,59 @@ class Fras { throw new Error('Error al obtener los registros de Fras: ' + error.message); } } + + /** + * Actualiza los gramos generados de Fras para una charola específica. + * @async + * @param {number} charolaId - El ID de la charola para la cual se actualizarán los gramos. + * @param {number} nuevosGramos - El nuevo valor de gramos generados a actualizar. + * @return {Promise} Retorna una lista de objetos que contienen los gramos actualizados de Fras. + * @throws {Error} Lanza un error si ocurre un problema al actualizar los gramos en la base de datos. + * */ + async actualizarGramos( charolaId, nuevosGramos ) { + try { + await prisma.fRAS.updateMany({ + where: { + CHAROLA_FRAS: { + some: { + charolaId: Number(charolaId) + } + } + }, + data: { + gramosGenerados: nuevosGramos + } + }) +const frasActualizados = await prisma.fRAS.findMany({ + where: { + CHAROLA_FRAS: { + some: { + charolaId: Number(charolaId) + } + } + }, + select: { + frasId: true, + gramosGenerados: true, + fechaRegistro: true, + CHAROLA_FRAS: { + select: { + charolaId: true, + CHAROLA: { + select: { nombreCharola: true } + } + } + } + } +}); + + + return frasActualizados; + + } catch (error) { + throw new Error('Error al actualizar los gramos de Fras: ' + error.message); + } + } } module.exports = { Fras }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f522b32..94af31b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6384,6 +6384,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.3.tgz", "integrity": "sha512-Ajq6Sz1x7cIK3pN6KesGTah+1gnwMnx5gKl3piQlQQE/PwyJ4Mbc8is2psWYxK3RJTVeqsDaCv8ZzXLCDHMTZw==", + "license": "MIT-0", "engines": { "node": ">=6.0.0" } diff --git a/routes/fras.routes.js b/routes/fras.routes.js index 8e2c1a9..0f7ac5e 100644 --- a/routes/fras.routes.js +++ b/routes/fras.routes.js @@ -1,4 +1,5 @@ // RF29: Visualizar la información del Frass obtenido - https://codeandco-wiki.netlify.app/docs/proyectos/larvas/documentacion/requisitos/RF29 +// RF30: Editar la información del Frass obtenido - https://codeandco-wiki.netlify.app/docs/proyectos/larvas/documentacion/requisitos/RF30 /* Dependencias */ const express = require("express"); @@ -22,11 +23,10 @@ router.get('/', frasController.obtenerFras); /* ----------- */ /* POST METHODS */ - +router.post('/editar/:charolaId', frasController.actualizarGramos); /* ----------- */ /* PUT METHODS */ -/** /* ----------- */ diff --git a/utils/middlewares/limitarAPI.js b/utils/middlewares/limitarAPI.js index a08d971..35957a8 100644 --- a/utils/middlewares/limitarAPI.js +++ b/utils/middlewares/limitarAPI.js @@ -8,7 +8,7 @@ const rateLimit = require('express-rate-limit'); */ const limitarAPI = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutos - max: 200, + max: 4000, keyGenerator: (req) => { return req.ip; },