added new ep graficaPolar
This commit is contained in:
@@ -55,4 +55,12 @@ export class FiltrosTablaDto {
|
||||
@IsString({ each: true })
|
||||
antiguedad?: string[]
|
||||
|
||||
}
|
||||
|
||||
|
||||
export class FiltrosPolarDto {
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
adscripciones?: string[]
|
||||
}
|
||||
@@ -19,11 +19,12 @@ import { UpdateEquipoDto } from './dto/update-equipo.dto';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { CreateEquipoDto } from './dto/create-equipo.dto';
|
||||
import type { Response } from 'express';
|
||||
import { FiltrosGraficaDto, FiltrosTablaDto } from './dto/grafica.dto';
|
||||
import { FiltrosGraficaDto, FiltrosPolarDto, FiltrosTablaDto } from './dto/grafica.dto';
|
||||
|
||||
@Controller('equipos')
|
||||
export class EquipoController {
|
||||
constructor(private readonly equipoService: EquipoService) { }
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Get('buscar')
|
||||
async buscarEquipos(
|
||||
@@ -34,6 +35,7 @@ export class EquipoController {
|
||||
return this.equipoService.buscarEquipos(filtros, +page, +limit);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('grafica/:tipo')
|
||||
async grafica(
|
||||
@Param("tipo") tipo: 'antiguedad' | 'uso' | 'so' | 'procesador',
|
||||
@@ -42,7 +44,16 @@ export class EquipoController {
|
||||
return this.equipoService.grafica(tipo, filtros);
|
||||
}
|
||||
|
||||
@Post('graficaPerifericos/:tipo')
|
||||
@Post('graficaPolar/:tipo')
|
||||
async graficaPolar(
|
||||
@Param("tipo") tipo: 'ALUMNO' | 'PROFESOR' | 'ADMINISTRATIVO',
|
||||
@Body() filtros: FiltrosPolarDto
|
||||
) {
|
||||
return this.equipoService.graficaPolar(tipo, filtros);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('graficaPerifericos/:tipo')
|
||||
async graficaPerifericos(
|
||||
@Param("tipo") tipo: 'antiguedad' | 'uso' | 'so' | 'procesador',
|
||||
@Body() filtros: FiltrosGraficaDto
|
||||
@@ -50,6 +61,7 @@ export class EquipoController {
|
||||
return this.equipoService.graficaPerifericos(tipo, filtros);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('tabla')
|
||||
async tabla(
|
||||
@Body() filtros: FiltrosTablaDto
|
||||
@@ -57,6 +69,7 @@ export class EquipoController {
|
||||
return this.equipoService.tabla(filtros);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('tabla/count')
|
||||
async tablacount(
|
||||
@Body() filtros: FiltrosTablaDto
|
||||
@@ -64,6 +77,7 @@ export class EquipoController {
|
||||
return this.equipoService.tablaCount(filtros);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('excel/tabla')
|
||||
async exceltabla(
|
||||
@Res() res: Response,
|
||||
@@ -80,6 +94,7 @@ export class EquipoController {
|
||||
res.send(buffer);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Post('excel/tabla/count')
|
||||
async exceltablacount(
|
||||
@Res() res: Response,
|
||||
|
||||
@@ -28,7 +28,7 @@ import { CreateEquipoDto } from './dto/create-equipo.dto';
|
||||
|
||||
import { MovimientoService } from 'src/movimiento/movimiento.service';
|
||||
import { Cron } from '@nestjs/schedule';
|
||||
import { FiltrosGraficaDto, FiltrosTablaDto } from './dto/grafica.dto';
|
||||
import { FiltrosGraficaDto, FiltrosPolarDto, FiltrosTablaDto } from './dto/grafica.dto';
|
||||
|
||||
@Injectable()
|
||||
export class EquipoService {
|
||||
@@ -1744,6 +1744,45 @@ export class EquipoService {
|
||||
|
||||
return await workbook.xlsx.writeBuffer();
|
||||
}
|
||||
|
||||
async graficaPolar(tipo: 'ALUMNO' | 'PROFESOR' | 'ADMINISTRATIVO', filtros?: FiltrosPolarDto) {
|
||||
const qb = this.equipoRepository
|
||||
.createQueryBuilder('equipo')
|
||||
.leftJoin('equipo.tipoUso', 'tipoUso')
|
||||
.leftJoin('equipo.adscripcion', 'adscripcion')
|
||||
.andWhere('tipoUso.tipo_uso = :uso', {
|
||||
uso: tipo
|
||||
});
|
||||
|
||||
const tieneFiltroReal = (arr?: string[]) => arr?.length && !arr.includes("0") && !arr.includes("Todos");
|
||||
|
||||
qb.andWhere('equipo.id_periferico IS NULL')
|
||||
// ADSCRIPCIONES
|
||||
if (filtros?.adscripciones?.length) {
|
||||
qb.addSelect('adscripcion.adscripcion', 'adscripcion');
|
||||
|
||||
|
||||
if (tieneFiltroReal(filtros.adscripciones)) {
|
||||
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
|
||||
adscripciones: filtros.adscripciones
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return qb
|
||||
.select('equipo.antiguedad', 'antiguedad')
|
||||
.addSelect('COUNT(*)', 'total')
|
||||
.groupBy('equipo.antiguedad')
|
||||
.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
|
||||
`)
|
||||
.getRawMany();
|
||||
}
|
||||
}
|
||||
|
||||
let estado_excluidos = ['DE BAJA'];
|
||||
|
||||
Reference in New Issue
Block a user