correcciones

This commit is contained in:
lemuel 2023-01-03 10:51:55 -06:00
parent f0f3b7d3dc
commit c36c9c0925
6 changed files with 71 additions and 55 deletions

View File

@ -114,7 +114,7 @@ export class CarreraProgramaService {
// Validamos que el usuario pertenezca a la institución de la información que solicita // Validamos que el usuario pertenezca a la institución de la información que solicita
if (!institucionUsuario) if (!institucionUsuario)
throw new ForbiddenException( throw new ForbiddenException(
'No puedes acceder a esta información porque no le pertenece a tu institución.', 'No puedes acceder a esta información porque no peteneces a esta institución.',
); );
return this.findAllByInstitucion(institucion); return this.findAllByInstitucion(institucion);
}); });

View File

@ -74,7 +74,7 @@ export class InstitucionDiaService {
// Validamos que el usuario pertenezca a la institución de la información que solicita // Validamos que el usuario pertenezca a la institución de la información que solicita
if (!institucionUsuario) if (!institucionUsuario)
throw new ForbiddenException( throw new ForbiddenException(
'No puedes acceder a esta información porque no le pertenece a tu institución.', 'No puedes acceder a esta información porque no peteneces a esta institución.',
); );
return this.hoy(institucion); return this.hoy(institucion);
}); });

View File

@ -115,6 +115,31 @@ export class InstitucionUsuarioService {
); );
} }
findFullInfoAllByIdUsuario(
usuario: Usuario,
activosSinMulta = true,
): Promise<InstitucionUsuario[]> {
const busqueda: FindOptionsWhere<FullInformacionInstitucionUsuarioView> = {
id_usuario: usuario.id_usuario,
};
if (activosSinMulta) {
busqueda.activo = 1;
busqueda.multa = 0;
}
return this.fullInformacionInstitucionUsuarioView
.find({ where: busqueda })
.then((infoInstitucionesUsuario) => {
const institucionesUsuario: InstitucionUsuario[] = [];
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
institucionesUsuario.push(
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
);
return institucionesUsuario;
});
}
findFullInfoAllByIdUsuarioIdInstitucion( findFullInfoAllByIdUsuarioIdInstitucion(
usuario: Usuario, usuario: Usuario,
institucion: Institucion, institucion: Institucion,
@ -142,31 +167,6 @@ export class InstitucionUsuarioService {
}); });
} }
findFullInfoAllByIdUsuario(
usuario: Usuario,
activosSinMulta = true,
): Promise<InstitucionUsuario[]> {
const busqueda: FindOptionsWhere<FullInformacionInstitucionUsuarioView> = {
id_usuario: usuario.id_usuario,
};
if (activosSinMulta) {
busqueda.activo = 1;
busqueda.multa = 0;
}
return this.fullInformacionInstitucionUsuarioView
.find({ where: busqueda })
.then((infoInstitucionesUsuario) => {
const institucionesUsuario: InstitucionUsuario[] = [];
for (let i = 0; i < infoInstitucionesUsuario.length; i++)
institucionesUsuario.push(
this.fullViewToInstitucionUsuario(infoInstitucionesUsuario[i]),
);
return institucionesUsuario;
});
}
findFullInfoByIdUsuarioIdInstitucionCarrera( findFullInfoByIdUsuarioIdInstitucionCarrera(
usuario: Usuario, usuario: Usuario,
institucionCarrera: InstitucionCarrera, institucionCarrera: InstitucionCarrera,

View File

@ -91,7 +91,7 @@ export class PrestamoService {
prestamo.operadorRegreso = operadorRegreso; prestamo.operadorRegreso = operadorRegreso;
// Validamos que el equipo si se la haya asignado al usuario del registro // Validamos que el equipo si se la haya asignado al usuario del registro
if (prestamo.equipo.u === prestamo.usuario.id_usuario) { if (prestamo.equipo.u === prestamo.usuario.id_usuario) {
// Reseteamos datos de equipo // Reseteamos datos del equipo
prestamo.equipo.u = null; prestamo.equipo.u = null;
prestamo.equipo.status.id_status = 6; prestamo.equipo.status.id_status = 6;
// Guardamos cambios en el equipo // Guardamos cambios en el equipo
@ -125,7 +125,12 @@ export class PrestamoService {
throw new ConflictException( throw new ConflictException(
'No puedes cancelar este préstamo una vez que se te entregó el equipo.', 'No puedes cancelar este préstamo una vez que se te entregó el equipo.',
); );
// Reseteamos datos de equipo // Solo se puede cancelar si esta en status apartado
if (prestamo.equipo.status.id_status != 2)
throw new ConflictException(
'Hubo un error, comunicate con los desarrolladores.',
);
// Reseteamos datos del equipo
prestamo.equipo.u = null; prestamo.equipo.u = null;
prestamo.equipo.status.id_status = 1; prestamo.equipo.status.id_status = 1;
// Guardamos cambios en el equipo // Guardamos cambios en el equipo
@ -283,6 +288,11 @@ export class PrestamoService {
throw new ConflictException( throw new ConflictException(
'Ya se entregó el equipo de cómputo al usuario.', 'Ya se entregó el equipo de cómputo al usuario.',
); );
// Solo se puede entregar si esta en status apartado
if (prestamo.equipo.status.id_status != 2)
throw new ConflictException(
'Hubo un error, comunicate con los desarrolladores.',
);
if (prestamo.usuario.id_usuario != prestamo.equipo.u) if (prestamo.usuario.id_usuario != prestamo.equipo.u)
throw new ConflictException( throw new ConflictException(
'Este equipo fue asignado más de una vez y este es el préstamo incorrecto, espere unos segundos y se desactivará este préstamo o tanto el usario como el opeardor pueden cancelarlo manualmente.', 'Este equipo fue asignado más de una vez y este es el préstamo incorrecto, espere unos segundos y se desactivará este préstamo o tanto el usario como el opeardor pueden cancelarlo manualmente.',
@ -713,7 +723,7 @@ export class PrestamoService {
const tardanza = Math.trunc(ahora.diff(moment(prestamo.hora_fin)) / 60000); // Si la resta ahora - hora_fin es positiva es que ya se tardo en entregar const tardanza = Math.trunc(ahora.diff(moment(prestamo.hora_fin)) / 60000); // Si la resta ahora - hora_fin es positiva es que ya se tardo en entregar
const semanasCastigo = Math.trunc( const semanasCastigo = Math.trunc(
tardanza / modulo.institucion.tiempo_entrega, tardanza / modulo.institucion.tiempo_entrega,
); // Semanas de castigo correspondiente al tiempo de tardanza de cada institución ); // Semanas de castigo correspondiente al tiempo de entrega de cada institución
this.validacionBasicaPrestamo(prestamo); this.validacionBasicaPrestamo(prestamo);
this.validacionOperadorPrestamo(prestamo, operadorRegreso, modulo); this.validacionOperadorPrestamo(prestamo, operadorRegreso, modulo);
@ -722,6 +732,12 @@ export class PrestamoService {
throw new ConflictException( throw new ConflictException(
'Aún no se ha entregado el equipo de cómputo al usuario.', 'Aún no se ha entregado el equipo de cómputo al usuario.',
); );
// Solo se puede regresar si esta en status apartado
if (prestamo.equipo.status.id_status != 3)
throw new ConflictException(
'Hubo un error, comunicate con los desarrolladores.',
);
// Validamos que se mande la descripción si es que se manda una infracción
if (id_institucion_infraccion && !descripcion) if (id_institucion_infraccion && !descripcion)
throw new ConflictException( throw new ConflictException(
'No se mandó la descripción para el reporte de incidencia.', 'No se mandó la descripción para el reporte de incidencia.',
@ -730,14 +746,14 @@ export class PrestamoService {
prestamo.activo = false; prestamo.activo = false;
prestamo.fecha_entrega = ahora.toDate(); prestamo.fecha_entrega = ahora.toDate();
prestamo.operadorRegreso = operadorRegreso; prestamo.operadorRegreso = operadorRegreso;
// Reseteamos datos de equipo // Reseteamos datos del equipo
prestamo.equipo.u = null; prestamo.equipo.u = null;
prestamo.equipo.status = status; prestamo.equipo.status = status;
// Si semanasCastigo es mayor a 0 significa que hay multa por atraso // Si semanasCastigo es mayor a 0 significa que hay multa por atraso
if (semanasCastigo > 0) { if (semanasCastigo > 0) {
const mensajeTardanza = `El usuario se tardó: ${tardanza} minutos en entregar el equipo de cómputo.`; const mensajeTardanza = `El usuario se tardó: ${tardanza} minutos en entregar el equipo de cómputo.`;
// Si se mando id_institucion_infraccion significa que ademas de entregar tarde cometió una infracción // Si se mando id_institucion_infraccion significa que ademas de entregar tarde, cometió una infracción
if (id_institucion_infraccion) if (id_institucion_infraccion)
await this.multaService.create( await this.multaService.create(
operadorRegreso, operadorRegreso,

View File

@ -15,7 +15,7 @@ export class StatusService {
findById(id_status: number) { findById(id_status: number) {
return this.repository.findOne({ where: { id_status } }).then((status) => { return this.repository.findOne({ where: { id_status } }).then((status) => {
if (!status) throw new NotFoundException('No existe este status.'); if (!status) throw new NotFoundException('No existe este id status.');
return status; return status;
}); });
} }

View File

@ -132,6 +132,28 @@ export class UsuarioService {
return query.getManyAndCount(); return query.getManyAndCount();
} }
findById(id_usuario: number): Promise<Usuario> {
return this.repository
.findOne({
select: ['id_usuario', 'correo', 'password', 'usuario'],
where: { id_usuario },
})
.then((usuario) => {
if (!usuario) throw new NotFoundException('No existe este usuario.');
return usuario;
});
}
findByUsuario(usuario: string, rfc?: string): Promise<Usuario> {
const busqueda: FindOptionsWhere<Usuario> = { usuario };
if (rfc) busqueda.rfc = rfc;
return this.repository.findOne({
select: ['id_usuario', 'correo', 'nombre', 'password', 'usuario'],
where: busqueda,
});
}
findFullInfoByUsuario(operador: Operador, usuario: string): Promise<Usuario> { findFullInfoByUsuario(operador: Operador, usuario: string): Promise<Usuario> {
return this.fullInformacionUsuarioView return this.fullInformacionUsuarioView
.findOne({ where: { usuario } }) .findOne({ where: { usuario } })
@ -161,28 +183,6 @@ export class UsuarioService {
}); });
} }
findById(id_usuario: number): Promise<Usuario> {
return this.repository
.findOne({
select: ['id_usuario', 'correo', 'password', 'usuario'],
where: { id_usuario },
})
.then((usuario) => {
if (!usuario) throw new NotFoundException('No existe este usuario.');
return usuario;
});
}
findByUsuario(usuario: string, rfc?: string): Promise<Usuario> {
const busqueda: FindOptionsWhere<Usuario> = { usuario };
if (rfc) busqueda.rfc = rfc;
return this.repository.findOne({
select: ['id_usuario', 'correo', 'nombre', 'password', 'usuario'],
where: busqueda,
});
}
passwordReset( passwordReset(
operador: Operador, operador: Operador,
id_usuario: number, id_usuario: number,