From c321917ed3b5c67777a83cf98feadf82a5c6cbdb Mon Sep 17 00:00:00 2001 From: Emilio-11 Date: Fri, 28 Nov 2025 16:04:44 -0600 Subject: [PATCH] se agregaron reportes por estado --- mariadb/aria_log.00000001 | Bin 5201920 -> 5251072 bytes mariadb/aria_log_control | Bin 52 -> 52 bytes src/auth/auth.controller.ts | 9 ++- src/auth/auth.service.ts | 28 ++++--- src/equipo/equipo.controller.ts | 132 +++++++++++++++++++------------- src/equipo/equipo.service.ts | 127 +++++++++++++++++++++--------- 6 files changed, 195 insertions(+), 101 deletions(-) diff --git a/mariadb/aria_log.00000001 b/mariadb/aria_log.00000001 index ff04aefa0afd45524640893797ef7b4c85bdba44..dd78141d1139eeea0369eae14a2930e4e187a6cc 100644 GIT binary patch delta 28242 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 delta 177 zcmV~$OEy9Q007YAp`s|?^3VTYN+pp(NT?-Pg;A3?xEp9>Bc{%IOR@y_hEWuR(QgnM z6BsvPQcPUJlxayRGiIe_%$c`f(UN6ZIV)DJS+`-+mb`5{cJ0}B;Lwp{Cr+I?S5S1J vr0h~fRn3*UYYjJUHQi}xyZ7Kx$CGC-x?c6XdH13JGZ=n;|FsgCQTyv3go8cA diff --git a/mariadb/aria_log_control b/mariadb/aria_log_control index 89f4654b816f6108fdcfa22bce6565e03045ed11..cdb0387dbeae8f4280d9b628e9644fc90152a917 100644 GIT binary patch delta 27 fcmXppnII=-Rj)jSk%6IDE`R|@F(@hk2?hoLNeu(R delta 27 fcmXppnII?jM0}MkBLjnfygvhwVmKuYBp4U~Ssn!Q diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 8a8e482..992b521 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -25,6 +25,11 @@ export class AuthController { return this.authService.registro(registroDto); } + @Post('registro/Masivo') + registroMasivo(@Body() registroDto: CreateUsuarioDto[]) { + return this.authService.registroMasivo(registroDto); + } + @UseGuards(AuthGuard('jwt')) @Get('buscar') search() { @@ -39,8 +44,8 @@ export class AuthController { if (!id_usuario) { throw new NotFoundException('token sin id_usuario'); } - - return this.authService.update(registroDto,id_usuario); + + return this.authService.update(registroDto, id_usuario); } @Post('login') diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index aee65eb..dab6a77 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -18,16 +18,13 @@ export class AuthService { private readonly jwtService: JwtService, ) {} - async update(registroDto: UpdateUsuarioDto, id_User:number) { - const update_data = await this.usuarioService.actualizarUsuario( - id_User, - { - nombre: registroDto.nombre, - contraseñaN: registroDto.contraseñaN, - id_tipo_usuario: registroDto.tipoUsuario, - contraseñaV: registroDto.contraseñaV, - }, - ); + async update(registroDto: UpdateUsuarioDto, id_User: number) { + const update_data = await this.usuarioService.actualizarUsuario(id_User, { + nombre: registroDto.nombre, + contraseñaN: registroDto.contraseñaN, + id_tipo_usuario: registroDto.tipoUsuario, + contraseñaV: registroDto.contraseñaV, + }); return update_data; } @@ -59,6 +56,17 @@ export class AuthService { } } + async registroMasivo(usuarios: CreateUsuarioDto[]) { + let resultados: string[] = []; + + for (const usuario of usuarios) { + const creado = await this.registro(usuario); + resultados.push(creado.message); + } + + return resultados; + } + async login({ nombre, contraseña }: LoginDto) { const usuario = await this.usuarioService.findOneByName(nombre); if (!usuario) { diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index bb15c10..eb8fcc4 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -146,21 +146,20 @@ export class EquipoController { } } - @UseGuards(AuthGuard('jwt')) - @Get('reporte') - async reporte() { + @Post('reporte') + async reporte(@Body() estado: string[]) { try { - return await this.equipoService.generar_reporte(); + return await this.equipoService.generar_reporte(estado); } catch (error) { throw new BadRequestException('Error al generar el reporte:', error); } } @UseGuards(AuthGuard('jwt')) - @Get('reporte/tipoEquipos_tipoUso') - async reportetipoEquipos_tipoUso() { + @Post('reporte/tipoEquipos_tipoUso') + async reportetipoEquipos_tipoUso(@Body() estado: string[]) { try { - return await this.equipoService.contar_tipoEquipos_tipoUso(); + return await this.equipoService.contar_tipoEquipos_tipoUso(estado); } catch (error) { throw new BadRequestException( 'Error al generar el reporte tipoEquipos_tipoUso:', @@ -170,19 +169,30 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/tipoEquipos_sistemasOperativos') - async reportetipoEquipos_sistemasOperativos() { + @Post('reporte/tipoEquipos_sistemasOperativos') + async reportetipoEquipos_sistemasOperativos(@Body() estado: string[]) { try { return await Promise.all([ - this.equipoService.contar_tipoEquipos_sistemasOperativos(equpos_pc), - this.equipoService.contar_tipoEquipos_sistemasOperativos([ - estritorio_mac, - ]), - this.equipoService.contar_tipoEquipos_sistemasOperativos(portatiles), - this.equipoService.contar_tipoEquipos_sistemasOperativos([ - portatiles_mac, - ]), - this.equipoService.contar_tipoEquipos_sistemasOperativos([servidor]), + this.equipoService.contar_tipoEquipos_sistemasOperativos( + equpos_pc, + estado, + ), + this.equipoService.contar_tipoEquipos_sistemasOperativos( + [estritorio_mac], + estado, + ), + this.equipoService.contar_tipoEquipos_sistemasOperativos( + portatiles, + estado, + ), + this.equipoService.contar_tipoEquipos_sistemasOperativos( + [portatiles_mac], + estado, + ), + this.equipoService.contar_tipoEquipos_sistemasOperativos( + [servidor], + estado, + ), ]); } catch (error) { throw new BadRequestException( @@ -193,15 +203,21 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/tipoEquipos_procesador') - async reportetipoEquipos_procesador() { + @Post('reporte/tipoEquipos_procesador') + async reportetipoEquipos_procesador(@Body() estado: string[]) { try { return await Promise.all([ - this.equipoService.contar_tipoEquipos_procesador(equpos_pc), - this.equipoService.contar_tipoEquipos_procesador([estritorio_mac]), - this.equipoService.contar_tipoEquipos_procesador(portatiles), - this.equipoService.contar_tipoEquipos_procesador([portatiles_mac]), - this.equipoService.contar_tipoEquipos_procesador([servidor]), + this.equipoService.contar_tipoEquipos_procesador(equpos_pc, estado), + this.equipoService.contar_tipoEquipos_procesador( + [estritorio_mac], + estado, + ), + this.equipoService.contar_tipoEquipos_procesador(portatiles, estado), + this.equipoService.contar_tipoEquipos_procesador( + [portatiles_mac], + estado, + ), + this.equipoService.contar_tipoEquipos_procesador([servidor], estado), ]); } catch (error) { throw new BadRequestException( @@ -212,10 +228,10 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/tipoEquipos_antiguedad') - async reportetipoEquipos_antiguedad() { + @Post('reporte/tipoEquipos_antiguedad') + async reportetipoEquipos_antiguedad(@Body() estado: string[]) { try { - return await this.equipoService.contar_tipoEquipos_antiguedad(); + return await this.equipoService.contar_tipoEquipos_antiguedad(estado); } catch (error) { throw new BadRequestException( 'Error al generar el reporte contar_tipoEquipos_antiguedad:', @@ -225,13 +241,13 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/garantia') - async reportegarantia() { + @Post('reporte/garantia') + async reportegarantia(@Body() estado: string[]) { try { return await Promise.all([ - this.equipoService.garantia(escritorio), - this.equipoService.garantia(portatil), - this.equipoService.garantia([servidor]), + this.equipoService.garantia(escritorio, estado), + this.equipoService.garantia(portatil, estado), + this.equipoService.garantia([servidor], estado), ]); } catch (error) { throw new BadRequestException( @@ -242,10 +258,13 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/equipos_impesion_group/impresoras') - async reporteequipos_impesion_group() { + @Post('reporte/equipos_impesion_group/impresoras') + async reporteequipos_impesion_group(@Body() estado: string[]) { try { - return await this.equipoService.equipos_impesion_group(impresoras); + return await this.equipoService.equipos_impesion_group( + impresoras, + estado, + ); } catch (error) { throw new BadRequestException( 'Error al generar el reporte impesion_group impresoras:', @@ -255,10 +274,10 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/equipos_impesion_group/dijitales') - async reporteequipos_impesion_group_dijitales() { + @Post('reporte/equipos_impesion_group/dijitales') + async reporteequipos_impesion_group_dijitales(@Body() estado: string[]) { try { - return await this.equipoService.equipos_impesion_group(dijitales); + return await this.equipoService.equipos_impesion_group(dijitales, estado); } catch (error) { throw new BadRequestException( 'Error al generar el reporte impesion_group dijitales:', @@ -268,10 +287,13 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/contar_periferico_tipoUso/impresoras') - async reporte_contar_periferico_tipoUso_impresoras() { + @Post('reporte/contar_periferico_tipoUso/impresoras') + async reporte_contar_periferico_tipoUso_impresoras(@Body() estado: string[]) { try { - return await this.equipoService.contar_periferico_tipoUso(impresoras); + return await this.equipoService.contar_periferico_tipoUso( + impresoras, + estado, + ); } catch (error) { throw new BadRequestException( 'Error al generar el reporte periferico_tipoUso impresoras:', @@ -281,10 +303,13 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/contar_periferico_tipoUso/dijtales') - async reporte_contar_periferico_tipoUso_dijtales() { + @Post('reporte/contar_periferico_tipoUso/dijtales') + async reporte_contar_periferico_tipoUso_dijtales(@Body() estado: string[]) { try { - return await this.equipoService.contar_periferico_tipoUso(dijitales); + return await this.equipoService.contar_periferico_tipoUso( + dijitales, + estado, + ); } catch (error) { throw new BadRequestException( 'Error al generar el reporte periferico_tipoUso dijtales:', @@ -294,12 +319,13 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/contar_perifericos_antiguedad') - async reporte_contar_perifericos_antiguedad() { + @Post('reporte/contar_perifericos_antiguedad') + async reporte_contar_perifericos_antiguedad(@Body() estado: string[]) { try { return await this.equipoService.contar_perifericos_antiguedad( impresoras, dijitales, + estado, ); } catch (error) { throw new BadRequestException( @@ -310,10 +336,10 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/contar_laboratorio') - async reporte_contar_laboratorio() { + @Post('reporte/contar_laboratorio') + async reporte_contar_laboratorio(@Body() estado: string[]) { try { - return await this.equipoService.laboratorio_equipos(); + return await this.equipoService.laboratorio_equipos(estado); } catch (error) { throw new BadRequestException( 'Error al generar el reporte perifericos_antiguedad:', @@ -323,10 +349,10 @@ export class EquipoController { } @UseGuards(AuthGuard('jwt')) - @Get('reporte/contar_proyecto') - async reporte_contar_proyecto() { + @Post('reporte/contar_proyecto') + async reporte_contar_proyecto(@Body() estado: string[]) { try { - return await this.equipoService.proyecto_equipos(); + return await this.equipoService.proyecto_equipos(estado); } catch (error) { throw new BadRequestException( 'Error al generar el reporte perifericos_antiguedad:', diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index d51a2cb..2cc7d99 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -436,14 +436,16 @@ export class EquipoService { return objectParse; } - async contar_tipoEquipos_tipoUso(): Promise { + async contar_tipoEquipos_tipoUso(estado: string[]): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') // une la tabla usuario .innerJoin('e.tipoUso', 'u') // une la tabla categoria + .innerJoin('e.estado', 'es') .select(['u.tipo_uso AS uso', 't.tipo_equipo AS categoria']) .addSelect('COUNT(*) AS total') + .andWhere('es.estado IN (:...estado)', { estado }) .groupBy('t.id_tipo_de_equipo') .addGroupBy('u.id_uso') .getRawMany(); @@ -457,13 +459,16 @@ export class EquipoService { async contar_tipoEquipos_sistemasOperativos( tipo_equipo: string[], + estado: string[], ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') .innerJoin('e.sistemaOperativo', 's') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['s.sistema_operativo AS sistema_operativo']) .addSelect('COUNT(*) AS total') .groupBy('s.sistema_operativo') @@ -476,14 +481,19 @@ export class EquipoService { } } - async contar_tipoEquipos_procesador(tipo_equipo: string[]): Promise { + async contar_tipoEquipos_procesador( + tipo_equipo: string[], + estado: string[], + ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.procesador', 'p') .innerJoin('e.tipoEquipo', 't') .innerJoin('e.tipoUso', 'u') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['p.procesador AS procesador', 'u.tipo_uso AS uso']) .addSelect('COUNT(*) AS total') .groupBy('p.procesador') @@ -497,12 +507,17 @@ export class EquipoService { } } - async contar_tipoEquipos(tipo_equipo: string[]): Promise { + async contar_tipoEquipos( + tipo_equipo: string[], + estado: string[], + ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo }) + .andWhere('es.estado IN (:...estado)', { estado }) .select('COUNT(*) AS total') .getRawOne(); @@ -513,27 +528,34 @@ export class EquipoService { } } - async contar_tipoEquipos_antiguedad(): Promise { - const totalEscrtitorio = await this.contar_tipoEquipos(escritorio); - const totalPortatiles = await this.contar_tipoEquipos(portatil); - const totalAltoRendimiento = await this.contar_tipoEquipos(['SERVIDOR']); + async contar_tipoEquipos_antiguedad(estado: string[]): Promise { + const totalEscrtitorio = await this.contar_tipoEquipos(escritorio, estado); + const totalPortatiles = await this.contar_tipoEquipos(portatil, estado); + const totalAltoRendimiento = await this.contar_tipoEquipos( + ['SERVIDOR'], + estado, + ); try { const countEscritorios = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo: escritorio, }) .select(['e.antiguedad AS antiguedad']) + .andWhere('es.estado IN (:...estado)', { estado }) .addSelect('COUNT(*) AS total') .groupBy('e.antiguedad') .getRawMany(); const countPortatiles = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo: portatil, }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['e.antiguedad AS antiguedad']) .addSelect('COUNT(*) AS total') .groupBy('e.antiguedad') @@ -541,9 +563,11 @@ export class EquipoService { const countAltoRendimiento = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo: ['SERVIDOR'], }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['e.antiguedad AS antiguedad']) .addSelect('COUNT(*) AS total') .groupBy('e.antiguedad') @@ -574,13 +598,15 @@ export class EquipoService { } } - async garantia(tipo_equipo: string[]): Promise { + async garantia(tipo_equipo: string[], estado: string[]): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('e.fechaFactura >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR)') .andWhere('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo }) + .andWhere('es.estado IN (:...estado)', { estado }) .getCount(); return count; @@ -590,13 +616,18 @@ export class EquipoService { } } - async equipos_impesion(perifericos: string[]): Promise { + async equipos_impesion( + perifericos: string[], + estado: string[], + ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.periferico', 'p') + .innerJoin('e.estado', 'es') .select(['p.periferico AS periferico']) .where('p.periferico IN (:...perifericos)', { perifericos }) + .andWhere('es.estado IN (:...estado)', { estado }) .getCount(); return count; @@ -606,12 +637,17 @@ export class EquipoService { } } - async equipos_impesion_group(perifericos: string[]): Promise { + async equipos_impesion_group( + perifericos: string[], + estado: string[], + ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.periferico', 'p') + .innerJoin('e.estado', 'es') .where('p.periferico IN (:...perifericos)', { perifericos }) + .andWhere('es.estado IN (:...estado)', { estado }) .select('p.periferico AS periferico') .addSelect('COUNT(*) AS total') .groupBy('p.periferico') @@ -624,13 +660,18 @@ export class EquipoService { } } - async contar_periferico_tipoUso(perifericos: string[]): Promise { + async contar_periferico_tipoUso( + perifericos: string[], + estado: string[], + ): Promise { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.tipoUso', 't') .innerJoin('e.periferico', 'p') + .innerJoin('e.estado', 'es') .where('p.periferico IN (:...perifericos)', { perifericos }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['t.tipo_uso AS uso']) .addSelect('COUNT(*) AS total') .groupBy('t.tipo_uso') @@ -646,6 +687,7 @@ export class EquipoService { async contar_perifericos_antiguedad( impresion: string[], digitalizacion: string[], + estado: string[], ): Promise<{ impresion: { antiguedad: any; total: number; porcentaje: string }[]; digitalizacion: { antiguedad: any; total: number; porcentaje: string }[]; @@ -657,7 +699,9 @@ export class EquipoService { return this.equipoRepository .createQueryBuilder('e') .innerJoin('e.periferico', 'p') + .innerJoin('e.estado', 'es') .where('p.periferico IN (:...tipos)', { tipos }) + .andWhere('es.estado IN (:...estado)', { estado }) .select('COUNT(*) AS total') .getRawOne(); }; @@ -677,7 +721,9 @@ export class EquipoService { .createQueryBuilder('e') .innerJoin('e.periferico', 'p') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('p.periferico IN (:...periferico)', { periferico: impresion }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['e.antiguedad AS antiguedad']) .addSelect('COUNT(e.id_equipo) AS total') .groupBy('e.antiguedad') @@ -688,9 +734,11 @@ export class EquipoService { .createQueryBuilder('e') .innerJoin('e.periferico', 'p') .innerJoin('e.tipoEquipo', 't') + .innerJoin('e.estado', 'es') .where('p.periferico IN (:...periferico)', { periferico: digitalizacion, }) + .andWhere('es.estado IN (:...estado)', { estado }) .select(['e.antiguedad AS antiguedad']) .addSelect('COUNT(e.id_equipo) AS total') .groupBy('e.antiguedad') @@ -748,12 +796,14 @@ export class EquipoService { } } - async proyecto_equipos() { + async proyecto_equipos(estado: string[]) { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.proyecto', 'p') + .innerJoin('e.estado', 'es') .select(['p.proyecto AS proyecto']) + .andWhere('es.estado IN (:...estado)', { estado }) .addSelect('COUNT(*) AS total') .groupBy('p.proyecto') .getRawMany(); @@ -765,12 +815,14 @@ export class EquipoService { } } - async laboratorio_equipos() { + async laboratorio_equipos(estado: string[]) { try { const count = await this.equipoRepository .createQueryBuilder('e') .innerJoin('e.laboratorio', 'l') + .innerJoin('e.estado', 'es') .select(['l.laboratorio AS laboratorio']) + .andWhere('es.estado IN (:...estado)', { estado }) .addSelect('COUNT(*) AS total') .groupBy('l.laboratorio') .getRawMany(); @@ -782,7 +834,7 @@ export class EquipoService { } } - async generar_reporte() { + async generar_reporte(estado: string[] = estado_excluidos) { const [ contar_equipos_de_tipo_uso, sisitema_operativo_pc, @@ -807,28 +859,28 @@ export class EquipoService { cotar_laboratorios, contar_proyectos, ] = await Promise.all([ - this.contar_tipoEquipos_tipoUso(), - this.contar_tipoEquipos_sistemasOperativos(equpos_pc), - this.contar_tipoEquipos_sistemasOperativos([estritorio_mac]), - this.contar_tipoEquipos_sistemasOperativos(portatiles), - this.contar_tipoEquipos_sistemasOperativos([portatiles_mac]), - this.contar_tipoEquipos_sistemasOperativos([servidor]), - this.contar_tipoEquipos_procesador(equpos_pc), - this.contar_tipoEquipos_procesador([estritorio_mac]), - this.contar_tipoEquipos_procesador(portatiles), - this.contar_tipoEquipos_procesador([portatiles_mac]), - this.contar_tipoEquipos_procesador([servidor]), - this.contar_tipoEquipos_antiguedad(), - this.garantia(escritorio), - this.garantia(portatil), - this.garantia([servidor]), - this.equipos_impesion_group(impresoras), - this.contar_periferico_tipoUso(impresoras), - this.equipos_impesion_group(dijitales), - this.contar_periferico_tipoUso(dijitales), - this.contar_perifericos_antiguedad(impresoras, dijitales), - this.proyecto_equipos(), - this.laboratorio_equipos(), + this.contar_tipoEquipos_tipoUso(estado), + this.contar_tipoEquipos_sistemasOperativos(equpos_pc, estado), + this.contar_tipoEquipos_sistemasOperativos([estritorio_mac], estado), + this.contar_tipoEquipos_sistemasOperativos(portatiles, estado), + this.contar_tipoEquipos_sistemasOperativos([portatiles_mac], estado), + this.contar_tipoEquipos_sistemasOperativos([servidor], estado), + this.contar_tipoEquipos_procesador(equpos_pc, estado), + this.contar_tipoEquipos_procesador([estritorio_mac], estado), + this.contar_tipoEquipos_procesador(portatiles, estado), + this.contar_tipoEquipos_procesador([portatiles_mac], estado), + this.contar_tipoEquipos_procesador([servidor], estado), + this.contar_tipoEquipos_antiguedad(estado), + this.garantia(escritorio, estado), + this.garantia(portatil, estado), + this.garantia([servidor], estado), + this.equipos_impesion_group(impresoras, estado), + this.contar_periferico_tipoUso(impresoras, estado), + this.equipos_impesion_group(dijitales, estado), + this.contar_periferico_tipoUso(dijitales, estado), + this.contar_perifericos_antiguedad(impresoras, dijitales, estado), + this.proyecto_equipos(estado), + this.laboratorio_equipos(estado), ]); return { @@ -920,6 +972,9 @@ export class EquipoService { } } +let estado_excluidos = ['DE BAJA']; +let estado_inclyuidos = ['EN DESUSO', 'EN USO']; + let escritorio = ['ESCRITORIO PC', 'ESCRITORIO MAC OS ', 'ESCRITORIO LINUX']; let portatil = [ 'PORTÁTILES WINDOWS',