39 Commits

Author SHA1 Message Date
puma99 0c51bd1b35 rapido 2022-05-06 10:28:39 -05:00
puma99 0f8237a205 Merge branch 'master' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api 2022-05-06 09:34:25 -05:00
puma99 19f436b325 nuevo error 2022-05-06 09:34:14 -05:00
xXpuma99Xx 1fc4734079 cambio de descripcion error 2022-05-05 18:16:12 -05:00
xXpuma99Xx 173140257a todos los tipos carrito 2022-04-21 12:50:53 -05:00
puma99 8192645db6 pedir equipo busqueda de equipo organizar correctamente 2022-03-24 12:51:17 -06:00
puma99 2ec1584064 sin motivo por el momento 2022-03-22 14:02:36 -06:00
puma99 df96fc3f6a listo para producción 2022-03-22 12:42:59 -06:00
puma99 51851a500f correcciones 2022-03-22 11:42:41 -06:00
puma99 7d18612953 solo tabla motivos 2022-03-21 22:42:28 -06:00
puma99 ec27f5b542 tabla motivo 2022-03-21 22:38:51 -06:00
puma99 2809958203 tabla motivo 2022-03-21 22:35:47 -06:00
puma99 c04ca252df tabla motivo 2022-03-21 20:48:29 -06:00
puma99 b33deda664 carga masiva usuarios 2022-03-21 19:59:40 -06:00
xXpuma99Xx 9af53a7859 programas nuevos 2022-03-14 15:08:05 -06:00
puma99 1137eb5d91 login con carrrera 2022-03-08 12:35:08 -06:00
puma99 f303e5c869 programacion solamente 2022-03-07 16:14:05 -06:00
puma99 2dfbc7708b orden historial prestamo 2022-03-07 13:11:05 -06:00
puma99 9799336008 mejora reporte, string vacia si fecha no existe 2022-03-07 12:57:54 -06:00
puma99 96e5121119 laptops 2022-03-07 12:52:15 -06:00
puma99 02ec8c2b73 sin multa activo 2022-03-07 09:17:44 -06:00
puma99 2a8c990358 versión producción 2022-03-07 09:13:25 -06:00
puma99 387603650d formato al pasar fecahs en reporte 2022-03-07 09:07:41 -06:00
puma99 d63ca1e05c correcion funcion diario equipos 2022-03-07 07:28:31 -06:00
puma99 456967b036 todos los tipos de equipo 2022-03-03 12:00:34 -06:00
puma99 d5413a5fe8 pruebas 2022-02-27 21:08:58 -06:00
puma99 c4e233c696 Merge branch 'master' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api into dev 2022-02-27 21:08:10 -06:00
puma99 e1b0e21ed7 multa por usuario 2022-02-27 21:06:55 -06:00
puma99 5f5a0e9e28 distinto mensaje para sesion terminada 2022-02-27 16:07:58 -06:00
puma99 1d1461cf1b resetear prestado a false 2022-02-27 11:33:55 -06:00
puma99 7177449531 Merge branch 'master' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api 2022-02-23 13:28:40 -06:00
puma99 5aa6544e30 hisotirial 2022-02-23 13:28:32 -06:00
xXpuma99Xx 9741afc8ae sin horario 2022-02-22 21:35:07 -06:00
xXpuma99Xx 8599203a80 Merge branch 'dev' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api 2022-02-22 15:20:51 -06:00
xXpuma99Xx 48d882bbd2 listo equipos consecutivos 2022-02-22 15:16:46 -06:00
puma99 d2751a07f1 Merge branch 'dev' of https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api 2022-02-21 13:16:13 -06:00
xXpuma99Xx ee27a9db64 restrincciones 2022-02-20 23:53:10 -06:00
xXpuma99Xx 9c321c622f pruebas 2022-02-20 23:45:57 -06:00
puma99 70cc64a813 producción 2022-02-16 15:28:43 -06:00
28 changed files with 418 additions and 197 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
},
"repository": {
"type": "git",
"url": ""
"url": "https://repositorio.acatlan.unam.mx/CIDWA/pcpuma_acatlan_api.git"
},
"author": "",
"license": "ISC",
+1 -1
View File
@@ -29,7 +29,7 @@ const obtenerAlumno = async (numeroCuenta) => {
})
.catch((err) => {
conn.end();
throw new Error('Hubo un problema con el querry.' + err);
throw new Error('Hubo un problema, intenta más tarde.');
});
};
+1
View File
@@ -15,6 +15,7 @@ const equipos = async () =>
where: { idCarrito: res[i].idCarrito },
include: [{ model: Status }],
attributes: ['idEquipo', 'numeroSerie', 'numeroInventario', 'equipo'],
order: [['equipo', 'ASC']],
});
return res;
});
+9 -1
View File
@@ -2,6 +2,7 @@ const validar = require('../../helper/validar');
const dbPath = '../../db/tablas';
const Carrito = require(`${dbPath}/Carrito`);
const Equipo = require(`${dbPath}/Equipo`);
const Motivo = require(`${dbPath}/Motivo`);
const Programa = require(`${dbPath}/Programa`);
const Status = require(`${dbPath}/Status`);
@@ -20,14 +21,20 @@ const update = async (body) => {
const idPrograma = body.idPrograma
? validar.validarNumeroEntero(body.idPrograma, 'id programa', true)
: '';
const motivo = body.motivo
? validar.validarAlfanumerico(body.motivo, 'motivo', true, 500)
: '';
let update = {};
return Status.findOne({ where: { idStatus } })
.then((res) => {
if (idStatus) {
if (!res) throw new Error('No existe este status.');
if (!motivo)
throw new Error('No se mando el motivo de cambio de status.');
update.idStatus = idStatus;
}
return Carrito.findOne({ where: { idCarrito } });
})
.then((res) => {
@@ -46,8 +53,9 @@ const update = async (body) => {
throw new Error('No se envió nada para actualizar.');
return Equipo.findOne({ where: { idEquipo } });
})
.then((res) => {
.then(async (res) => {
if (!res) throw new Error('No existe este equipo.');
if (idStatus) await Motivo.create({ motivo, idEquipo, idStatus });
return Equipo.update(update, { where: { idEquipo } });
})
.then(() => ({ message: 'Se actualizó correctamente el equipo.' }));
@@ -0,0 +1,27 @@
const { validarNumeroEntero } = require('../../helper/validar');
const dbPath = '../../db/tablas';
const Motivo = require(`${dbPath}/Motivo`);
const Equipo = require(`${dbPath}/Equipo`);
const Status = require(`${dbPath}/Status`);
const historialMotivosEquipo = async (body) => {
const pagina = validarNumeroEntero(body.pagina, 'página', false);
const idEquipo = validarNumeroEntero(body.idEquipo, 'id equipo', true);
return Motivo.findAndCountAll({
include: [
{
model: Equipo,
where: { idEquipo },
attributes: [],
},
{ model: Status },
],
attributes: ['idMotivo', 'motivo'],
limit: 25,
offset: 25 * (pagina - 1),
order: [['idMotivo', 'DESC']],
});
};
module.exports = historialMotivosEquipo;
@@ -18,24 +18,6 @@ const historialMultasUsuario = async (body) => {
{
model: Prestamo,
where: { idUsuario },
// include: [
// {
// model: Equipo,
// include: [
// {
// model: Carrito,
// include: [{ model: Modulo }, { model: TipoCarrito }],
// attributes: ['idCarrito', 'carrito'],
// },
// ],
// attributes: [
// 'idEquipo',
// 'numeroSerie',
// 'numeroInventario',
// 'equipo',
// ],
// },
// ],
attributes: ['idPrestamo'],
},
{
-1
View File
@@ -42,7 +42,6 @@ const multar = async (body) => {
})
.then((res) => {
if (!res) throw new Error('No existe esta infracción.');
// Checar si tiene una multa activa, agragar días a multa
gravedad = res.gravedad;
return Prestamo.findOne({
where: { idPrestamo },
+27
View File
@@ -0,0 +1,27 @@
const validar = require('../../helper/validar');
const dbPath = '../../db/tablas';
const Multa = require(`${dbPath}/Multa`);
const Usuario = require(`${dbPath}/Usuario`);
const multar = async (body) => {
const idUsuario = validar.validarNumeroEntero(
body.idUsuario,
'id usuario',
true
);
return Usuario.findOne({ where: { idUsuario } })
.then((res) => {
if (!res) throw new Error('No existe este usuario.');
return Multa.findAll({ where: { idUsuario, activo: true } });
})
.then((res) => {
if (res.length > 2)
throw new Error(
'El usuario tiene más de 2 multas activas, favor de notificar a un operador sobre este problema.'
);
return res;
});
};
module.exports = multar;
+16 -5
View File
@@ -1,13 +1,23 @@
const io = require('../../socket');
const { validarNumeroEntero } = require('../../helper/validar');
const validar = require('../../helper/validar');
const dbPath = '../../db/tablas';
const Equipo = require(`${dbPath}/Equipo`);
const Motivo = require(`${dbPath}/Motivo`);
const Operador = require(`${dbPath}/Operador`);
const Prestamo = require(`${dbPath}/Prestamo`);
const cancelarOperador = async (body) => {
const idPrestamo = validarNumeroEntero(body.idPrestamo, 'id préstamo', true);
const idOperador = validarNumeroEntero(body.idOperador, 'id operador', true);
const idPrestamo = validar.validarNumeroEntero(
body.idPrestamo,
'id préstamo',
true
);
const idOperador = validar.validarNumeroEntero(
body.idOperador,
'id operador',
true
);
const motivo = validar.validarAlfanumerico(body.motivo, 'motivo', true, 500);
let idUsuario = null;
return Operador.findOne({ where: { idOperador } })
@@ -15,15 +25,16 @@ const cancelarOperador = async (body) => {
if (!res) throw new Error('No existe este operador.');
return Prestamo.findOne({ where: { idPrestamo } });
})
.then((res) => {
.then(async (res) => {
if (!res) throw new Error('Este préstamo no existe.');
idUsuario = res.idUsuario;
if (!res.activo)
throw new Error(
'Este préstamo ya no esta activo, no se puede cancelar.'
);
await Motivo.create({ motivo, idEquipo: res.idEquipo, idStatus: 9 });
return Equipo.update(
{ idStatus: 4 },
{ idStatus: 9 },
{ where: { idEquipo: res.idEquipo } }
);
})
+7 -5
View File
@@ -50,11 +50,13 @@ const entregar = async (body) => {
'Ya pasó el tiempo límite para recoger el equipo de cómputo.'
);
});
// if (ahora > moment(`${ahora.format('YYYY-MM-DD')} 17:45`))
// update.horaFin = moment(`${ahora.format('YYYY-MM-DD')} 19:45`);
// else update.horaFin = ahora.add(2, 'h').format();
update.horaFin = ahora.add(2, 'h').format();
return Equipo.update({ idStatus: 2 }, { where: { idEquipo } });
if (ahora > moment(`${ahora.format('YYYY-MM-DD')} 17:45`))
update.horaFin = moment(`${ahora.format('YYYY-MM-DD')} 19:45`);
else update.horaFin = ahora.add(2, 'h').format();
return Equipo.update(
{ idStatus: 2, prestado: true },
{ where: { idEquipo } }
);
})
.then(() => Prestamo.update(update, { where: { idPrestamo } }))
.then(() =>
+1 -1
View File
@@ -92,9 +92,9 @@ const historial = async (body) => {
'regresoInmediato',
'createdAt',
],
order: [['idPrestamo', 'DESC']],
limit: 25,
offset: 25 * (pagina - 1),
order: [['createdAt', 'DESC']],
});
};
+53 -11
View File
@@ -30,14 +30,14 @@ const pedir = async (body) => {
let whereEquipo = { idStatus: 4 };
let idEquipo;
// if (ahora.day() === 6 || ahora.day() === 0)
// throw new Error(
// 'No se puede pedir un equipo de cómputo los días sabados y domingos.'
// );
// if (ahora > horaMax)
// throw new Error('Ya no se puede realizar un préstamo el día de hoy.');
// if (ahora < horaMin)
// throw new Error('Aún es muy temprano para realizar un préstamo.');
if (ahora.day() === 6 || ahora.day() === 0)
throw new Error(
'No se puede pedir un equipo de cómputo los días sabados y domingos.'
);
if (ahora > horaMax)
throw new Error('Ya no se puede realizar un préstamo el día de hoy.');
if (ahora < horaMin)
throw new Error('Aún es muy temprano para realizar un préstamo.');
return TipoCarrito.findOne({ where: { idTipoCarrito } })
.then((res) => {
if (!res) throw new Error('No existe este tipo de equipo.');
@@ -84,7 +84,7 @@ const pedir = async (body) => {
'Tienes un préstamo activo. No puedes solicitar otro equipo de cómputo.'
);
}
return Equipo.findOne({
return Equipo.count({
where: whereEquipo,
include: [
{
@@ -92,7 +92,49 @@ const pedir = async (body) => {
where: { idTipoCarrito, idModulo, activo: true },
},
],
order: [['updatedAt']],
});
})
.then((res) => {
if (res === 0)
throw new Error(
'No existe un equipo de cómputo con las características solicitadas. Intenta elegir otro tipo de equipo.'
);
return Equipo.count({
where: { ...whereEquipo, prestado: false },
include: [
{
model: Carrito,
where: { idTipoCarrito, idModulo, activo: true },
},
],
});
})
.then(async (res) => {
if (res === 0)
await Equipo.update(
{ prestado: false },
{
where: { ...whereEquipo, prestado: true },
include: [
{
model: Carrito,
where: { idTipoCarrito, idModulo, activo: true },
},
],
}
);
return Equipo.findOne({
where: { ...whereEquipo, prestado: false },
include: [
{
model: Carrito,
where: { idTipoCarrito, idModulo, activo: true },
},
],
order: [
['idCarrito', 'ASC'],
['equipo', 'ASC'],
],
});
})
.then((res) => {
@@ -110,7 +152,7 @@ const pedir = async (body) => {
idEquipo,
})
)
.then((res) => {
.then(() => {
io.getIO().emit('actualizar', { idUsuario });
return {
message:
+14 -6
View File
@@ -34,8 +34,8 @@ const reporte = async (body) => {
return Prestamo.findAll({
where: {
[Op.and]: [
{ createdAt: { [Op.gte]: inicio.add(-1, 'd').format() } },
{ createdAt: { [Op.lte]: fin.add(1, 'd').format() } },
{ createdAt: { [Op.gte]: inicio.format('YYYY-MM-DD') } },
{ createdAt: { [Op.lte]: fin.format('YYYY-MM-DD') } },
],
},
include: [
@@ -95,10 +95,18 @@ const reporte = async (body) => {
fecha: moment(res[i].createdAt).format('YYYY-MM-DD'),
hora: moment(res[i].createdAt).format('HH:mm'),
horaMaxRecoger: moment(res[i].horaMaxRecoger).format('HH:mm'),
horaInicio: moment(res[i].horaInicio).format('HH:mm'),
horaFin: moment(res[i].horaFin).format('HH:mm'),
fechaEntrega: moment(res[i].horaEntrega).format('YYYY-MM-DD'),
horaEntrega: moment(res[i].horaEntrega).format('HH:mm'),
horaInicio: res[i].horaInicio
? moment(res[i].horaInicio).format('HH:mm')
: '',
horaFin: res[i].horaFin
? moment(res[i].horaFin).format('HH:mm')
: '',
fechaEntrega: res[i].horaEntrega
? moment(res[i].horaEntrega).format('YYYY-MM-DD')
: '',
horaEntrega: res[i].horaEntrega
? moment(res[i].horaEntrega).format('HH:mm')
: '',
modulo: res[i].Equipo.Carrito.Modulo.modulo,
carrito: res[i].Equipo.Carrito.carrito,
equipo: res[i].Equipo.equipo,
+5 -1
View File
@@ -1,5 +1,9 @@
const { Op } = require('sequelize');
const Programa = require('../../db/tablas/Programa');
const get = async () => Programa.findAll();
const get = async () =>
Programa.findAll({
where: { [Op.or]: [{ idPrograma: 2 }, { idPrograma: 3 }] },
});
module.exports = get;
+1 -1
View File
@@ -1,5 +1,5 @@
const TipoCarrito = require('../../db/tablas/TipoCarrito');
const get = async () => TipoCarrito.findAll({ where: { idTipoCarrito: 1 } });
const get = async () => TipoCarrito.findAll();
module.exports = get;
+145
View File
@@ -0,0 +1,145 @@
const csv = require('csvtojson');
const helperPath = '../../helper';
const { validarObjetoVacio } = require(`${helperPath}/validar`);
const { eliminarArchivo } = require(`${helperPath}/helper`);
const dbPath = '../../db/tablas';
const Carrera = require(`${dbPath}/Carrera`);
const TipoUsuario = require(`${dbPath}/TipoUsuario`);
const Usuario = require(`${dbPath}/Usuario`);
const cargaMasiva = async (file) => {
const path = `server/uploads/${file}`;
const usuariosNuevos = [];
const usuariosUpdate = [];
const errores = [];
const avisos = [];
return csv()
.fromFile(path)
.then(async (usuarios) => {
for (let i = 0; i < usuarios.length; i++) {
const mensajeErrBase = `Se salto la linea ${i + 2} por:`;
if (
!usuarios[i].cuenta ||
!usuarios[i].apellidop ||
!usuarios[i].apellidom ||
!usuarios[i].nombrew ||
!usuarios[i].tipoUsuario
) {
if (!usuarios[i].cuenta)
errores.push(`${mensajeErrBase} falta variable cuenta.`);
if (!usuarios[i].apellidop)
errores.push(`${mensajeErrBase} falta variable apellidop.`);
if (!usuarios[i].apellidom)
errores.push(`${mensajeErrBase} falta variable apellidom.`);
if (!usuarios[i].nombrew)
errores.push(`${mensajeErrBase} falta variable nombrew.`);
if (!usuarios[i].tipoUsuario)
errores.push(`${mensajeErrBase} falta variable tipoUsuario.`);
continue;
}
const idTipoUsuario = await TipoUsuario.findOne({
where: { tipoUsuario: usuarios[i].tipoUsuario },
}).then((res) => {
if (!res) {
errores.push(`${mensajeErrBase} tipo de usuario no valido.`);
return null;
}
return res.idTipoUsuario;
});
let idCarrera = null;
if (!idTipoUsuario) continue;
if (idTipoUsuario != 3) {
if (!usuarios[i].nomplan) {
errores.push(`${mensajeErrBase} falta variable nomplan.`);
continue;
}
idCarrera = await Carrera.findOne({
where: { carrera: usuarios[i].nomplan },
})
.then((res) => {
if (!res) {
avisos.push(
`Se añadio el posgrado/la carrera ${usuarios[i].nomplan} al catálogo.`
);
return Carrera.create({ carrera: usuarios[i].nomplan });
}
return res;
})
.then((res) => res.idCarrera);
}
if (usuarios[i].cuenta.length === 8)
usuarios[i].cuenta = `0${usuarios[i].cuenta}`;
await Usuario.findOne({
where: { usuario: usuarios[i].cuenta },
include: [{ model: Carrera }],
}).then(async (res) => {
let usuario = res;
if (!usuario) {
const data = {
usuario: usuarios[i].cuenta,
nombre: `${usuarios[i].apellidop} ${usuarios[i].apellidom} ${usuarios[i].nombrew}`,
idTipoUsuario,
};
if (data.idTipoUsuario != 3) data.idCarrera = idCarrera;
await Usuario.create(data)
.then((res) =>
Usuario.findOne({
where: { idUsuario: res.idUsuario },
include: [{ model: Carrera }, { model: TipoUsuario }],
attributes: ['idUsuario', 'usuario', 'nombre'],
})
)
.then((res) => usuariosNuevos.push(res));
} else {
let update = {};
if (!usuario.activo) {
update.activo = true;
usuariosUpdate.push(
`La cuenta del usuario: ${usuario.usuario} fue activada.`
);
}
if (
usuario.Carrera &&
usuario.Carrera.carrera != usuarios[i].nomplan
) {
update.idCarrera = idCarrera;
usuariosUpdate.push(
`Se cambio la carrera del usuario: ${usuario.usuario} de ${usuario.Carrera.carrera} por ${usuarios[i].nomplan}.`
);
}
if (usuario.idTipoUsuario != idTipoUsuario) {
update.idTipoUsuario = idTipoUsuario;
usuariosUpdate.push(
`Se cambio el tipo de usuario del usuario: ${usuario.usuario} de ${usuario.TipoUsuario.tipoUsuario} por ${usuarios[i].tipoUsuario}.`
);
}
if (!validarObjetoVacio(update))
await Usuario.update(update, {
where: { idUsuario: usuario.idUsuario },
});
else
errores.push(
`${mensajeErrBase} no se mando nada para actualizar.`
);
}
});
}
return eliminarArchivo(path);
})
.then(() => ({
message: 'Se subió correctamente el archivo csv.',
usuariosNuevos,
usuariosUpdate,
errores,
avisos,
}));
};
module.exports = cargaMasiva;
@@ -1,126 +0,0 @@
const csv = require('csvtojson');
const helperPath = '../../helper';
const { validarObjetoVacio } = require(`${helperPath}/validar`);
const { eliminarArchivo } = require(`${helperPath}/helper`);
const dbPath = '../../db/tablas';
const Carrera = require(`${dbPath}/Carrera`);
const TipoUsuario = require(`${dbPath}/TipoUsuario`);
const Usuario = require(`${dbPath}/Usuario`);
const cargaMasiva = async (file) => {
const path = `server/uploads/${file}`;
const alumnosNuevos = [];
const alumnosUpdate = [];
const errores = [];
const avisos = [];
await csv()
.fromFile(path)
.then(async (alumnos) => {
for (let i = 0; i < alumnos.length; i++) {
if (alumnos[i].cuenta.length === 8)
alumnos[i].cuenta = '0' + alumnos[i].cuenta;
await Usuario.findOne({
where: { usuario: alumnos[i].cuenta },
include: [{ model: Carrera }],
}).then(async (res) => {
let usuario = res;
if (!usuario) {
await Carrera.findOne({
where: { carrera: alumnos[i].nomplan },
})
.then((res) => {
if (!res) {
avisos.push(
`Se añadio el posgrado ${alumnos[i].nomplan} al catalogo.`
);
return Carrera.create({ carrera: alumnos[i].nomplan });
}
return res;
})
.then((res) =>
Usuario.create({
usuario: alumnos[i].cuenta,
nombre: `${alumnos[i].apellidop} ${alumnos[i].apellidom} ${alumnos[i].nombrew}`,
idCarrera: res.idCarrera,
idTipoUsuario: 5,
})
)
.then((res) =>
Usuario.findOne({
where: { idUsuario: res.idUsuario },
include: [{ model: Carrera }, { model: TipoUsuario }],
})
)
.then((res) => {
alumnosNuevos.push({
idUsuario: res.idUsuario,
usuario: res.usuario,
nombre: res.nombre,
Carrera: {
idCarrera: res.Carrera.idCarrera,
carrera: res.Carrera.carrera,
},
TipoUsuario: {
idTipoUsuario: res.TipoUsuario.idTipoUsuario,
tipoUsuario: res.TipoUsuario.tipoUsuario,
},
});
});
} else {
let update = {};
if (!usuario.activo) {
update.activo = true;
alumnosUpdate.push(`El alumno ${usuario.usuario} fue activado.`);
}
if (usuario.Carrera.carrera != alumnos[i].nomplan) {
await Carrera.findOne({
where: { carrera: alumnos[i].nomplan },
})
.then((res) => {
if (!res) {
avisos.push(
`Se añadio el posgrado ${alumnos[i].nomplan} al catalogo.`
);
return Carrera.create({ carrera: alumnos[i].nomplan });
}
return res;
})
.then((res) => {
update.idCarrera = res.idCarrera;
alumnosUpdate.push(
`Se cambio la carrera del alumno ${usuario.usuario} de ${usuario.Carrera.carrera} por ${res.carrera}.`
);
});
}
if (usuario.idTipoUsuario === 3)
avisos.push(
`El alumno con id ${usuario.idUsuario} y numero de cuenta ${usuario.usuario} tambien es profesor.`
);
if (usuario.idTipoUsuario === 4) {
update.idTipoUsuario = 5;
alumnosUpdate.push(
`Se cambio el tipo de usuario alumno con id ${usuario.idUsuario} y numero de cuenta ${usuario.usuario}.`
);
}
if (!validarObjetoVacio(update))
await Usuario.update(update, {
where: { idUsuario: usuario.idUsuario },
});
}
});
}
await eliminarArchivo(path);
});
return {
message: 'Se subió correctamente el archivo csv.',
alumnosNuevos,
alumnosUpdate,
errores,
avisos,
};
};
module.exports = cargaMasiva;
+2 -1
View File
@@ -4,6 +4,7 @@ const helperPath = '../../helper';
const { comparar } = require(`${helperPath}/encriptar`);
const validar = require(`${helperPath}/validar`);
const dbPath = '../../db/tablas';
const Carrera = require(`${dbPath}/Carrera`);
const Usuario = require(`${dbPath}/Usuario`);
const TipoUsuario = require(`${dbPath}/TipoUsuario`);
@@ -27,7 +28,7 @@ const login = async (body) => {
throw new Error('La contraseña es incorrecta.');
return Usuario.findOne({
where: { usuario },
include: [{ model: TipoUsuario }],
include: [{ model: TipoUsuario }, { model: Carrera }],
attributes: ['idUsuario', 'usuario', 'nombre', 'multa', 'activo'],
});
})
+23 -11
View File
@@ -6,6 +6,7 @@ const Carrito = require('./tablas/Carrito');
const Equipo = require('./tablas/Equipo');
const Infraccion = require('./tablas/Infraccion');
const Modulo = require('./tablas/Modulo');
const Motivo = require('./tablas/Motivo');
const Multa = require('./tablas/Multa');
const Operador = require('./tablas/Operador');
const Prestamo = require('./tablas/Prestamo');
@@ -27,6 +28,9 @@ const drop = async () => {
await Prestamo.drop();
console.log('La tabla Prestamo se desinstalo correctamente.'.magenta);
await Motivo.drop();
console.log('La tabla Motivo se desinstalo correctamente.'.magenta);
await Equipo.drop();
console.log('La tabla Equipo se desinstalo correctamente.'.magenta);
@@ -91,6 +95,9 @@ const sync = async () => {
await Equipo.sync();
console.log('La tabla Equipo se instalo correctamente.'.magenta);
await Motivo.sync();
console.log('La tabla Motivo se instalo correctamente.'.magenta);
await Prestamo.sync();
console.log('La tabla Prestamo se instalo correctamente.'.magenta);
@@ -151,6 +158,8 @@ const dataStatus = async () => {
'Cargando',
'Reparación',
'Mantenimiento',
'Desactivado',
'Revisar',
];
console.log('\nPaso 6) Insertando data status.'.bold.blue);
@@ -163,7 +172,7 @@ const dataStatus = async () => {
};
const dataPrograma = async () => {
const data = ['Autocad, Maya, 3Dmax', 'Programación'];
const data = ['Autocad, Maya, 3Dmax', 'Programación', 'Autocad', '3Dmax'];
console.log('\nPaso 7) Insertando data programa.'.bold.blue);
for (let i = 0; i < data.length; i++) {
@@ -224,16 +233,19 @@ const dataInfraccion = async () => {
};
const exe = async () => {
await drop();
await sync();
await dataTipoUsuario();
await dataModulo();
await dataTipoCarrito();
await dataStatus();
await dataPrograma();
await dataSystem();
await dataAdmin();
await dataInfraccion();
// await drop();
// await sync();
// await dataTipoUsuario();
// await dataModulo();
// await dataTipoCarrito();
// await dataStatus();
// await dataPrograma();
// await dataSystem();
// await dataAdmin();
// await dataInfraccion();
await Motivo.sync();
console.log('La tabla Motivo se instalo correctamente.'.magenta);
console.log(
'\nSe ha instalado exitosamente la base de datos.\n'.underline.bold.green
+5
View File
@@ -26,6 +26,11 @@ Equipo.init(
type: DataTypes.STRING(15),
allowNull: false,
},
prestado: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false,
},
},
{
sequelize,
+47
View File
@@ -0,0 +1,47 @@
const { DataTypes, Model } = require('sequelize');
const sequelize = require('../../config/sequelize.conf');
const Equipo = require('./Equipo');
const Status = require('./Status');
class Motivo extends Model {}
Motivo.init(
{
idMotivo: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
unique: true,
autoIncrement: true,
},
motivo: {
type: DataTypes.STRING(500),
allowNull: false,
},
},
{
sequelize,
modelName: 'Motivo',
tableName: 'motivo',
timestamps: true,
createdAt: true,
updatedAt: false,
}
);
Motivo.belongsTo(Equipo, {
foreignKey: {
name: 'idEquipo',
type: DataTypes.INTEGER,
allowNull: false,
},
});
Motivo.belongsTo(Status, {
foreignKey: {
name: 'idStatus',
type: DataTypes.INTEGER,
allowNull: false,
},
});
module.exports = Motivo;
+5
View File
@@ -22,6 +22,11 @@ Multa.init(
type: DataTypes.DATE,
allowNull: false,
},
// activo: {
// type: DataTypes.BOOLEAN,
// allowNull: false,
// defaultValue: true,
// },
},
{
sequelize,
+3
View File
@@ -0,0 +1,3 @@
const Equipo = require('../db/tablas/Equipo');
Equipo.update({ prestado: false }, { where: { prestado: true } });
+1 -1
View File
@@ -13,7 +13,7 @@ const verificaToken = (req, res, next) => {
let message = '';
if (err.message === 'invalid signature')
message = 'El token no es valido. Inicia sesión de nuevo.';
message = 'Se termino el tiempo de tu sesión. Inicia sesión de nuevo.';
if (err.message === 'jwt expired')
message = 'El token expiro. Inicia sesión de nuevo.';
if (err.message === 'jwt malformed')
+17
View File
@@ -0,0 +1,17 @@
const express = require('express');
const app = express();
const { verificaToken } = require('../middleware/autentificacion');
const route = '/motivo';
const historialMotivosEquipo = require('../controller/Motivo/historialMotivosEquipo');
app.get(`${route}/historial_motivos_equipo`, verificaToken, (req, res) => {
return historialMotivosEquipo(req.query)
.then((data) => {
res.status(200).json(data);
})
.catch((err) => {
res.status(400).json({ message: err.message });
});
});
module.exports = app;
+2 -2
View File
@@ -5,7 +5,7 @@ const upload = multer({ dest: 'server/uploads' });
const { verificaToken } = require('../middleware/autentificacion');
const route = '/usuario';
const controllerPath = '../controller/Usuario';
const cargaMasivaPosgrados = require(`${controllerPath}/cargaMasivaPosgrados`);
const cargaMasiva = require(`${controllerPath}/cargaMasiva`);
const crear = require(`${controllerPath}/crear`);
const escolares = require(`${controllerPath}/escolares`);
const login = require(`${controllerPath}/login`);
@@ -19,7 +19,7 @@ app.post(
upload.single('csv'),
(req, res) => {
if (req.file) {
return cargaMasivaPosgrados(req.file.filename)
return cargaMasiva(req.file.filename)
.then((data) => {
res.status(201).json(data);
})
+1
View File
@@ -6,6 +6,7 @@ app.use(require('./Carrito'));
app.use(require('./Equipo'));
app.use(require('./Infraccion'));
app.use(require('./Modulo'));
app.use(require('./Motivo'));
app.use(require('./Multa'));
app.use(require('./Operador'));
app.use(require('./Prestamo'));
+4 -4
View File
@@ -6,12 +6,12 @@ module.exports = {
io = new Server(httpServer, {
cors: {
origin: [
'http://localhost:3046',
'http://localhost:3056',
// 'http://localhost:3046',
// 'http://localhost:3056',
// 'http://132.248.80.196:3045',
// 'http://132.248.80.196:3055',
// 'https://pcpuma.acatlan.unam.mx',
// 'https://pcpuma.acatlan.unam.mx:8080',
'https://pcpuma.acatlan.unam.mx',
'https://pcpuma.acatlan.unam.mx:8080',
],
},
});