se agrego un end point para perifericos
This commit is contained in:
@@ -42,6 +42,14 @@ export class EquipoController {
|
||||
return this.equipoService.grafica(tipo, filtros);
|
||||
}
|
||||
|
||||
@Post('graficaPerifericos/:tipo')
|
||||
async graficaPerifericos(
|
||||
@Param("tipo") tipo: 'antiguedad' | 'uso' | 'so' | 'procesador',
|
||||
@Body() filtros: FiltrosGraficaDto
|
||||
) {
|
||||
return this.equipoService.graficaPerifericos(tipo, filtros);
|
||||
}
|
||||
|
||||
@Post('tabla')
|
||||
async tabla(
|
||||
@Body() filtros: FiltrosTablaDto
|
||||
|
||||
@@ -1275,6 +1275,162 @@ export class EquipoService {
|
||||
|
||||
}
|
||||
|
||||
async graficaPerifericos(
|
||||
tipo: 'antiguedad' | 'uso' | 'so' | 'procesador',
|
||||
filtros?: FiltrosGraficaDto
|
||||
) {
|
||||
|
||||
const qb = this.equipoRepository
|
||||
.createQueryBuilder('equipo')
|
||||
.leftJoin('equipo.adscripcion', 'adscripcion')
|
||||
.leftJoin('equipo.procesador', 'procesador')
|
||||
.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo')
|
||||
.leftJoin('equipo.tipoUso', 'tipoUso')
|
||||
|
||||
// filtros
|
||||
.andWhere('equipo.id_periferico IS NOT NULL')
|
||||
if (filtros?.adscripciones?.length) {
|
||||
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
|
||||
adscripciones: filtros.adscripciones
|
||||
})
|
||||
.addSelect('adscripcion.adscripcion', 'adscripcion')
|
||||
.groupBy('equipo.adscripcion')
|
||||
|
||||
}
|
||||
|
||||
if (filtros?.procesadores?.length) {
|
||||
qb.andWhere('procesador.id_procesador IN (:...procesadores)', {
|
||||
procesadores: filtros.procesadores
|
||||
})
|
||||
}
|
||||
|
||||
if (filtros?.sistemas?.length) {
|
||||
qb.andWhere('sistemaOperativo.id_sistema_operativo IN (:...sistemas)', {
|
||||
sistemas: filtros.sistemas
|
||||
})
|
||||
}
|
||||
|
||||
if (filtros?.usos?.length) {
|
||||
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
|
||||
usos: filtros.usos
|
||||
})
|
||||
}
|
||||
|
||||
if (filtros?.antiguedad?.length && !filtros.antiguedad.includes("Todos")) {
|
||||
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
|
||||
antiguedad: filtros.antiguedad
|
||||
})
|
||||
}
|
||||
|
||||
// selector dinámico
|
||||
|
||||
switch (tipo) {
|
||||
|
||||
case 'antiguedad':
|
||||
|
||||
qb.select('equipo.antiguedad', 'antiguedad')
|
||||
.addSelect('COUNT(*)', 'total')
|
||||
|
||||
if (filtros?.adscripciones?.length) {
|
||||
|
||||
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
|
||||
|
||||
qb.groupBy('equipo.antiguedad')
|
||||
.addGroupBy('adscripcion.adscripcion')
|
||||
|
||||
} else {
|
||||
|
||||
qb.groupBy('equipo.antiguedad')
|
||||
|
||||
}
|
||||
|
||||
qb.orderBy(`
|
||||
CASE
|
||||
WHEN equipo.antiguedad = 'Menor a 2 años' THEN 1
|
||||
WHEN equipo.antiguedad = 'Entre 2 y 3 años' THEN 2
|
||||
WHEN equipo.antiguedad = 'Entre 4 y 5 años' THEN 3
|
||||
WHEN equipo.antiguedad = 'Mayor a 6 años' THEN 4
|
||||
END
|
||||
`)
|
||||
|
||||
break
|
||||
|
||||
case 'uso':
|
||||
|
||||
qb.select('tipoUso.tipo_uso', 'uso')
|
||||
.addSelect('COUNT(*)', 'total')
|
||||
|
||||
if (filtros?.adscripciones?.length) {
|
||||
|
||||
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
|
||||
|
||||
qb.groupBy('tipoUso.tipo_uso')
|
||||
.addGroupBy('adscripcion.adscripcion')
|
||||
|
||||
} else {
|
||||
|
||||
qb.groupBy('tipoUso.tipo_uso')
|
||||
|
||||
}
|
||||
|
||||
qb.orderBy(`
|
||||
CASE
|
||||
WHEN tipoUso.tipo_uso = 'ALUMNO' THEN 1
|
||||
WHEN tipoUso.tipo_uso = 'PROFESOR' THEN 2
|
||||
WHEN tipoUso.tipo_uso = 'ADMINISTRATIVO' THEN 3
|
||||
WHEN tipoUso.tipo_uso = 'TÉCNICO ACADEMICO' THEN 4
|
||||
END`)
|
||||
|
||||
break
|
||||
|
||||
case 'so':
|
||||
|
||||
qb.select('sistemaOperativo.sistema_operativo', 'so')
|
||||
.addSelect('COUNT(*)', 'total')
|
||||
|
||||
if (filtros?.adscripciones?.length) {
|
||||
|
||||
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
|
||||
|
||||
qb.groupBy('sistemaOperativo.sistema_operativo')
|
||||
.addGroupBy('adscripcion.adscripcion')
|
||||
|
||||
} else {
|
||||
|
||||
qb.groupBy('sistemaOperativo.sistema_operativo')
|
||||
|
||||
}
|
||||
qb.orderBy(`equipo.adscripcion`, "ASC")
|
||||
|
||||
break
|
||||
|
||||
case 'procesador':
|
||||
|
||||
qb.select('procesador.procesador', 'procesador')
|
||||
.addSelect('COUNT(*)', 'total')
|
||||
|
||||
if (filtros?.adscripciones?.length) {
|
||||
|
||||
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
|
||||
|
||||
qb.groupBy('procesador.procesador')
|
||||
.addGroupBy('adscripcion.adscripcion')
|
||||
|
||||
} else {
|
||||
|
||||
qb.groupBy('procesador.procesador')
|
||||
|
||||
}
|
||||
qb.orderBy(`equipo.adscripcion`, "ASC")
|
||||
|
||||
break
|
||||
|
||||
}
|
||||
return qb.getRawMany()
|
||||
|
||||
}
|
||||
|
||||
|
||||
async tabla(filtros?: FiltrosTablaDto) {
|
||||
const qb = this.equipoRepository
|
||||
.createQueryBuilder('equipo')
|
||||
|
||||
Reference in New Issue
Block a user