equipos con una opción mas

This commit is contained in:
xXpuma99Xx
2022-06-24 19:15:49 -05:00
parent 41925a3e77
commit b2d773bd14
5 changed files with 62 additions and 29 deletions
+30 -26
View File
@@ -91,12 +91,17 @@ export class CarritoService {
id_modulo?: string;
id_tipo_carrito?: string;
}) {
const busqueda: {
modulo?: Modulo | { institucion: Institucion };
activo?: boolean;
carrito?: FindOperator<string>;
tipoCarrito?: TipoCarrito;
} = {};
const query = this.repository
.createQueryBuilder('c')
.innerJoinAndSelect('c.modulo', 'm')
.innerJoinAndSelect('c.tipoCarrito', 'tc')
.innerJoinAndSelect('m.institucion', 'i')
.orderBy('i.institucion')
.addOrderBy('m.modulo')
.addOrderBy('tc.tipo_carrito')
.addOrderBy('c.carrito')
.skip((parseInt(filtros.pagina) - 1) * 25)
.take(25);
const institucion = filtros.id_institucion
? await this.institucionService.findById(parseInt(filtros.id_institucion))
: null;
@@ -109,26 +114,25 @@ export class CarritoService {
)
: null;
if (filtros.activo === 'true') busqueda.activo = true;
if (filtros.activo === 'false') busqueda.activo = false;
if (filtros.carrito) busqueda.carrito = Like(`%${filtros.carrito}%`);
if (tipoCarrito) busqueda.tipoCarrito = tipoCarrito;
if (institucion) busqueda.modulo = { institucion };
if (modulo) busqueda.modulo = modulo;
return this.repository.findAndCount({
join: {
alias: 'c',
innerJoinAndSelect: { m: 'c.modulo', i: 'm.institucion' },
},
where: busqueda,
order: {
modulo: 'ASC',
tipoCarrito: 'ASC',
carrito: 'ASC',
},
skip: (parseInt(filtros.pagina) - 1) * 25,
take: 25,
});
if (filtros.activo === 'true') query.andWhere('c.activo = 1');
if (filtros.activo === 'false') query.andWhere('c.activo = 0');
if (filtros.carrito)
query.andWhere('c.carrito LIKE :carrito', {
carrito: `%${filtros.carrito}%`,
});
if (tipoCarrito)
query.andWhere('tc.id_tipo_carrito = :id_tipo_carrito', {
id_tipo_carrito: tipoCarrito.id_tipo_carrito,
});
if (institucion)
query.andWhere('i.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
});
if (modulo)
query.andWhere('m.id_modulo = :id_modulo', {
id_modulo: modulo.id_modulo,
});
return query.getManyAndCount();
}
findById(id_carrito: number) {
+4
View File
@@ -12,6 +12,10 @@ export class EquiposDto {
@IsOptional()
equipo?: string;
@IsNumberString()
@IsOptional()
id_institucion?: string;
@IsNumberString()
@IsOptional()
id_modulo?: string;
+5
View File
@@ -60,6 +60,11 @@ export class EquipoController {
name: 'equipo',
type: 'string',
})
@ApiQuery({
description: 'Id de la institución que se quiere usar como filtro.',
name: 'id_institucion',
type: 'string',
})
@ApiQuery({
description: 'Id del tipo de carrito que se quiere usar como filtro.',
name: 'id_tipo_carrito',
+10 -2
View File
@@ -88,12 +88,16 @@ export class EquipoService {
pagina: string;
carrito?: string;
equipo?: string;
id_institucion?: string;
id_modulo?: string;
id_programa?: string;
id_tipo_carrito?: string;
id_tipo_entrada?: string;
id_status?: string;
}) {
const institucion = filtros.id_institucion
? await this.institucionService.findById(parseInt(filtros.id_institucion))
: null;
const modulo = filtros.id_modulo
? await this.moduloService.findById(parseInt(filtros.id_modulo))
: null;
@@ -128,7 +132,7 @@ export class EquipoService {
.innerJoinAndSelect('m.institucion', 'i')
.orderBy('i.institucion')
.addOrderBy('m.modulo')
.addOrderBy('tc.id_tipo_carrito')
.addOrderBy('tc.tipo_carrito')
.addOrderBy('c.carrito')
.addOrderBy('e.equipo')
.take(15)
@@ -139,9 +143,13 @@ export class EquipoService {
carrito: `%${filtros.carrito}%`,
});
if (filtros.equipo)
query.andWhere('equipo LIKE :equipo', {
query.andWhere('e.equipo LIKE :equipo', {
equipo: `%${filtros.equipo}%`,
});
if (institucion)
query.andWhere('m.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
});
if (modulo)
query.andWhere('m.id_modulo = :id_modulo', {
id_modulo: modulo.id_modulo,
+13 -1
View File
@@ -52,7 +52,19 @@ export class ModuloService {
findAllByIdInstitucion(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) => this.repository.find({ institucion }));
.then((institucion) =>
this.repository
.createQueryBuilder('m')
.innerJoinAndSelect(
'm.institucion',
'i',
'i.id_institucion = :id_institucion',
{ id_institucion: institucion.id_institucion },
)
.orderBy('i.institucion')
.orderBy('m.modulo')
.getMany(),
);
}
findById(id_modulo: number) {