crear relaciones en tabla intermedia

This commit is contained in:
2025-11-11 09:18:22 -06:00
parent 0cbc8b8f68
commit 090c5af0b3
4 changed files with 58 additions and 19 deletions
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -21,7 +21,7 @@ import type { Response } from 'express';
@Controller('equipos')
export class EquipoController {
constructor(private readonly equipoService: EquipoService) { }
constructor(private readonly equipoService: EquipoService) {}
@UseGuards(AuthGuard('jwt'))
@Get('buscar')
async buscarEquipos(
@@ -128,7 +128,7 @@ export class EquipoController {
try {
return await this.equipoService.generar_reporte();
} catch (error) {
throw new BadRequestException('Error al generar el Excel:', error);
throw new BadRequestException('Error al generar el reporte:', error);
}
}
@UseGuards(AuthGuard('jwt'))
+56 -17
View File
@@ -1,4 +1,8 @@
import { BadRequestException, Injectable } from '@nestjs/common';
import {
BadRequestException,
Injectable,
NotFoundException,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Equipo } from './entities/equipo.entity';
@@ -55,7 +59,7 @@ export class EquipoService {
@InjectRepository(ProcesadorTipoEquipo)
private readonly procesadorTipoEquipoRepo: Repository<ProcesadorTipoEquipo>,
) { }
) {}
async buscarEquipos(filtros: any, page: number = 1, limit: number = 10) {
const query = this.equipoRepository
@@ -131,12 +135,35 @@ export class EquipoService {
};
}
async updateEquipo(equipoNuevo: UpdateEquipoDto, id_equipo: number, id_user) {
let equipo = await this.equipoRepository.findOne({
where: { id_equipo },
relations: ['tipoEquipo'],
});
if (!equipo) {
throw new NotFoundException('No se encontó equipo');
}
let procesador_tipoequipo;
if (equipoNuevo.id_procesador) {
procesador_tipoequipo = await this.procesadorTipoEquipoRepo.findOne({
where: { procesador: { id_procesador: equipoNuevo.id_procesador } },
where: {
procesador: { id_procesador: equipoNuevo.id_procesador },
tipoEquipo: {
id_tipo_de_equipo: equipo.tipoEquipo.id_tipo_de_equipo,
},
},
relations: ['procesador', 'tipoEquipo'],
});
if (!procesador_tipoequipo) {
procesador_tipoequipo = await this.procesadorTipoEquipoRepo.save({
procesador: { id_procesador: equipoNuevo.id_procesador },
tipoEquipo: {
id_tipo_de_equipo: equipo.tipoEquipo.id_tipo_de_equipo,
},
});
}
}
const updateData = {
@@ -252,17 +279,33 @@ export class EquipoService {
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
});
} else {
const procesador_tipoequipo =
await this.procesadorTipoEquipoRepo.findOneBy({
procesador: { id_procesador: equipo.id_procesador },
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
});
let procesador = await this.procesadorRepo.findOne({
where: { id_procesador: equipo.id_procesador },
relations: ['procesador', 'tipoEquipo'],
});
let tipo_equipo = await this.tipoEquipoRepo.findOne({
where: { id_tipo_de_equipo: equipo.id_procesador },
});
if (!procesador_tipoequipo) {
throw new Error(
`No se encontró la combinación de procesador y tipo de equipo proporcionados.`,
if (!procesador || !tipo_equipo) {
throw new NotFoundException(
'No se encontro procesador ni tipo de equipo',
);
}
let procesador_tipoequipo = await this.procesadorTipoEquipoRepo.findOne({
where: { procesador: procesador, tipoEquipo: tipo_equipo },
});
if (!procesador_tipoequipo) {
procesador_tipoequipo = await this.procesadorTipoEquipoRepo.create({
procesador,
tipoEquipo: tipo_equipo,
});
procesador_tipoequipo = await this.procesadorTipoEquipoRepo.save(
procesador_tipoequipo,
);
}
nuevoEquipo = this.equipoRepository.create({
procesador_tipoequipo: procesador_tipoequipo,
inventario: equipo.inventario,
@@ -276,7 +319,7 @@ export class EquipoService {
sistemaOperativo: { id_sistema_operativo: equipo.id_sistema_operativo },
tipoUso: { id_uso: equipo.id_uso },
marca: { id_marca: equipo.id_marca },
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
tipoEquipo: tipo_equipo,
});
}
@@ -832,11 +875,7 @@ export class EquipoService {
}
}
let escritorio = [
'ESCRITORIO PC',
'ESCRITORIO MAC OS ',
'ESCRITORIO LINUX',
];
let escritorio = ['ESCRITORIO PC', 'ESCRITORIO MAC OS ', 'ESCRITORIO LINUX'];
let portatil = [
'PORTÁTILES WINDOWS',
'PORTÁTILES CHROMEBOOK',