cron listo
This commit is contained in:
parent
2888afedd9
commit
fd0f87476a
@ -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 {}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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]));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user