From ef90a045e6682588984f9b3fa04ce9ce220ea943 Mon Sep 17 00:00:00 2001 From: Pablinux Date: Thu, 17 Jul 2025 14:40:17 -0500 Subject: [PATCH] Correcion 2 backend controlador api/clients/ --- src/controladores/controlador_Clientes.js | 74 +++++++++++++++-------- src/rutas/rt_clientes.js | 8 +-- 2 files changed, 52 insertions(+), 30 deletions(-) diff --git a/src/controladores/controlador_Clientes.js b/src/controladores/controlador_Clientes.js index fec7990..aa4d2df 100644 --- a/src/controladores/controlador_Clientes.js +++ b/src/controladores/controlador_Clientes.js @@ -380,28 +380,31 @@ controlador.api_consultaCliente = (req, res) => { }*/ /*** API CLIENTES ***/ +// --- FUNCIONES DE CONTROLADOR PARA API RESTful (basadas en client_rucCed) --- + /** - * @description Obtiene un cliente por su ID y devuelve los datos en formato JSON. + * @description Obtiene un cliente por su RUC/Cédula y devuelve los datos en formato JSON. * Usado por EditarCliente.vue para cargar los datos. - * Ruta: GET /api/clientes/:client_id + * Ruta: GET /api/clientes/:client_rucCed */ controlador.obtenerClienteJsonPorId = (req, res) => { - const { client_id } = req.params; + // CAMBIO: Ahora se espera client_rucCed en los parámetros + const { client_rucCed } = req.params; req.getConnection((err, conn) => { if (err) { - console.error('Error al obtener conexión para obtener cliente JSON:', err); + console.error('Error al obtener conexión para obtener cliente JSON (por RUC/Cédula):', err); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión.' }); } - // La consulta selecciona las columnas necesarias de tu tabla `clientes` - conn.query('SELECT client_id, client_nombre, client_rucCed, client_direccion, client_celular, client_email, client_fechaReg, client_estado FROM clientes WHERE client_rucCed = ?', [client_id], (err, rows) => { + // CAMBIO: La consulta ahora busca por `client_rucCed` + conn.query('SELECT client_id, client_nombre, client_rucCed, client_direccion, client_celular, client_email, client_fechaReg, client_estado FROM clientes WHERE client_rucCed = ?', [client_rucCed], (err, rows) => { if (err) { - console.error('Error al consultar cliente por ID (JSON):', err); + console.error('Error al consultar cliente por RUC/Cédula (JSON):', err); return res.status(500).json({ mensaje: 'Error al consultar cliente.', error: err.message }); } if (rows.length > 0) { res.json(rows[0]); // Devuelve el objeto cliente directamente } else { - res.status(404).json({ mensaje: 'Cliente no encontrado.' }); + res.status(404).json({ mensaje: 'Cliente no encontrado con ese RUC/Cédula.' }); } }); }); @@ -413,13 +416,12 @@ controlador.obtenerClienteJsonPorId = (req, res) => { * Ruta: POST /api/clientes */ controlador.crearClienteJson = (req, res) => { - const data = req.body; // Los datos del cliente vienen en el cuerpo de la solicitud (JSON) + const data = req.body; req.getConnection((err, conn) => { if (err) { console.error('Error al obtener conexión para crear cliente JSON:', err); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión.' }); } - // `INSERT INTO clientes SET ?` mapea las propiedades del objeto `data` a las columnas de la tabla conn.query('INSERT INTO clientes SET ?', [data], (err, result) => { if (err) { console.error('Error al insertar nuevo cliente (JSON):', err); @@ -433,25 +435,26 @@ controlador.crearClienteJson = (req, res) => { /** * @description Actualiza un cliente existente y devuelve una respuesta JSON. * Usado por EditarCliente.vue para enviar los cambios. - * Ruta: PUT /api/clientes/:client_id + * Ruta: PUT /api/clientes/:client_rucCed */ controlador.actualizarClienteJson = (req, res) => { - const { client_id } = req.params; // ID del cliente a actualizar - const nCliente = req.body; // Datos actualizados del cliente en el cuerpo de la solicitud + // CAMBIO: Ahora se espera client_rucCed en los parámetros + const { client_rucCed } = req.params; + const nCliente = req.body; req.getConnection((err, conn) => { if (err) { - console.error('Error al obtener conexión para actualizar cliente JSON:', err); + console.error('Error al obtener conexión para actualizar cliente JSON (por RUC/Cédula):', err); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión.' }); } - // `UPDATE clientes SET ? WHERE client_id = ?` mapea las propiedades de `nCliente` a las columnas - conn.query('UPDATE clientes SET ? WHERE client_id = ?', [nCliente, client_id], (err, result) => { + // CAMBIO: La actualización se realiza buscando por `client_rucCed` + conn.query('UPDATE clientes SET ? WHERE client_rucCed = ?', [nCliente, client_rucCed], (err, result) => { if (err) { - console.error('Error al actualizar cliente (JSON):', err); + console.error('Error al actualizar cliente por RUC/Cédula (JSON):', err); return res.status(500).json({ mensaje: 'Error al actualizar el cliente.', error: err.message }); } if (result.affectedRows === 0) { - return res.status(404).json({ mensaje: 'Cliente no encontrado para actualizar.' }); + return res.status(404).json({ mensaje: 'Cliente no encontrado para actualizar con ese RUC/Cédula.' }); } res.json({ mensaje: 'Cliente actualizado exitosamente.' }); }); @@ -459,25 +462,26 @@ controlador.actualizarClienteJson = (req, res) => { }; /** - * @description Elimina un cliente por su ID y devuelve una respuesta JSON. + * @description Elimina un cliente por su RUC/Cédula y devuelve una respuesta JSON. * Usado por ListaClientes.vue para la eliminación. - * Ruta: DELETE /api/clientes/:client_id + * Ruta: DELETE /api/clientes/:client_rucCed */ controlador.eliminarClienteJson = (req, res) => { - const { client_id } = req.params; // ID del cliente a eliminar + // CAMBIO: Ahora se espera client_rucCed en los parámetros + const { client_rucCed } = req.params; req.getConnection((err, conn) => { if (err) { - console.error('Error al obtener conexión para eliminar cliente JSON:', err); + console.error('Error al obtener conexión para eliminar cliente JSON (por RUC/Cédula):', err); return res.status(500).json({ mensaje: 'Error interno del servidor al obtener conexión.' }); } - // La consulta DELETE utiliza `client_id` de tu tabla - conn.query('DELETE FROM clientes WHERE client_id = ?', [client_id], (err, result) => { + // CAMBIO: La eliminación se realiza buscando por `client_rucCed` + conn.query('DELETE FROM clientes WHERE client_rucCed = ?', [client_rucCed], (err, result) => { if (err) { - console.error('Error al eliminar cliente (JSON):', err); + console.error('Error al eliminar cliente por RUC/Cédula (JSON):', err); return res.status(500).json({ mensaje: 'Error al eliminar el cliente.', error: err.message }); } if (result.affectedRows === 0) { - return res.status(404).json({ mensaje: 'Cliente no encontrado para eliminar.' }); + return res.status(404).json({ mensaje: 'Cliente no encontrado para eliminar con ese RUC/Cédula.' }); } res.json({ mensaje: 'Cliente eliminado exitosamente.' }); }); @@ -485,5 +489,23 @@ controlador.eliminarClienteJson = (req, res) => { }; +// --- Funciones de consulta existentes (mantener) --- +controlador.app_pedidos_clientes = (req, res) => { + const consulta = `%${req.query.consulta}%`; + req.getConnection((err, conn) => { + if (err) { + return res.status(500).json({ mensaje: 'Error de conexión', error: err.message }); + } + // Incluir client_id en la selección + conn.query(`SELECT client_id, client_rucCed,client_nombre,client_direccion,client_celular,client_email FROM clientes WHERE client_nombre like ? or client_rucCed like ?`, [consulta, consulta], (err, rows) => { + if (err) { + console.error('Error en app_pedidos_clientes:', err); + return res.status(500).json({ mensaje: 'Error al consultar clientes.', error: err.message }); + } + res.json(rows); + }); + }); +}; + module.exports = controlador; diff --git a/src/rutas/rt_clientes.js b/src/rutas/rt_clientes.js index 8f2611e..91cf2ee 100644 --- a/src/rutas/rt_clientes.js +++ b/src/rutas/rt_clientes.js @@ -34,14 +34,14 @@ rutas.get('/busquedaSRI/', controladorClientes.buscarCli_sri);//API consulta cli rutas.get('/api_consultaClientes/', controladorClientes.api_consultaCliente);//API consulta clientes // --- NUEVAS RUTAS RESTful para CLIENTES (para el frontend Vue) --- -// Obtener un cliente por su ID (para EditarCliente.vue) -rutas.get('/api/clientes/:client_id', controladorClientes.obtenerClienteJsonPorId); // Nuevo endpoint RESTful GET +// Obtener un cliente por su client_rucCed (para EditarCliente.vue) +rutas.get('/api/clientes/:client_rucCed', controladorClientes.obtenerClienteJsonPorId); // Nuevo endpoint RESTful GET // Crear un nuevo cliente (para NuevoCliente.vue) rutas.post('/api/clientes', controladorClientes.crearClienteJson); // Nuevo endpoint RESTful POST // Actualizar un cliente existente (para EditarCliente.vue) -rutas.put('/api/clientes/:client_id', controladorClientes.actualizarClienteJson); // Nuevo endpoint RESTful PUT +rutas.put('/api/clientes/:client_rucCed', controladorClientes.actualizarClienteJson); // Nuevo endpoint RESTful PUT // Eliminar un cliente (para ListaClientes.vue) -rutas.delete('/api/clientes/:client_id', controladorClientes.eliminarClienteJson); // Nuevo endpoint RESTful DELETE +rutas.delete('/api/clientes/:client_rucCed', controladorClientes.eliminarClienteJson); // Nuevo endpoint RESTful DELETE // --- Rutas RESTful para TIPOS de Membresías (tabla 'clientes_membresias') --- // Estas rutas apuntarán al nuevo controlador_Membresias