CORECCION DE CODIGO EN CONTROLADOR MEMBRESIAS

This commit is contained in:
Pablinux
2025-06-04 21:54:03 -05:00
parent 91aeab5842
commit f7b40c06d0

View File

@@ -2,19 +2,19 @@
const controladorMembresias = { const controladorMembresias = {
// --- Funciones para Tipos de Membresía (clientes_membresias) ---
/** /**
* @function listarTiposMembresia * @function listarTiposMembresia
* @description Lista todos los tipos de membresía disponibles, incluyendo información del combo ensamblado si aplica. * @description Lista todos los tipos de membresía disponibles, incluyendo información del combo ensamblado si aplica.
* @param {Object} req - Objeto de solicitud de Express. * @param {Object} req - Objeto de solicitud de Express.
* @param {Object} res - Objeto de respuesta de Express. * @param {Object} res - Objeto de respuesta de Express.
*/ */
listarTiposMembresia: async (req, res) => { listarTiposMembresia: (req, res) => { // ¡Ya no es async aquí directamente!
// let connection; // No es necesario si se usa req.pool directamente req.getConnection((err, connection) => { // Obtiene la conexión con un callback
try { if (err) {
// CAMBIO CLAVE AQUÍ: Usar req.pool directamente console.error('Error al obtener conexión para listar tipos de membresía:', err);
const [rows] = await req.pool.query(` return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión', error: err.message });
}
connection.query(`
SELECT SELECT
cm.id_tipo_membresia, cm.id_tipo_membresia,
cm.nombre_tipo, cm.nombre_tipo,
@@ -36,15 +36,15 @@ const controladorMembresias = {
clientes_membresias cm clientes_membresias cm
LEFT JOIN LEFT JOIN
productos_Ensamblados pe ON cm.id_combo_ensamblado_incluido = pe.PdctEnsb_ID productos_Ensamblados pe ON cm.id_combo_ensamblado_incluido = pe.PdctEnsb_ID
`); `, (err, rows) => { // Ejecuta la query con un callback
res.json(rows); if (err) {
} catch (error) { console.error('Error al listar tipos de membresía:', err);
console.error('Error al listar tipos de membresía:', error); return res.status(500).json({ mensaje: 'Error interno del servidor al listar tipos de membresía', error: err.message });
res.status(500).json({ mensaje: 'Error interno del servidor al listar tipos de membresía', error: error.message }); }
} res.json(rows);
// finally { // El bloque finally para release no es necesario si se usa req.pool directamente // express-myconnection se encarga de liberar la conexión automáticamente si no usas transacciones manuales
// if (connection && typeof connection.release === 'function') connection.release(); });
// } });
}, },
/** /**
@@ -53,12 +53,14 @@ const controladorMembresias = {
* @param {Object} req - Objeto de solicitud de Express (req.params.id contiene el ID del tipo de membresía). * @param {Object} req - Objeto de solicitud de Express (req.params.id contiene el ID del tipo de membresía).
* @param {Object} res - Objeto de respuesta de Express. * @param {Object} res - Objeto de respuesta de Express.
*/ */
obtenerTipoMembresiaPorId: async (req, res) => { obtenerTipoMembresiaPorId: (req, res) => {
const { id } = req.params; // ID de la tabla clientes_membresias const { id } = req.params;
// let connection; req.getConnection((err, connection) => {
try { if (err) {
// CAMBIO CLAVE AQUÍ: Usar req.pool directamente console.error('Error al obtener conexión para tipo de membresía por ID:', err);
const [rows] = await req.pool.query(` return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión', error: err.message });
}
connection.query(`
SELECT SELECT
cm.id_tipo_membresia, cm.id_tipo_membresia,
cm.nombre_tipo, cm.nombre_tipo,
@@ -80,19 +82,17 @@ const controladorMembresias = {
clientes_membresias cm clientes_membresias cm
LEFT JOIN LEFT JOIN
productos_Ensamblados pe ON cm.id_combo_ensamblado_incluido = pe.PdctEnsb_ID productos_Ensamblados pe ON cm.id_combo_ensamblado_incluido = pe.PdctEnsb_ID
WHERE cm.id_tipo_membresia = ?`, [id]); WHERE cm.id_tipo_membresia = ?`, [id], (err, rows) => {
if (err) {
if (rows.length === 0) { console.error('Error al obtener tipo de membresía:', err);
return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado' }); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener tipo de membresía', error: err.message });
} }
res.json(rows[0]); if (rows.length === 0) {
} catch (error) { return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado' });
console.error('Error al obtener tipo de membresía:', error); }
res.status(500).json({ mensaje: 'Error interno del servidor al obtener tipo de membresía', error: error.message }); res.json(rows[0]);
} });
// finally { });
// if (connection && typeof connection.release === 'function') connection.release();
// }
}, },
/** /**
@@ -101,22 +101,23 @@ const controladorMembresias = {
* @param {Object} req - Objeto de solicitud de Express (req.body contiene los datos del tipo de membresía). * @param {Object} req - Objeto de solicitud de Express (req.body contiene los datos del tipo de membresía).
* @param {Object} res - Objeto de respuesta de Express. * @param {Object} res - Objeto de respuesta de Express.
*/ */
crearTipoMembresia: async (req, res) => { crearTipoMembresia: (req, res) => {
const { const {
nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros, nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros,
valor, descripcion, duracion_dias, visitas_maximas_diarias, valor, descripcion, duracion_dias, visitas_maximas_diarias,
areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido
} = req.body; } = req.body;
// Validaciones básicas de campos obligatorios
if (!nombre_tipo || es_grupal === undefined || valor === undefined) { if (!nombre_tipo || es_grupal === undefined || valor === undefined) {
return res.status(400).json({ mensaje: 'Faltan campos obligatorios para el tipo de membresía (nombre_tipo, es_grupal, valor).' }); return res.status(400).json({ mensaje: 'Faltan campos obligatorios para el tipo de membresía (nombre_tipo, es_grupal, valor).' });
} }
// let connection; req.getConnection((err, connection) => {
try { if (err) {
// CAMBIO CLAVE AQUÍ: Usar req.pool directamente para la query console.error('Error al obtener conexión para crear tipo de membresía:', err);
const [result] = await req.pool.query( return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión', error: err.message });
}
connection.query(
`INSERT INTO clientes_membresias ( `INSERT INTO clientes_membresias (
nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros, nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros,
valor, descripcion, duracion_dias, visitas_maximas_diarias, valor, descripcion, duracion_dias, visitas_maximas_diarias,
@@ -127,19 +128,19 @@ const controladorMembresias = {
nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros, nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros,
valor, descripcion, duracion_dias, visitas_maximas_diarias, valor, descripcion, duracion_dias, visitas_maximas_diarias,
areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido
] ],
(err, result) => {
if (err) {
console.error('Error al crear tipo de membresía:', err);
if (err.code === 'ER_DUP_ENTRY') {
return res.status(409).json({ mensaje: 'Ya existe un tipo de membresía con ese nombre.', error: err.message });
}
return res.status(500).json({ mensaje: 'Error interno del servidor al crear tipo de membresía', error: err.message });
}
res.status(201).json({ mensaje: 'Tipo de membresía creado exitosamente', id: result.insertId });
}
); );
res.status(201).json({ mensaje: 'Tipo de membresía creado exitosamente', id: result.insertId }); });
} catch (error) {
console.error('Error al crear tipo de membresía:', error);
if (error.code === 'ER_DUP_ENTRY') {
return res.status(409).json({ mensaje: 'Ya existe un tipo de membresía con ese nombre.', error: error.message });
}
res.status(500).json({ mensaje: 'Error interno del servidor al crear tipo de membresía', error: error.message });
}
// finally {
// if (connection && typeof connection.release === 'function') connection.release();
// }
}, },
/** /**
@@ -148,7 +149,7 @@ const controladorMembresias = {
* @param {Object} req - Objeto de solicitud de Express (req.params.id para el ID, req.body para los datos). * @param {Object} req - Objeto de solicitud de Express (req.params.id para el ID, req.body para los datos).
* @param {Object} res - Objeto de respuesta de Express. * @param {Object} res - Objeto de respuesta de Express.
*/ */
actualizarTipoMembresia: async (req, res) => { actualizarTipoMembresia: (req, res) => {
const { id } = req.params; // ID del tipo de membresía a actualizar const { id } = req.params; // ID del tipo de membresía a actualizar
const { const {
nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros, nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros,
@@ -160,10 +161,12 @@ const controladorMembresias = {
return res.status(400).json({ mensaje: 'Faltan campos obligatorios para actualizar el tipo de membresía (nombre_tipo, es_grupal, valor, estado_tipo).' }); return res.status(400).json({ mensaje: 'Faltan campos obligatorios para actualizar el tipo de membresía (nombre_tipo, es_grupal, valor, estado_tipo).' });
} }
// let connection; req.getConnection((err, connection) => {
try { if (err) {
// CAMBIO CLAVE AQUÍ: Usar req.pool directamente para la query console.error('Error al obtener conexión para actualizar tipo de membresía:', err);
const [result] = await req.pool.query( return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión', error: err.message });
}
connection.query(
`UPDATE clientes_membresias SET `UPDATE clientes_membresias SET
nombre_tipo = ?, categoria_membresia = ?, es_grupal = ?, nombre_tipo = ?, categoria_membresia = ?, es_grupal = ?,
capacidad_maxima_miembros = ?, valor = ?, descripcion = ?, capacidad_maxima_miembros = ?, valor = ?, descripcion = ?,
@@ -175,23 +178,23 @@ const controladorMembresias = {
nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros, nombre_tipo, categoria_membresia, es_grupal, capacidad_maxima_miembros,
valor, descripcion, duracion_dias, visitas_maximas_diarias, valor, descripcion, duracion_dias, visitas_maximas_diarias,
areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido, estado_tipo, id areas_de_acceso, id_combo_ensamblado_incluido, cantidad_combo_incluido, estado_tipo, id
] ],
); (err, result) => {
if (err) {
console.error('Error al actualizar tipo de membresía:', err);
if (err.code === 'ER_DUP_ENTRY') {
return res.status(409).json({ mensaje: 'Ya existe otro tipo de membresía con ese nombre.', error: err.message });
}
return res.status(500).json({ mensaje: 'Error interno del servidor al actualizar tipo de membresía', error: err.message });
}
if (result.affectedRows === 0) { if (result.affectedRows === 0) {
return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado para actualizar' }); return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado para actualizar' });
} }
res.json({ mensaje: 'Tipo de membresía actualizado exitosamente' }); res.json({ mensaje: 'Tipo de membresía actualizado exitosamente' });
} catch (error) { }
console.error('Error al actualizar tipo de membresía:', error); );
if (error.code === 'ER_DUP_ENTRY') { });
return res.status(409).json({ mensaje: 'Ya existe otro tipo de membresía con ese nombre.', error: error.message });
}
res.status(500).json({ mensaje: 'Error interno del servidor al actualizar tipo de membresía', error: error.message });
}
// finally {
// if (connection && typeof connection.release === 'function') connection.release();
// }
}, },
/** /**
@@ -200,24 +203,25 @@ const controladorMembresias = {
* @param {Object} req - Objeto de solicitud de Express (req.params.id para el ID). * @param {Object} req - Objeto de solicitud de Express (req.params.id para el ID).
* @param {Object} res - Objeto de respuesta de Express. * @param {Object} res - Objeto de respuesta de Express.
*/ */
eliminarTipoMembresia: async (req, res) => { eliminarTipoMembresia: (req, res) => {
const { id } = req.params; const { id } = req.params;
// let connection; req.getConnection((err, connection) => {
try { if (err) {
// CAMBIO CLAVE AQUÍ: Usar req.pool directamente para la query console.error('Error al obtener conexión para eliminar tipo de membresía:', err);
const [result] = await req.pool.query('UPDATE clientes_membresias SET estado_tipo = "ELIMINADO" WHERE id_tipo_membresia = ?', [id]); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión', error: err.message });
if (result.affectedRows === 0) {
return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado para eliminar' });
} }
res.json({ mensaje: 'Tipo de membresía eliminado (lógicamente) exitosamente' }); connection.query('UPDATE clientes_membresias SET estado_tipo = "ELIMINADO" WHERE id_tipo_membresia = ?', [id], (err, result) => {
} catch (error) { if (err) {
console.error('Error al eliminar tipo de membresía:', error); console.error('Error al eliminar tipo de membresía:', err);
res.status(500).json({ mensaje: 'Error interno del servidor al eliminar tipo de membresía', error: error.message }); return res.status(500).json({ mensaje: 'Error interno del servidor al eliminar tipo de membresía', error: err.message });
} }
// finally {
// if (connection && typeof connection.release === 'function') connection.release(); if (result.affectedRows === 0) {
// } return res.status(404).json({ mensaje: 'Tipo de membresía no encontrado para eliminar' });
}
res.json({ mensaje: 'Tipo de membresía eliminado (lógicamente) exitosamente' });
});
});
} }
}; };