This commit is contained in:
Drakthor475
2025-10-23 11:50:47 -06:00
10 changed files with 169 additions and 65 deletions
+6 -5
View File
@@ -9,12 +9,11 @@ import { Adscripcion, Estado, Marca, Procesador, SistemaOperativo, TipoEquipo, U
import { Movimiento } from 'src/movimiento/entities/movimiento.entity';
@Entity()
export class Equipo {
@PrimaryGeneratedColumn()
id_equipo: number;
//checar bien aqui si estoy bien
@Column({ length: 100, nullable: true })
inventario: string;
@@ -55,11 +54,13 @@ export class Equipo {
@ManyToOne(() => Marca, (marca) => marca.equipo)
marca: Marca;
@OneToMany(() => Equipo, (equipo) => equipo.marca)
@OneToMany(() => Equipo, (equipo) => equipo.marca)
equipo: Equipo[];
@OneToMany(() => Movimiento, (mov) => mov.equipo)
movimientos: Movimiento[];
@OneToMany(()=> Movimiento, movimiento=>movimiento.id_movimiento)
movimiento:Movimiento[];
}
+11 -2
View File
@@ -1,12 +1,21 @@
import { Controller, Body, Patch, Param, ParseIntPipe, UseGuards } from '@nestjs/common';
import { Controller, Body, Patch, Param, ParseIntPipe, UseGuards,Get, Query } from '@nestjs/common';
import { EquipoService } from './equipo.service';
import { UpdateEquipoDto } from './dto/update-equipo.dto';
import { AuthGuard } from '@nestjs/passport';
@Controller('equipo')
@Controller('equipos')
export class EquipoController {
constructor(private readonly equipoService: EquipoService) {}
@Get('buscar')
async buscarEquipos(
@Query() filtros: any,
@Query('page') page: number = 1,
@Query('limit') limit: number = 10,
) {
return this.equipoService.buscarEquipos(filtros, +page, +limit);
}
@UseGuards(AuthGuard("jwt"))
@Patch("update/:id")
update(@Param('id', ParseIntPipe) id:number, @Body() equipoNuevo: UpdateEquipoDto) {
+80 -5
View File
@@ -1,16 +1,90 @@
import { Injectable } from '@nestjs/common';
import { UpdateEquipoDto } from './dto/update-equipo.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { Equipo } from './entities/equipo.entity';
import { Repository } from 'typeorm';
import { Equipo } from './entities/equipo.entity';
import { UpdateEquipoDto } from './dto/update-equipo.dto'
@Injectable()
export class EquipoService {
constructor(
@InjectRepository(Equipo)
private readonly equipoRepository: Repository <Equipo>
){}
async updateEquipo(equipoNuevo:UpdateEquipoDto,id_equipo:number){
private readonly equipoRepository: Repository<Equipo>,
) {}
async buscarEquipos(filtros: any, page: number = 1, limit: number = 10) {
const query = this.equipoRepository
.createQueryBuilder('equipo')
.leftJoinAndSelect('equipo.marca', 'marca')
.leftJoinAndSelect('equipo.estado', 'estado')
.leftJoinAndSelect('equipo.adscripcion', 'adscripcion')
.leftJoinAndSelect('equipo.tipoEquipo', 'tipoEquipo')
.leftJoinAndSelect('equipo.sistemaOperativo', 'sistemaOperativo')
.leftJoinAndSelect('equipo.procesador', 'procesador')
.leftJoinAndSelect('equipo.tipoUso', 'tipoUso');
// Filtros dinámicos
if (filtros.inventario) {
query.andWhere('equipo.inventario LIKE :inventario', {
inventario: `%${filtros.inventario}%`,
});
}
if (filtros.tipoEquipo) {
query.andWhere('tipoEquipo.id = :tipoEquipo', {
tipoEquipo: filtros.tipoEquipo,
});
}
if (filtros.antiguedad) {
query.andWhere('equipo.antiguedad LIKE :antiguedad', {
antiguedad: `%${filtros.antiguedad}%`,
});
}
if (filtros.marca) {
query.andWhere('marca.id = :marca', { marca: filtros.marca });
}
if (filtros.estado) {
query.andWhere('estado.id = :estado', { estado: filtros.estado });
}
if (filtros.adscripcion) {
query.andWhere('adscripcion.id = :adscripcion', {
adscripcion: filtros.adscripcion,
});
}
if (filtros.tipoUso) {
query.andWhere('tipoUso.id = :tipoUso', { tipoUso: filtros.tipoUso });
}
if (filtros.procesador) {
query.andWhere('procesador.id = :procesador', {
procesador: filtros.procesador,
});
}
if (filtros.sistemaOperativo) {
query.andWhere('sistemaOperativo.id = :sistemaOperativo', {
sistemaOperativo: filtros.sistemaOperativo,
});
}
// Paginación
query.skip((page - 1) * limit).take(limit);
// Ejecutar consulta
const [data, total] = await query.getManyAndCount();
return {
total,
page,
limit,
data,
};
}
async updateEquipo(equipoNuevo:UpdateEquipoDto,id_equipo:number){
const updateData={
lugar: equipoNuevo.lugar,
modelo: equipoNuevo.modelo,
@@ -36,3 +110,4 @@ export class EquipoService {
}
}