Files
inscripciones_api/server/controller/Usuario/inscripcionUsuario.js
T
2022-07-29 13:51:48 -05:00

78 lines
2.5 KiB
JavaScript

const moment = require('moment');
const fs = require('fs');
const {
validarNumeroEntero,
validarNumero,
validarNumeroCuenta,
} = require('../../helper/validar');
const { eliminarArchivo } = require('../../helper/helper');
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;
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');
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]);
agregarRecibo(
folio,
monto,
moment(fechaTicket).format('L'),
numeroCuenta
);
agregarDetalleServicio(monto, numeroCuenta);
})
.then((res) => ({
message: `Tu inscripción está sujeta a validación por parte de un operador de CEDETEC, en caso de no ser correcta o veraz el servicio será suspendido. Por favor ingresa a <a href="https://kalinga.acatlan.unam.mx/cedetec/" target="_blank">Kalinga</a> para confirmar tu inscripción`,
}))
.catch((err) => {
if (file) eliminarArchivo(file.path);
throw new Error('No es posible realizar esta inscripción. ' + err);
});
};
module.exports = inscripcion;