en teoria ya no deben haber duplicados

This commit is contained in:
xXpuma99Xx
2022-10-02 23:15:11 -05:00
parent 5a49eaf8a5
commit 1b28fac4f7
6 changed files with 79 additions and 47 deletions
+4 -4
View File
@@ -10,15 +10,15 @@ import { Socket, Server } from 'socket.io';
@WebSocketGateway({
cors: {
origin: [
// 'http://localhost:3176',
// 'http://localhost:3186',
'http://localhost:3176',
'http://localhost:3186',
// 'http://132.248.80.196:3155',
// 'http://132.248.80.196:3185',
// 'https://pmodulospcpuma.unam.mx',
// 'https://pmodulospcpuma.unam.mx:3015',
// 'https://modulospcpuma.unam.mx',
'https://modulospcpuma.unam.mx:3015',
'https://betelgeuse.acatlan.unam.mx:3180',
// 'https://modulospcpuma.unam.mx:3015',
// 'https://betelgeuse.acatlan.unam.mx:3180',
],
},
})
+3
View File
@@ -32,6 +32,9 @@ export class Equipo {
@Column({ type: Boolean, nullable: false, default: false })
prestado: boolean;
@Column({ type: Number, nullable: true, default: null })
u: number;
@ManyToOne(() => Carrito, (carrito) => carrito.equipos, { eager: true })
@JoinColumn({ name: 'id_carrito' })
carrito: Carrito;
@@ -27,9 +27,9 @@ import { Modulo } from '../../../modulo/entity/modulo.entity';
.innerJoin(EquipoTipoEntrada, 'tes', 'tes.id_equipo = e.id_equipo')
.innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo')
.innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion')
.where('c.activo = 1')
.where('i.activo = 1')
.andWhere('m.activo = 1')
.andWhere('i.activo = 1')
.andWhere('c.activo = 1')
.andWhere('e.id_status = 1')
.orderBy('c.carrito', 'ASC')
.addOrderBy('e.equipo', 'ASC'),
@@ -13,6 +13,7 @@ import { Modulo } from '../../../modulo/entity/modulo.entity';
.addSelect('e.id_status', 'id_status')
.addSelect('e.numero_inventario', 'numero_inventario')
.addSelect('e.prestado', 'prestado')
.addSelect('e.u', 'u')
.addSelect('c.carrito', 'carrito')
.addSelect('c.id_modulo', 'id_modulo')
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
@@ -51,4 +52,7 @@ export class InformacionEquipoView {
@ViewColumn()
prestado: boolean;
@ViewColumn()
u: number;
}
+32 -8
View File
@@ -34,6 +34,8 @@ import { ModuloService } from '../modulo/modulo.service';
import { EquipoMotivoService } from '../equipo-motivo/equipo-motivo.service';
import { OperadorService } from '../operador/operador.service';
import { StatusService } from '../status/status.service';
import internal from 'stream';
import { retry } from 'rxjs';
@Injectable()
export class EquipoService {
@@ -94,6 +96,7 @@ export class EquipoService {
equipo: infoEquipo.equipo,
numero_inventario: infoEquipo.numero_inventario,
prestado: infoEquipo.prestado,
u: infoEquipo.u,
carrito: {
id_carrito: infoEquipo.id_carrito,
carrito: infoEquipo.carrito,
@@ -252,6 +255,7 @@ export class EquipoService {
}
async findEquipo(
id_usuario: number,
modulo: Modulo,
tipoCarrito: TipoCarrito,
programa?: Programa,
@@ -281,10 +285,10 @@ export class EquipoService {
}
return this.informacionEquipoPrestamoView
.count({ where: busqueda })
.then(async (n) => {
if (n === 0)
await this.informacionEquipoPrestamoView
.findOne({ where: busqueda })
.then((infoEquipo) => {
if (!infoEquipo)
return this.informacionEquipoPrestamoView
.find({ where: busquedaReseteo })
.then(async (infoEquipos) => {
for (let i = 0; i < infoEquipos.length; i++)
@@ -294,15 +298,35 @@ export class EquipoService {
prestado: false,
}),
);
return this.informacionEquipoPrestamoView.findOne({
where: busqueda,
});
})
.then((infoEquipo) => {
if (!infoEquipo)
throw new ConflictException(
'No hay un equipo de cómputo que cumpla con las caracteríasticas solicitadas o ya no hay equipos disponibles en este momento. Intenta más tarde o cambia las características.',
);
return infoEquipo;
});
return this.informacionEquipoPrestamoView.findOne({ where: busqueda });
return infoEquipo;
})
.then((infoEquipo) => {
const equipo = this.repository.create({
id_equipo: infoEquipo.id_equipo,
u: id_usuario,
status: { id_status: 2 },
});
return this.repository.save(equipo);
})
.then((equipo) => this.findInfoEquipoById(equipo.id_equipo))
.then((equipo) => {
if (!equipo)
if (equipo.u != id_usuario)
throw new ConflictException(
'No hay un equipo de cómputo que cumpla con las caracteríasticas solicitadas o ya no hay equipos disponibles en este momento. Intenta más tarde o cambia las características.',
'Ocurrio un error al tratar de asignarte un equipo de cómputo, intenta de nuevo.',
);
return this.repository.create({ id_equipo: equipo.id_equipo });
return equipo;
});
}
+34 -33
View File
@@ -77,6 +77,7 @@ export class PrestamoService {
prestamo.fecha_entrega = ahora.toDate();
prestamo.cancelado_operador = true;
prestamo.operadorRegreso = operadorRegreso;
prestamo.equipo.u = null;
return this.equipoService
.update(prestamo.equipo, null, 6, operadorRegreso, motivo)
.then((_) => this.repository.save(prestamo))
@@ -101,6 +102,7 @@ export class PrestamoService {
prestamo.activo = false;
prestamo.fecha_entrega = ahora.toDate();
prestamo.cancelado_usuario = true;
prestamo.equipo.u = null;
return this.equipoService
.update(prestamo.equipo, null, 1)
.then((_) => this.repository.save(prestamo))
@@ -120,7 +122,7 @@ export class PrestamoService {
id_programa?: number,
id_tipo_entrada?: number,
) {
const ahora = moment().add(12, 'hour');
const ahora = moment();
const ahoraStr = ahora.format('YYYY-MM-DD');
const sistema = { id_operador: 1 };
const modulo = await this.moduloService.findById(id_modulo);
@@ -148,35 +150,34 @@ export class PrestamoService {
)
: null;
if (ahora.weekday() === 0)
throw new ConflictException('No hay servicio los días domingo.');
this.validarInstitucionUsuario(usuario.instituciones, modulo);
if (!institucionDia.activo)
throw new ConflictException(
'El día de hoy no hay servicio de préstamo de equipos.',
);
if (ahora < horaMin)
throw new ConflictException(
`El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`,
);
if (ahora >= horaExtra)
throw new ConflictException(
`El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`,
);
for (let i = 0; i < institucionDia.horasExcepcion.length; i++) {
const horaFin = moment(
`${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`,
);
const horaInicio = moment(
`${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`,
);
if (ahora > horaInicio && ahora < horaFin)
throw new ConflictException(
`Se suspendió temporalmente el servicio de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`,
);
}
// if (ahora.weekday() === 0)
// throw new ConflictException('No hay servicio los días domingo.');
// this.validarInstitucionUsuario(usuario.instituciones, modulo);
// if (!institucionDia.activo)
// throw new ConflictException(
// 'El día de hoy no hay servicio de préstamo de equipos.',
// );
// if (ahora < horaMin)
// throw new ConflictException(
// `El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`,
// );
// if (ahora >= horaExtra)
// throw new ConflictException(
// `El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`,
// );
// for (let i = 0; i < institucionDia.horasExcepcion.length; i++) {
// const horaFin = moment(
// `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`,
// );
// const horaInicio = moment(
// `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`,
// );
// if (ahora > horaInicio && ahora < horaFin)
// throw new ConflictException(
// `Se suspendió temporalmente el servicio de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`,
// );
// }
return this.informacionPrestamoView
.findOne({ where: { activo: 1, id_usuario: usuario.id_usuario } })
.then((existePrestamo) => {
@@ -185,14 +186,14 @@ export class PrestamoService {
'Este usuario ya tiene un préstamo activo.',
);
return this.equipoService.findEquipo(
usuario.id_usuario,
modulo,
tipoCarrito,
programa,
tipoEntrada,
);
})
.then((equipo) => this.equipoService.update(equipo, null, 2))
.then(({ equipo }) =>
.then((equipo) =>
this.repository.save(
this.repository.create({
equipo,
@@ -273,7 +274,7 @@ export class PrestamoService {
}
async entregar(operadorEntrega: Operador, id_prestamo: number) {
const ahora = moment().add(12, 'hour');
const ahora = moment();
const ahoraStr = ahora.format('YYYY-MM-DD');
const prestamo = await this.findInfoPrestamoById(id_prestamo);
const institucionDia =
@@ -776,7 +777,7 @@ export class PrestamoService {
descripcion?: string,
id_institucion_infraccion?: number,
) {
const ahora = moment().add(12, 'hour');
const ahora = moment();
const tardanza = Math.trunc(ahora.diff(moment(prestamo.hora_fin)) / 60000);
const semanasCastigo = Math.trunc(
tardanza / operadorRegreso.institucion.tiempo_entrega,