From fd0f87476a2f5c90c08e2ff304bc2c3bd61bc4ba Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Thu, 16 Jun 2022 08:02:37 -0500 Subject: [PATCH] cron listo --- src/cron/cron.module.ts | 10 +++++-- src/cron/cron.service.ts | 24 ++++++++++------ src/equipo/equipo.service.ts | 8 ++++++ src/multa/multa.service.ts | 15 ++++++++++ src/prestamo/prestamo.service.ts | 49 ++++++++++++++++++-------------- 5 files changed, 74 insertions(+), 32 deletions(-) diff --git a/src/cron/cron.module.ts b/src/cron/cron.module.ts index db35787..9a69b0d 100644 --- a/src/cron/cron.module.ts +++ b/src/cron/cron.module.ts @@ -1,11 +1,17 @@ import { Module } from '@nestjs/common'; import { ScheduleModule } from '@nestjs/schedule'; import { CronService } from './cron.service'; +import { EquipoModule } from '../equipo/equipo.module'; import { MultaModule } from '../multa/multa.module'; -import { UsuarioModule } from '../usuario/usuario.module'; +import { PrestamoModule } from '../prestamo/prestamo.module'; @Module({ - imports: [MultaModule, ScheduleModule.forRoot(), UsuarioModule], + imports: [ + EquipoModule, + MultaModule, + PrestamoModule, + ScheduleModule.forRoot(), + ], providers: [CronService], }) export class CronModule {} diff --git a/src/cron/cron.service.ts b/src/cron/cron.service.ts index 6090b3f..9f10ef4 100644 --- a/src/cron/cron.service.ts +++ b/src/cron/cron.service.ts @@ -1,22 +1,30 @@ import { Injectable } from '@nestjs/common'; import { Cron, SchedulerRegistry } from '@nestjs/schedule'; +import { EquipoService } from '../equipo/equipo.service'; import { MultaService } from '../multa/multa.service'; -import { UsuarioService } from '../usuario/usuario.service'; +import { PrestamoService } from '../prestamo/prestamo.service'; @Injectable() export class CronService { constructor( private schedulerRegistry: SchedulerRegistry, + private equipoService: EquipoService, private multaService: MultaService, - private usuarioService: UsuarioService, + private prestamoService: PrestamoService, ) {} - // @Cron('0 6 * * * *', { name: 'multas' }) - // revisarMultas() {} + @Cron('0 */5 8-20 * * 1-5', { name: 'prestamos_desactivacion' }) + desactivarPrestamos() { + return this.prestamoService.desactivarPrestamos(); + } - // @Cron('0 6 * * * *', { name: '' }) - // desactivarPrestamos() {} + @Cron('0 0 0 * * *', { name: 'equipos_reseteo' }) + resetearEquipos() { + return this.equipoService.reseteoTotal(); + } - // @Cron('0 6 * * * *', { name: '' }) - // desactivarActualizarEquipos() {} + @Cron('0 0 0 * * *', { name: 'multas_reseteo' }) + revisarMultas() { + return this.multaService.desactivarMultas(); + } } diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 198c403..a85326e 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -267,6 +267,14 @@ export class EquipoService { }); } + reseteoTotal() { + return this.repository + .createQueryBuilder() + .update() + .set({ prestado: false }) + .execute(); + } + async findEquipoByEquipo( id_carrito: number | Carrito, equipo: string, diff --git a/src/multa/multa.service.ts b/src/multa/multa.service.ts index 172aa0f..2a4927d 100644 --- a/src/multa/multa.service.ts +++ b/src/multa/multa.service.ts @@ -172,4 +172,19 @@ export class MultaService { }), ); } + + desactivarMultas() { + const ahora = moment(); + + return this.repository.find({ activo: true }).then(async (multas) => { + for (let i = 0; i < multas.length; i++) + if (ahora.diff(moment(multas[i].fecha_fin)) > 0) { + multas[i].activo = false; + multas[i].prestamo.usuario.multa = false; + await this.usuarioService + .update(multas[i].prestamo.usuario) + .then((_) => this.repository.save(multas[i])); + } + }); + } } diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 01f614b..5c6ebd1 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -58,16 +58,7 @@ export class PrestamoService { const operadorRegreso = await this.operadorService.findById(id_operador); const prestamo = await this.findById(id_prestamo); - if (prestamo.cancelado_usuario) - throw new ConflictException( - 'Este préstamo ya fue cancelado por el usuario.', - ); - if (prestamo.cancelado_operador) - throw new ConflictException( - 'Este préstamo ya fue cancelado por un operador.', - ); - if (!prestamo.activo) - throw new ConflictException('Este préstamo ya no se encuentra activo.'); + this.validacionBasicaPrestamo(prestamo); prestamo.activo = false; prestamo.fecha_entrega = ahora.toDate(); prestamo.cancelado_operador = true; @@ -91,16 +82,7 @@ export class PrestamoService { const ahora = moment(); const prestamo = await this.findById(id_prestamo); - if (prestamo.cancelado_usuario) - throw new ConflictException( - 'Este préstamo ya fue cancelado por el usuario.', - ); - if (prestamo.cancelado_operador) - throw new ConflictException( - 'Este préstamo ya fue cancelado por un operador.', - ); - if (!prestamo.activo) - throw new ConflictException('Este préstamo ya no se encuentra activo.'); + this.validacionBasicaPrestamo(prestamo); if (prestamo.equipo.status.id_status === 3) throw new ConflictException( 'No se puede cancelar el préstamo una vez se te entregó el equipo.', @@ -140,7 +122,7 @@ export class PrestamoService { // if (ahora.weekday() === 0 || ahora.weekday() === 6) // throw new ConflictException( - // 'No se puede pedir equipos de cómputo los días sabados ni domingos.', + // 'No se puede pedir equipo de cómputo los sabados y domingos.', // ); // else { // const institucionDia = await this.institucionDiaService.findDia( @@ -156,7 +138,7 @@ export class PrestamoService { // if (!institucionDia.activo) // throw new ConflictException( - // 'El día de hoy no se esta realizando préstamo de equipos.', + // 'El día de hoy no se esta realizando préstamos de equipos.', // ); // if (ahora > horaMax) // throw new Error('Ya no se puede realizar un préstamo el día de hoy.'); @@ -208,6 +190,29 @@ export class PrestamoService { ); } + async desactivarPrestamos() { + const ahora = moment(); + const operadorRegreso = await this.operadorService.findById(1); + + return this.repository + .find({ + join: { alias: 'p', innerJoin: { e: 'p.equipo' } }, + where: { activo: true, equipo: { status: { id_status: 2 } } }, + }) + .then(async (prestamos) => { + for (let i = 0; i < prestamos.length; i++) + if (ahora.diff(moment(prestamos[i].hora_max_recoger)) > 0) { + prestamos[i].activo = false; + prestamos[i].cancelado_operador = true; + prestamos[i].operadorRegreso = operadorRegreso; + prestamos[i].equipo.status = await this.statusService.findById(1); + await this.equipoService + .update(prestamos[i].equipo) + .then((_) => this.repository.save(prestamos[i])); + } + }); + } + async entregar(id_prestamo: number, id_operador: number) { const ahora = moment(); const operadorEntrega = await this.operadorService.findById(id_operador);