Files
inscripciones_api/server/controller/Usuario/inscripcionUsuario.js
T
2022-05-16 22:39:26 -05:00

92 lines
2.8 KiB
JavaScript

const moment = require('moment');
const fs = require('fs');
const {
usuarioInscrito,
agregarRecibo,
agregarDetalleServicio,
} = require('../../config/mariadb.conf');
const {
validarNumeroEntero,
validarNumero,
validarNumeroCuenta,
} = 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 numeroCuenta = validarNumeroCuenta(
body.numeroCuenta,
'numero de cuenta',
true
);
const idArea = validarNumeroEntero(body.idArea, 'id Area', true);
const monto = validarNumero(body.monto, 'monto', true);
const folio = validarNumero(body.folio, 'folio', true, 6);
const fechaTicket = body.fechaTicket;
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 = `${numeroCuenta}@pcpuma.acatlan.unam.mx`;
correo = correoInscripciones();
if (file && folio && fechaTicket) {
return Inscripcion.create({
idUsuario,
idArea,
folio,
monto,
hizoPago: true,
rutaTicket: file.path,
extension: file.mimetype.split('/')[1],
fechaInscripcion: ahora.format(),
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]);
usuarioInscrito(numeroCuenta, idArea);
agregarRecibo(
folio,
monto,
moment(fechaTicket).format('L'),
numeroCuenta
);
agregarDetalleServicio(monto, numeroCuenta);
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;