const controlador = {}; //const axios = require('axios').default; controlador.verClientesJsonApp = (req, res) => { req.getConnection((err, conn) => { conn.query('SELECT client_rucCed, client_nombre, client_direccion, client_celular, client_email FROM clientes order by client_id DESC LIMIT 100', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) if (err) { res.json(err); //next(err); } //console.log(rows); var client = { Clientes: rows }; res.json(client); //res.render('clientesV',{ data:rows }); }); //conn.end(); }); }; controlador.ver = (req, res) => { req.getConnection((err, conn) => { conn.query('SELECT * FROM clientes order by client_id DESC LIMIT 50', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) if (err) { res.json(err); //next(err); } //console.log(rows); res.render('clientesV', { data: rows }); }); }); }; controlador.verClientJson = (req, res) => { console.log(req.params); const idCl = req.params.client_rucCed; req.getConnection((err, conn) => { conn.query('SELECT * FROM clientes WHERE client_rucCed = ?', [idCl], (err, rows) => { res.json(rows); //res.render('clientesV',{ data:rows }); }); }); }; controlador.verClientJsonPost = (req, res) => { console.log(req.body);//requerimiento const dato = req.body; res.send('working...'); res.redirect("/"); //const idCl = req.params.client_rucCed; /*req.getConnection((err, conn) => { conn.query('SELECT * FROM clientes WHERE client_rucCed = ?',[dato],(err,rows)=>{ res.json(rows); //res.render('clientesV',{ data:rows }); }); });*/ }; controlador.verClientForm = (req, res) => { //console.log(req.params); //const idCl = req.params.client_rucCed; const { client_rucCed } = req.params; req.getConnection((err, conn) => { conn.query('SELECT * FROM clientes WHERE client_rucCed = ?', [client_rucCed], (err, rows) => { if (err) { res.json(err); //next(err); } console.log(rows); res.render('clientesV', { data: rows }); }); }); }; //***Nuevos Clientes***// controlador.verFormNclientes = (req, res) => { console.log('form nuevo cliente'); res.render('clienteNuevo'); }; controlador.guardaCliente = (req, res) => { console.log(req.body); const data = req.body; req.getConnection((err, conn) => { conn.query('INSERT INTO clientes set ?', [data], (err, rows) => { if (err) { next(res.json(err)); } else { console.log(rows); //res.send('working...'); res.redirect('/clientes');//redireciona a la ruta inical de la app } });//set ? => data }); }; controlador.VerClienteA_Modificar = (req, res) => { const { client_id } = req.params; req.getConnection((err, conn) => { conn.query('SELECT * FROM clientes WHERE client_id = ?', [client_id], (err, rows) => { console.log(rows); res.render('clientesEdit', { data: rows[0] }); }); }); }; controlador.modificaCliente = (req, res) => { const { client_id } = req.params; const nCliente = req.body; req.getConnection((err, conn) => { conn.query('UPDATE clientes SET ? WHERE client_id = ?', [nCliente, client_id], (err, rows) => { console.log(rows); res.redirect("/"); //res.render('clientesEdit',{ data: rows[0] }); }); }); }; controlador.eliminarCliente = (req, res) => { //console.log(req.params.client_id); //const id = req.params.client_id; const { client_id } = req.params; //res.send('Eliminar '); req.getConnection((err, conn) => { conn.query('DELETE FROM clientes WHERE client_id=?', [client_id], (err, rows) => { res.redirect('/');//redireciona a la ruta inical de la app }); }); } /**** Listar miembros *****/ controlador.listarMiembros = (req, res) => { req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query('SELECT * FROM miembros ORDER BY nombre ASC', (err, miembros) => { if (err) { return res.status(500).json({ error: 'Error al consultar miembros' }); } res.json(miembros); }); }); }; /**** Obtener miembro para edición (ahora vía /api/miembros/:id) *****/ controlador.editarMiembro = (req, res) => { const { id } = req.params; // *** MODIFICADO: id ahora viene de req.params *** req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query('SELECT * FROM miembros WHERE id = ?', [id], (err, miembro) => { if (err) { return res.status(500).json({ error: 'Error al consultar miembro' }); } if (miembro.length === 0) { return res.status(404).json({ error: 'Miembro no encontrado' }); } res.json(miembro[0]); }); }); }; /**** Guardar/Crear nuevo miembro (vía POST /api/miembros) *****/ controlador.guardarMiembro = (req, res) => { const miembro = req.body; // Obtener los datos del miembro desde el cuerpo de la solicitud req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query('INSERT INTO miembros SET ?', miembro, (err, result) => { if (err) { return res.status(500).json({ error: 'Error al guardar miembro' }); } res.status(201).json({ id: result.insertId, ...miembro, message: 'Miembro creado exitosamente' }); // 201 Created }); }); }; /**** Actualizar miembro existente (vía PUT /api/miembros/:id) *****/ controlador.actualizarMiembro = (req, res) => { const { id } = req.params; // *** MODIFICADO: id ahora viene de req.params *** const miembroActualizado = req.body; // Obtener los datos actualizados del miembro desde el cuerpo de la solicitud req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query('UPDATE miembros SET ? WHERE id = ?', [miembroActualizado, id], (err, result) => { if (err) { return res.status(500).json({ error: 'Error al actualizar miembro' }); } if (result.affectedRows === 0) { return res.status(404).json({ error: 'Miembro no encontrado' }); } res.json({ message: 'Miembro actualizado exitosamente' }); }); }); }; /**** Eliminar miembro (vía DELETE /api/miembros/:id) *****/ controlador.eliminarMiembro = (req, res) => { const { id } = req.params; // *** MODIFICADO: id ahora viene de req.params *** req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query('DELETE FROM miembros WHERE id = ?', [id], (err, result) => { if (err) { return res.status(500).json({ error: 'Error al eliminar miembro' }); } if (result.affectedRows === 0) { return res.status(404).json({ error: 'Miembro no encontrado' }); } res.json({ message: 'Miembro eliminado exitosamente' }); }); }); }; /** * controlador para obtener las ciudades de la base de datos * @param {*} req * @param {*} res */ controlador.obtenerCiudades = (req, res) => { req.getConnection((err, conn) => { if (err) { return res.status(500).json({ error: 'Error de conexión' }); } conn.query( 'SELECT id_ciudad, nombre, perteneceA FROM localizacion_ciudad ORDER BY nombre ASC', (err, ciudades) => { if (err) { return res.status(500).json({ error: 'Error al consultar ciudades' }); } res.json(ciudades); } ); }); }; //********* CONSULTA CLIENTES APP-SIGMA********// controlador.app_pedidos_clientes = (req, res) => { const consulta = "%" + req.query.consulta + "%"; //let data = req.stringify; console.log(req.query); //const codItem = req.params.consulta; req.getConnection((err, conn) => { //codigo_prdcto //conn.query('SELECT codigo_prdcto,detalle_prdcto,describe_prdcto FROM productos WHERE detalle_prdcto like ? or describe_prdcto like ?',[item,item],(err,rows)=>{ conn.query(`SELECT client_rucCed,client_nombre,client_direccion,client_celular,client_email FROM clientes WHERE client_nombre like ? or client_rucCed like ?`, [consulta, consulta], (err, rows) => { //res.json(rows); res.json(rows); console.log(err); //res.render('clientesV',{ data:rows }); }); }); }; //CONSULTA CLIENTE CLOUD C.I-RUC => ruta:/busquedaSRI var data_url0 = 'http://www.ecuadorlegalonline.com/modulo/sri/consulta-ruc/ruc.api.php'; var data_url1 = "https://siax-system.net/app/clientes_cloud.php"; var data_url2 = "http://sheyla2.dyndns.info/SRI/SRI.php"; var data_url3 = "http://192.168.10.100:8000/test_post"; var arrayUrl = [ "http://www.ecuadorlegalonline.com/modulo/sri/consulta-ruc/ruc.api.php", "https://siax-system.net/api/clientes_cloud.php", "http://sheyla2.dyndns.info/SRI/SRI.php", "http://192.168.10.100:8000/test_post", "solo testing" ]; controlador.buscarCli_sri = (req, res) => { var idCli = req.query.ID_CLIENTE; console.log(`Peticion => Consulta RUC: ${idCli}`); let selc = 1; switch (selc) { case 0: fetch(arrayUrl[selc] + "?ruc=" + idCli, { method: 'POST', }) .then(resp => resp.text()) // Si esperas JSON, usa .json() en su lugar .then(data => { // Aquí puedes usar la respuesta real si lo deseas: console.log(data); const json = { nombre: "NOMBRE", empresa: "empresa", direccion: "Santo Domingo" }; const consulta = { "resp_consulta": json }; res.json(json); }) .catch(error => { console.error("Error al hacer fetch:", error); res.status(500).json({ error: 'Error al consultar servicio remoto' }); }); break; case 1: fetch(arrayUrl[selc] + "?ID_CLIENTE=" + idCli, { method: 'POST', }) .then(function (resp_sri) { return resp_sri.json(); // Parsea la respuesta como JSON }) .then(function (data) { console.log(data); // Asumiendo que 'res' es el objeto de respuesta de Express o similar, // puedes enviarle los datos directamente. // Si 'res' no está disponible en este contexto, necesitarás ajustar esta línea. // Por ejemplo, si estás en el lado del cliente, solo necesitarías 'console.log(data)'. res.json(data); }) .catch(function (error) { console.error('Hubo un problema con la petición Fetch:', error); }); break; case 2: fetch(arrayUrl[selc] + "?ruc=" + idCli, { method: 'POST', // fetch por defecto es GET, así que especificamos POST }) .then(function (resp_sri) { return resp_sri.text(); // Usamos .text() porque la respuesta se va a dividir por '***' }) .then(function (data_toArray) { console.log(data_toArray); let arr = data_toArray.split('***'); console.log(arr); var obj_json = { nombre: arr[1], empresa: arr[2], direccion: arr[9] }; res.json(obj_json); // Enviamos el JSON al cliente }) .catch(function (error) { console.error('Hubo un problema con la petición Fetch:', error); // Podrías enviar un error al cliente si 'res' está disponible // res.status(500).send('Error en la consulta'); }); break; case 4: var json = { nombre: "NOMBRE", empresa: "empresa", direccion: "Santo Domingo" }; var consulta = { "resp_consulta": json }; res.json(json); break; default: } // conectarme a SRI FALSO /*axios.post(data_url,{ data: { func:'GETDATA', ruc:numeroruc } }).then(function(res) { console.log(res.data); });*/ } controlador.api_consultaCliente = (req, res) => { //ejemplo de consumo api: http://localhost:3001/api_consultaClientes?id=0701637498001 var idCli = req.query.id; //console.log(req.query.id); console.log(`Peticion => Consulta ID: ${idCli}`); req.getConnection((err, conn) => { conn.query('SELECT client_nombre as nombre,client_razonSocial as nombre_comercial,client_Ciudad as ciudad,client_direccion as direccion,IFNULL(client_celular,client_telefono) as telefono,client_email as email FROM clientes WHERE client_rucCed = ?', [idCli], (err, rows) => { //conn.query('SELECT * FROM clientes WHERE client_rucCed = ?',[idCli],(err,rows)=>{ if (rows.length > 0) { console.log("Encontrado en Servidor Local:"); res.json(rows); } else { fetch(arrayUrl[1] + "?ID_CLIENTE=" + idCli, { method: 'POST', // Especificamos el método POST }) .then(function (resp_sri) { // Si esperamos un array de objetos JSON, usamos .json() return resp_sri.json(); }) .then(function (resp) { console.log("Encontrado en Servidor SRI:"); console.log(resp); if (resp.length > 0) { var obj_json = { nombre: resp[0].CLI_NOMBRE, nombre_comercial: resp[0].CLI_NOMBRE, // Se mantiene si es el mismo valor direccion: resp[0].CLI_DIRECCION, ciudad: "", // Este campo parece venir vacío, se mantiene telefono: resp[0].CLI_TELEFONOS, email: resp[0].CLI_EMAIL }; res.json([obj_json]); // Enviamos un array con el objeto JSON } else { res.json({ "RESP": "DATA NO ENCONTRADA" }); // La línea comentada de Axios que hacía otra petición sin efecto se omite aquí. } }) .catch(function (err) { console.error("Hubo un error con la petición Fetch:", err); // Puedes enviar un error al cliente si lo consideras necesario, por ejemplo: // res.status(500).json({ "RESP": "ERROR EN EL SERVIDOR" }); }); } }); }); } /*async function consulta_clientes(idCli) { if (false) { axios.post(arrayUrl[1] + "?ID_CLIENTE=" + idCli) .then(function (resp_sri) { console.log("Encontrado en Servidor SRI:"); console.log(resp_sri.data); var data_toArray = resp_sri.data; let arr = data_toArray.split('***'); //console.log(arr); var obj_json = { nombre: arr[1], nombre_comercial: arr[2], direccion: arr[5], telefono: "", email: "" }; console.log(obj_json); res.json(obj_json); }).catch(function (err) { console.log(err); }); } }*/ module.exports = controlador;