diff --git a/Dockerfile b/Dockerfile index d94364d..ffc0e26 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ COPY package*.json ./ RUN npm install # Copia el código fuente de la aplicación -COPY . . +COPY . . # Expone el puerto que la app usará EXPOSE 3000 diff --git a/server/controller/CuestionarioAlumno/nuevo.js b/server/controller/CuestionarioAlumno/nuevo.js index 79806f8..8252432 100644 --- a/server/controller/CuestionarioAlumno/nuevo.js +++ b/server/controller/CuestionarioAlumno/nuevo.js @@ -255,13 +255,29 @@ console.log("datos a registrar en la tabla cuestionarioAlumno2", { ...body, idC let respuestasRegistradas = await CuestionarioAlumno2.create({ ...body, idCuestionario: cuestionarioRegistro.idCuestionario }); console.log('despues de registrar cuestionario', respuestasRegistradas); - - console.log('cuestionario registrado', cuestionarioRegistro); + + + + console.log('agregar el id a la tabla servicio, esta validado en el front'); + + let resX = await Servicio.update( + { idCuestionarioAlumno2: respuestasRegistradas.idCuestionarioAlumno2}, + { where: { idServicio } } + ) + + console.log('despues de registrar el id en la tabla servicio', resX); + + + return cuestionarioRegistro; }) + + .then((res) => validar.validarPreTermino(idServicio)) + + .then((res) => ({ message: `Se guardaron tus respuestas correctamente. ${res}`, })); diff --git a/server/controller/CuestionarioPrograma/nuevo.js b/server/controller/CuestionarioPrograma/nuevo.js index d6125c3..ef6c554 100644 --- a/server/controller/CuestionarioPrograma/nuevo.js +++ b/server/controller/CuestionarioPrograma/nuevo.js @@ -155,7 +155,7 @@ const nuevo = async (body) => { let cuestionarioRegistro = await Cuestionario.create({ idServicio, - idCuestionarioPrograma: respuestasRegistradas.idCuestionarioPrograma, + //idCuestionarioPrograma: respuestasRegistradas.idCuestionarioPrograma, version: '2', dirigidoA: 'programas', titulo: 'Cuestionario de programa v2', @@ -180,9 +180,26 @@ const nuevo = async (body) => { // si el cuestionario ya existe solo hay que actualizar el id de cuestionarioprograma o alumno + console.log("registrar id en servicio en cuestionario 2"); + + let x = await Servicio.update( + { idCuestionarioPrograma2: respuestasRegistradas.idCuestionarioPrograma2 }, + { where: { idServicio } } + ) + + console.log(x); + + + + + + return cuestionarioRegistro; }) + .then((res) => validar.validarPreTermino(idServicio)) + + .then((res) => ({ message: `Se guardaron tus respuestas correctamente. ${res}`, })); diff --git a/server/controller/Servicio/admin.js b/server/controller/Servicio/admin.js index 30d632f..380be7f 100644 --- a/server/controller/Servicio/admin.js +++ b/server/controller/Servicio/admin.js @@ -56,7 +56,9 @@ const admin = async (body) => { 'vistoBuenoAcatlan', 'createdAt', 'idCuestionarioAlumno', + 'idCuestionarioAlumno2', 'idCuestionarioPrograma', + 'idCuestionarioPrograma2' ], }).then((res) => { if (!res) throw new Error('No existe este servicio social.'); diff --git a/server/controller/Servicio/alumno.js b/server/controller/Servicio/alumno.js index 9c19a31..e4f1a23 100644 --- a/server/controller/Servicio/alumno.js +++ b/server/controller/Servicio/alumno.js @@ -46,6 +46,7 @@ const alumno = async (body) => { 'profesor', 'createdAt', 'idCuestionarioAlumno', + 'idCuestionarioAlumno2' ], }); }) diff --git a/server/controller/Servicio/cartaTermino.js b/server/controller/Servicio/cartaTermino.js index 6153f0c..5df792f 100644 --- a/server/controller/Servicio/cartaTermino.js +++ b/server/controller/Servicio/cartaTermino.js @@ -24,12 +24,14 @@ const cartaTermino = async (body, file) => { switch (res.idStatus) { case 4: case 8: - return drive.uploadFile( + return drive.uploadFile( path, `Carta_Termino.pdf`, 'application/pdf', res.carpeta - ); + ); + //return "carta de termino" + case 1: case 2: case 3: diff --git a/server/controller/Servicio/informeGlobal.js b/server/controller/Servicio/informeGlobal.js index 7d7d158..32eb772 100644 --- a/server/controller/Servicio/informeGlobal.js +++ b/server/controller/Servicio/informeGlobal.js @@ -24,12 +24,13 @@ const informeGlobal = async (body, file) => { switch (res.idStatus) { case 4: case 9: - return drive.uploadFile( + return drive.uploadFile( path, `Informe_Global.pdf`, 'application/pdf', res.carpeta - ); + ); + // return "informe global" case 1: case 2: case 3: diff --git a/server/controller/Servicio/nuevo.js b/server/controller/Servicio/nuevo.js index 7a9520e..c2b5f34 100644 --- a/server/controller/Servicio/nuevo.js +++ b/server/controller/Servicio/nuevo.js @@ -79,7 +79,7 @@ const nuevo = async (body, file) => { .then((servicio) => { let carpeta = ''; - drive + drive .mkDir(numeroCuenta) .then((res) => { carpeta = res; @@ -95,7 +95,7 @@ const nuevo = async (body, file) => { { carpeta, cartaAceptacion: res }, { where: { idServicio: servicio.idServicio } } ) - ); + ); return { message: `Se Pre-Registro correctamente a este alumno.` }; }); }; diff --git a/server/controller/Servicio/registro.js b/server/controller/Servicio/registro.js index 11f5d16..05677dd 100644 --- a/server/controller/Servicio/registro.js +++ b/server/controller/Servicio/registro.js @@ -12,7 +12,9 @@ const registro = async (body) => { body.idServicio, 'id servicio' ); - const password = encriptar.generarPassword(); + //const password = encriptar.generarPassword(); // esta genera la contraseña + let pass = 'qwertyui' + const password = pass //encriptar.encriptar(pass) let correo = {}; let idUsuario; @@ -58,6 +60,7 @@ const registro = async (body) => { .then((res) => ({ message: 'Se cambio de estatus correctamente y se envio un correo al alumno con sus credenciales.', + pass })); }; diff --git a/server/controller/Servicio/registroValidado.js b/server/controller/Servicio/registroValidado.js index 0dcadfb..93d7bde 100644 --- a/server/controller/Servicio/registroValidado.js +++ b/server/controller/Servicio/registroValidado.js @@ -78,13 +78,19 @@ const registroValidado = async (body) => { gmail(correoResponsable.subject, emailResponsable, correoResponsable.msj) ) .then((res) => - Servicio.update( + { + + let tempStatus = 3 + if (process.env.MODE == "pruebas") tempStatus = 4 + + return Servicio.update( // Producción - { idStatus: 3, direccion, telefono, fechaNacimiento }, + // { idStatus: 3, direccion, telefono, fechaNacimiento }, // Pruebas - // { idStatus: 4, direccion, telefono, fechaNacimiento }, + { idStatus: tempStatus, direccion, telefono, fechaNacimiento }, { where: { idServicio } } ) + } ) .then((res) => ({ message: 'Haz terminado el registro de tu Servicio Social correctamente.', diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index 54139ae..ff70814 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -57,6 +57,7 @@ const serviciosResponsable = async (body) => { 'cartaTermino', 'createdAt', 'idCuestionarioPrograma', + 'idCuestionarioPrograma2' ], order: [['updatedAt', 'DESC']], limit: 25, diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index 5765aa9..f3dc8e4 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -36,24 +36,31 @@ const escolares = async (body) => { const numeroCuenta = validarNumeroCuenta(body.numeroCuenta); let alumno; - /* - return axios({ - method: 'post', - url: `${process.env.ESCOLARES}${numeroCuenta}`, - data: `${process.env.ESCOLARES_PASS}`, - }) - */ + let promise; - return new Promise((res) => { - res({ - data:{ - nombre:"nombre", - carrconst:"Carrera", - avance:"avance" - } + if(process.env.MODE == "pruebas"){ + promise = new Promise((res) => { + res({ + data:{ + nombre:"nombre", + carrconst:"Carrera", + avance:"80" + } + }) }) - }) + } + else{ + promise = axios({ + method: 'post', + url: `${process.env.ESCOLARES}${numeroCuenta}`, + data: `${process.env.ESCOLARES_PASS}`, + }) + + } + + return promise + .then((res) => { if (!res.data.nombre || !res.data.carrconst || !res.data.avance) diff --git a/server/db/tablas/Cuestionario.js b/server/db/tablas/Cuestionario.js index a849371..36e5a06 100644 --- a/server/db/tablas/Cuestionario.js +++ b/server/db/tablas/Cuestionario.js @@ -35,7 +35,7 @@ Cuestionario.init( } ); -Cuestionario.belongsTo(Servicio, { foreignKey: 'idServicio' }); +/* Cuestionario.belongsTo(Servicio, { foreignKey: 'idServicio' }); Servicio.hasMany(Cuestionario, { foreignKey: 'idServicio' }); - + */ module.exports = Cuestionario; diff --git a/server/db/tablas/Servicio.js b/server/db/tablas/Servicio.js index 4f147c7..12f6852 100644 --- a/server/db/tablas/Servicio.js +++ b/server/db/tablas/Servicio.js @@ -7,6 +7,9 @@ const Status = require('./Status'); const CuestionarioAlumno = require('./CuestionarioAlumno'); const CuestionarioPrograma = require('./CuestionarioPrograma'); +const CuestionarioAlumno2 = require('./CuestionarioAlumno2'); +const CuestionarioPrograma2 = require('./CuestionarioPrograma2'); + class Servicio extends Model {} Servicio.init( { @@ -146,4 +149,26 @@ Servicio.belongsTo(CuestionarioPrograma, { }, }); + + + +Servicio.belongsTo(CuestionarioAlumno2, { + foreignKey: { + name: 'idCuestionarioAlumno2', + type: DataTypes.INTEGER, + allowNull: true, + defaultValue: null, + }, +}); + +Servicio.belongsTo(CuestionarioPrograma2, { + foreignKey: { + name: 'idCuestionarioPrograma2', + type: DataTypes.INTEGER, + allowNull: true, + defaultValue: null, + }, +}); + + module.exports = Servicio; diff --git a/server/helper/drive.js b/server/helper/drive.js index 0c84122..3025574 100644 --- a/server/helper/drive.js +++ b/server/helper/drive.js @@ -10,15 +10,34 @@ const { google } = require('googleapis'); // ['https://www.googleapis.com/auth/drive'] // ); -const loadCredentials = () => { +/* const loadCredentials = () => { try { const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); return google.auth.fromJSON(credenciales); } catch (err) { return null; } +}; */ + + +const loadCredentials = () => { + try { + const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); + credenciales.private_key = credenciales.private_key.replace(/\\n/g, '\n'); // Asegurar formato correcto + return new google.auth.JWT( + credenciales.client_email, + null, + credenciales.private_key, + ['https://www.googleapis.com/auth/drive'] + ); + } catch (err) { + console.error('❌ Error cargando credenciales:', err); + return null; + } }; + + const list = (pageToken) => { return new Promise(async (resolve, reject) => { // jwtClient.authorize((err, tokens) => { @@ -127,6 +146,12 @@ const mkDir = (name) => { requestBody, }, (err, res) => { + console.log(err); + console.log("variable res "); + + console.log(res); + + if (err) reject(err); resolve(res.data.id); } diff --git a/server/helper/gmail.js b/server/helper/gmail.js index 04ba66f..cb60784 100644 --- a/server/helper/gmail.js +++ b/server/helper/gmail.js @@ -6,16 +6,16 @@ const send = require('gmail-send')({ }); const gmail = (subject, to, text) => { - /* + return new Promise((resolve, reject) => { send({ subject, to, text }, (error, result, fullResult) => { if (error) reject(error); resolve(result); }); }); - */ + - return "envio de correo" + // return "envio de correo" }; diff --git a/server/helper/validar.js b/server/helper/validar.js index 1fa255d..702236a 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -178,15 +178,21 @@ const validarPreTermino = (idServicio) => { // validar el if + console.log("este es el id en la busqieda", idServicio); + + return Servicio.findOne({ where: { idServicio } }) .then((res) => { + + console.log("validando pre termino", res); + + if ( - res.idCuestionarioPrograma && - res.idCuestionarioAlumno && + (res.idCuestionarioPrograma || res.idCuestionarioPrograma2) && + (res.idCuestionarioAlumno || res.idCuestionarioAlumno2) && res.cartaTermino && res.informeGlobal - ) - return Servicio.update({ idStatus: 5 }, { where: { idServicio } }); + ) return Servicio.update({ idStatus: 5 }, { where: { idServicio } }); return false; }) .then((res) => diff --git a/server/routes/Status.js b/server/routes/Status.js index b09bd3b..f7f4910 100644 --- a/server/routes/Status.js +++ b/server/routes/Status.js @@ -5,6 +5,8 @@ const route = '/status'; const get = require('../controller/Status/get'); app.get(`${route}`, verificaToken, (req, res) => { + console.log("status"); + return get() .then((data) => { res.status(200).json(data); diff --git a/test.js b/test.js new file mode 100644 index 0000000..f3a5cfc --- /dev/null +++ b/test.js @@ -0,0 +1,22 @@ +const { google } = require('googleapis'); +const fs = require('fs'); + +const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); + +// Asegurar que la clave privada tiene los saltos de línea correctos +credenciales.private_key = credenciales.private_key.replace(/\\n/g, '\n'); + +const jwtClient = new google.auth.JWT( + credenciales.client_email, + null, + credenciales.private_key, + ['https://www.googleapis.com/auth/drive'] +); + +jwtClient.authorize((err, tokens) => { + if (err) { + console.error('❌ Error de autenticación:', err); + } else { + console.log('✅ Autenticación exitosa:', tokens); + } +}); diff --git a/test2.js b/test2.js new file mode 100644 index 0000000..1ae04c6 --- /dev/null +++ b/test2.js @@ -0,0 +1,28 @@ +const { google } = require('googleapis'); +const fs = require('fs'); + +const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); +credenciales.private_key = credenciales.private_key.replace(/\\n/g, '\n'); + +const jwtClient = new google.auth.JWT( + credenciales.client_email, + null, + credenciales.private_key, + ['https://www.googleapis.com/auth/drive'] +); + +const drive = google.drive({ version: 'v3', auth: jwtClient }); + +async function listFiles() { + try { + const res = await drive.files.list({ + pageSize: 10, + fields: 'files(id, name)', + }); + console.log('✅ Archivos en Drive:', res.data.files); + } catch (error) { + console.error('❌ Error al listar archivos:', error); + } +} + +listFiles(); diff --git a/test3.js b/test3.js new file mode 100644 index 0000000..41f457c --- /dev/null +++ b/test3.js @@ -0,0 +1,35 @@ +const { google } = require('googleapis'); +const fs = require('fs'); + +const credenciales = JSON.parse(fs.readFileSync('./cred.json', 'utf8')); +credenciales.private_key = credenciales.private_key.replace(/\\n/g, '\n'); + +const jwtClient = new google.auth.JWT( + credenciales.client_email, + null, + credenciales.private_key, + ['https://www.googleapis.com/auth/drive'] +); + +const drive = google.drive({ version: 'v3', auth: jwtClient }); + +async function createFolder() { + try { + const fileMetadata = { + name: 'Nueva Carpeta', + mimeType: 'application/vnd.google-apps.folder', + parents: ['1VXTC9J3dnN7YGNwVxXa4Re4dsjFupLdf'], // Asegúrate de que este ID sea correcto + }; + + const folder = await drive.files.create({ + resource: fileMetadata, + fields: 'id', + }); + + console.log('✅ Carpeta creada con ID:', folder.data.id); + } catch (error) { + console.error('❌ Error al crear carpeta:', error); + } +} + +createFolder(); diff --git a/testing.sql b/testing.sql index e6fca41..6ea64d4 100644 --- a/testing.sql +++ b/testing.sql @@ -501,6 +501,19 @@ ALTER TABLE `cuestionario_alumno_2` ADD FOREIGN KEY (`idCuestionario`) REFERENCE ALTER TABLE `cuestionario_programa` ADD FOREIGN KEY (`idCuestionario`) REFERENCES `Cuestionario` (`idCuestionario`); ALTER TABLE `cuestionario_programa_2` ADD FOREIGN KEY (`idCuestionario`) REFERENCES `Cuestionario` (`idCuestionario`); + +-- agregar una columna de cuestionario 2 + +ALTER TABLE servicio ADD COLUMN idCuestionarioAlumno2 INT; +ALTER TABLE servicio ADD COLUMN idCuestionarioPrograma2 INT; + +ALTER TABLE `servicio` ADD FOREIGN KEY (`idCuestionarioAlumno2`) REFERENCES `cuestionario_alumno_2` (`idCuestionarioAlumno2`); +ALTER TABLE `servicio` ADD FOREIGN KEY (`idCuestionarioPrograma2`) REFERENCES `cuestionario_programa_2` (`idCuestionarioPrograma2`); + + + + + --ALTER TABLE `Cuestionario` --ADD FOREIGN KEY (`idCuestionarioAlumno`) REFERENCES `cuestionario_alumno_2` (`idCuestionarioAlumno2`); --ALTER TABLE `Cuestionario`