equipo final

This commit is contained in:
xXpuma99Xx 2022-10-04 23:17:41 -05:00
parent 4dc8d557eb
commit 1fa6ad02b6
9 changed files with 96 additions and 86 deletions

View File

@ -49,7 +49,7 @@ export class EquipoMotivoService {
}
findAllByIdEquipo(id_equipo: number, pagina: number) {
return this.equipoService.findById(id_equipo).then((equipo) =>
return this.equipoService.findInfoEquipoById(id_equipo).then((equipo) =>
this.repository.findAndCount({
where: { equipo },
skip: (pagina - 1) * 25,

View File

@ -37,7 +37,7 @@ export class EquipoProgramaService {
) {
const equipo =
typeof id_equipo === 'number'
? await this.equipoService.findById(id_equipo)
? await this.equipoService.findInfoEquipoById(id_equipo)
: id_equipo;
const programa =
typeof id_programa === 'number'

View File

@ -34,7 +34,7 @@ export class EquipoTipoEntradaService {
) {
const equipo =
typeof id_equipo === 'number'
? await this.equipoService.findById(id_equipo)
? await this.equipoService.findInfoEquipoById(id_equipo)
: id_equipo;
const tipoEntrada =
typeof id_tipo_entrada === 'number'

View File

@ -19,10 +19,6 @@ export class UpdateEquipoDto {
@IsOptional()
id_carrito?: number;
@IsInt()
@IsOptional()
id_operador?: number;
@IsInt()
@IsOptional()
id_status?: number;

View File

@ -11,9 +11,12 @@ import { Modulo } from '../../../modulo/entity/modulo.entity';
dataSource
.createQueryBuilder()
.select('e.id_equipo', 'id_equipo')
.addSelect('e.equipo', 'equipo')
.addSelect('e.id_carrito', 'id_carrito')
.addSelect('e.id_status', 'id_status')
.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')
.addSelect('ps.id_equipo_programa', 'id_equipo_programa')
@ -35,6 +38,12 @@ import { Modulo } from '../../../modulo/entity/modulo.entity';
.addOrderBy('e.equipo', 'ASC'),
})
export class InformacionEquipoPrestamoView {
@ViewColumn()
carrito: string;
@ViewColumn()
equipo: string;
@ViewColumn()
id_equipo: number;
@ -67,4 +76,7 @@ export class InformacionEquipoPrestamoView {
@ViewColumn()
prestado: number;
@ViewColumn()
u: number;
}

View File

@ -189,13 +189,12 @@ export class EquipoController {
this.validarUsuarioService.validarAdminOperador(operador);
delete data.id_carrito;
delete data.id_status;
delete data.id_operador;
delete data.motivo;
return this.equipoService.update(
operador,
data,
body.id_carrito,
body.id_status,
body.id_operador,
body.motivo,
);
}

View File

@ -32,7 +32,6 @@ import { MarcaService } from '../marca/marca.service';
import { ModeloService } from '../modelo/modelo.service';
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';
@Injectable()
@ -59,7 +58,6 @@ export class EquipoService {
private moduloService: ModuloService,
@Inject(forwardRef(() => EquipoMotivoService))
private equipoMotivoService: EquipoMotivoService,
private operadorService: OperadorService,
private statusService: StatusService,
) {}
@ -88,26 +86,6 @@ export class EquipoService {
.then((_) => equipoNuevo);
}
private viewToEquipo(infoEquipo: InformacionEquipoView) {
return this.repository.create({
id_equipo: infoEquipo.id_equipo,
equipo: infoEquipo.equipo,
numero_inventario: infoEquipo.numero_inventario,
prestado: infoEquipo.prestado,
u: infoEquipo.u,
carrito: {
id_carrito: infoEquipo.id_carrito,
carrito: infoEquipo.carrito,
modulo: {
id_modulo: infoEquipo.id_modulo,
institucion: { id_institucion: infoEquipo.id_institucion },
},
tipoCarrito: { id_tipo_carrito: infoEquipo.id_tipo_carrito },
},
status: { id_status: infoEquipo.id_status },
});
}
async findAll(
operador: Operador,
filtros: {
@ -247,13 +225,6 @@ export class EquipoService {
return query.getManyAndCount();
}
findById(id_equipo: number) {
return this.repository.findOne({ where: { id_equipo } }).then((equipo) => {
if (!equipo) throw new NotFoundException('No existe este id equipo.');
return equipo;
});
}
async findEquipo(
id_usuario: number,
modulo: Modulo,
@ -283,7 +254,6 @@ export class EquipoService {
busqueda.id_tipo_entrada = tipoEntrada.id_tipo_entrada;
busquedaReseteo.id_tipo_entrada = tipoEntrada.id_tipo_entrada;
}
return this.informacionEquipoPrestamoView
.findOne({ where: busqueda })
.then((infoEquipo) => {
@ -312,6 +282,11 @@ export class EquipoService {
return infoEquipo;
})
.then((infoEquipo) => {
if (infoEquipo.u)
throw new ConflictException(
'Ocurrio un error al tratar de asignarte un equipo de cómputo, intenta de nuevo.',
);
const equipo = this.repository.create({
id_equipo: infoEquipo.id_equipo,
u: id_usuario,
@ -340,7 +315,7 @@ export class EquipoService {
});
}
async findInfoEquipoByNumeroInventario(
findInfoEquipoByNumeroInventario(
institucion: Institucion,
numero_inventario: string,
) {
@ -459,44 +434,38 @@ export class EquipoService {
}
async update(
// operador: Operador,
operador: Operador,
attrs: Partial<Equipo>,
id_carrito?: number,
id_status?: number,
id_operador?: number | Operador,
motivo?: string,
) {
const carrito = id_carrito
? await this.carritoService.findInfoCarritoById(id_carrito)
: null;
const operador = id_operador
? typeof id_operador === 'number'
? await this.operadorService.findById(id_operador)
: id_operador
: null;
const status = id_status
? await this.statusService.findById(id_status)
: null;
return this.findById(attrs.id_equipo)
return this.findInfoEquipoById(attrs.id_equipo)
.then(async (equipo) => {
if ((attrs.equipo && attrs.equipo != equipo.equipo) || carrito)
await this.findInfoEquipoByEquipo(
carrito ? carrito : equipo.carrito,
attrs.equipo ? attrs.equipo : equipo.equipo,
).then((existeEquipo) => {
if (existeEquipo)
throw new ConflictException(
'Ya existe un equipo en este carrito con este nombre, intenta con otro.',
);
});
if (
status &&
(status.id_status >= 4 ||
(equipo.status.id_status >= 4 && status.id_status === 1))
) {
if (!operador)
throw new ConflictException('No se mandó el id operador.');
operador.tipoUsuario.id_tipo_usuario > 2 &&
operador.institucion.id_institucion !=
equipo.carrito.modulo.institucion.id_institucion
)
throw new ForbiddenException(
'No puedes modificar la información este equipo porque no pertenece a tu institución.',
);
if (status) {
if (equipo.status.id_status === 2 || equipo.status.id_status === 3)
throw new ConflictException(
'No se puede cambiar el status de un equipo si esta apartada o en uso.',
);
if (status.id_status === 2 || status.id_status === 3)
throw new ConflictException(
'No se puede cambiar manualmente el status de un equipo a este status.',
);
if (!motivo)
throw new ConflictException(
'No se mandó el motivo para el cambio de status.',
@ -504,24 +473,56 @@ export class EquipoService {
}
Object.assign(equipo, attrs);
if (status) {
if (
status.id_status >= 4 ||
(equipo.status.id_status >= 4 && status.id_status === 1)
)
await this.equipoMotivoService.create(
equipo,
operador,
status,
motivo,
);
equipo.status = status;
await this.equipoMotivoService.create(
equipo,
operador,
status,
motivo,
);
}
if (carrito) equipo.carrito = carrito;
return this.repository.save(equipo);
})
.then((equipo) => ({
.then((_) => ({
message: 'Se guardaron los cambios correctamente.',
equipo,
}));
}
async updateStatus(equipo: Equipo, operador?: Operador, motivo?: string) {
if (equipo.status.id_status >= 4) {
if (!operador) throw new ConflictException('No se mandó el id operador.');
if (!motivo)
throw new ConflictException(
'No se mandó el motivo para el cambio de status.',
);
await this.equipoMotivoService.create(
equipo,
operador,
equipo.status,
motivo,
);
}
return this.repository.save(equipo);
}
private viewToEquipo(infoEquipo: InformacionEquipoView) {
return this.repository.create({
id_equipo: infoEquipo.id_equipo,
equipo: infoEquipo.equipo,
numero_inventario: infoEquipo.numero_inventario,
prestado: infoEquipo.prestado,
u: infoEquipo.u,
carrito: {
id_carrito: infoEquipo.id_carrito,
carrito: infoEquipo.carrito,
modulo: {
id_modulo: infoEquipo.id_modulo,
institucion: { id_institucion: infoEquipo.id_institucion },
},
tipoCarrito: { id_tipo_carrito: infoEquipo.id_tipo_carrito },
},
status: { id_status: infoEquipo.id_status },
});
}
}

View File

@ -178,7 +178,7 @@ export class MultaService {
}
findAllByIdEquipo(id_equipo: number, pagina: number) {
return this.equipoService.findById(id_equipo).then((equipo) =>
return this.equipoService.findInfoEquipoById(id_equipo).then((equipo) =>
this.repository
.createQueryBuilder('mu')
.innerJoinAndSelect('mu.institucionInfraccion', 'ii')

View File

@ -76,8 +76,9 @@ export class PrestamoService {
prestamo.cancelado_operador = true;
prestamo.operadorRegreso = operadorRegreso;
prestamo.equipo.u = null;
prestamo.equipo.status.id_status = 6;
return this.equipoService
.update(prestamo.equipo, null, 6, operadorRegreso, motivo)
.updateStatus(prestamo.equipo, operadorRegreso, motivo)
.then((_) => this.repository.save(prestamo))
.then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
@ -101,8 +102,9 @@ export class PrestamoService {
prestamo.fecha_entrega = ahora.toDate();
prestamo.cancelado_usuario = true;
prestamo.equipo.u = null;
prestamo.equipo.status.id_status = 1;
return this.equipoService
.update(prestamo.equipo, null, 1)
.updateStatus(prestamo.equipo)
.then((_) => this.repository.save(prestamo))
.then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
@ -254,11 +256,11 @@ export class PrestamoService {
if (ahora.diff(moment(prestamos[i].hora_max_recoger)) > 0) {
prestamos[i].activo = false;
prestamos[i].cancelado_operador = true;
prestamos[i].equipo.u = null;
prestamos[i].equipo.status.id_status = 1;
await this.repository
.save(prestamos[i])
.then((_) =>
this.equipoService.update(prestamos[i].equipo, null, 1),
)
.then((_) => this.equipoService.updateStatus(prestamos[i].equipo))
.then((_) => {
this.appGateway.actualizarOperador(
prestamos[i].equipo.carrito.modulo.institucion.id_institucion,
@ -299,9 +301,10 @@ export class PrestamoService {
: ahora.add(operadorEntrega.institucion.tiempo_prestamo, 'm').toDate();
prestamo.operadorEntrega = operadorEntrega;
prestamo.equipo.prestado = true;
prestamo.equipo.status.id_status = 3;
return this.repository
.save(prestamo)
.then((_) => this.equipoService.update(prestamo.equipo, null, 3))
.then((_) => this.equipoService.updateStatus(prestamo.equipo))
.then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
this.appGateway.actualizarOperador(
@ -792,6 +795,7 @@ export class PrestamoService {
prestamo.fecha_entrega = ahora.toDate();
prestamo.operadorRegreso = operadorRegreso;
prestamo.equipo.u = null;
prestamo.equipo.status.id_status = id_status;
if (semanasCastigo > 0) {
const mensajeTardanza = `El usaurio se tardó: ${tardanza} minutos en entregar el equipo de cómputo.`;
@ -821,10 +825,8 @@ export class PrestamoService {
return this.repository
.save(prestamo)
.then((_) =>
this.equipoService.update(
this.equipoService.updateStatus(
prestamo.equipo,
null,
id_status,
operadorRegreso,
motivo,
),