69 lines
2.3 KiB
JavaScript
69 lines
2.3 KiB
JavaScript
const moment = require('moment');
|
|
const fs = require('fs');
|
|
const { validarNumeroEntero, validarNumero } = require('../../helper/validar');
|
|
const { eliminarArchivo } = require('../../helper/helper');
|
|
const gmail = require('../../helper/gmail');
|
|
const correoInscripciones = require('../../helper/correo');
|
|
const dbPath = '../../db/tablas';
|
|
const Inscripcion = require(`${dbPath}/Inscripcion`);
|
|
|
|
const inscripcion = async (body, file) => {
|
|
const ahora = moment();
|
|
const idUsuario = validarNumeroEntero(body.idUsuario, 'id Usuario', true);
|
|
const idArea = validarNumeroEntero(body.idArea, 'id Area', true);
|
|
const monto = validarNumero(body.monto, 'monto', true);
|
|
const folio = body.folio;
|
|
|
|
let correo = {};
|
|
let email = '';
|
|
|
|
return Inscripcion.findOne({
|
|
where: { folio, cancelacion: 0 },
|
|
})
|
|
.then((res) => {
|
|
if (res) throw new Error('Este folio ya esta registrado');
|
|
return Inscripcion.findOne({
|
|
where: { idUsuario, idArea, cancelacion: 0 },
|
|
}).then((res) => {
|
|
if (res) throw new Error('Ya estas registrado en esta área');
|
|
email = `${body.numeroCuenta}@pcpuma.acatlan.unam.mx`;
|
|
correo = correoInscripciones();
|
|
if (file && folio && body.fechaTicket) {
|
|
return Inscripcion.create({
|
|
idUsuario,
|
|
idArea,
|
|
folio,
|
|
monto,
|
|
hizoPago: true,
|
|
rutaTicket: file.path,
|
|
extension: file.mimetype.split('/')[1],
|
|
fechaInscripcion: ahora.format(),
|
|
fechaTicket: body.fechaTicket,
|
|
});
|
|
} else {
|
|
return Inscripcion.create({
|
|
idUsuario,
|
|
idArea,
|
|
hizoPago: false,
|
|
fechaInscripcion: ahora.format(),
|
|
});
|
|
}
|
|
});
|
|
})
|
|
.then((res) => {
|
|
if (file)
|
|
fs.renameSync(file.path, file.path + '.' + file.mimetype.split('/')[1]);
|
|
return gmail(correo.subject, email, correo.msj);
|
|
})
|
|
.then((res) => ({
|
|
message:
|
|
'Tu inscripción está sujeta a validación, en caso de no ser correcta o veraz el servicio será suspendido. Por favor revisa tu correo de PCPUMA para confirmar tu registro.',
|
|
}))
|
|
.catch((err) => {
|
|
if (file) eliminarArchivo(file.path);
|
|
throw new Error('No es posible realizar esta inscripción. ' + err);
|
|
});
|
|
};
|
|
|
|
module.exports = inscripcion;
|