Files
inscripciones_api/server/controller/Usuario/inscripcionUsuario.js
T
2022-03-21 14:03:30 -06:00

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;