@pxp-nd/flow 1.0.86 → 1.0.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -691,52 +691,54 @@ let Flow = class Flow extends core_1.Controller {
691
691
  queryBuilder.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
692
692
  }
693
693
  }
694
+ const applyDynamicFilters = (queryBuilder, filters, logicOperator) => {
695
+ console.log('applyDynamicFilters', queryBuilder);
696
+ filters.forEach((filter, index) => {
697
+ const { field, operator, value } = filter;
698
+ const queryField = `f.${field}`;
699
+ const parameterName = `filterValue${index}`;
700
+ let condition;
701
+ switch (operator) {
702
+ case 'contains':
703
+ condition = `${queryField} LIKE :${parameterName}`;
704
+ queryBuilder.setParameter(parameterName, `%${value}%`);
705
+ break;
706
+ case 'equals':
707
+ condition = `${queryField} = :${parameterName}`;
708
+ queryBuilder.setParameter(parameterName, value);
709
+ break;
710
+ case 'startsWith':
711
+ condition = `${queryField} LIKE :${parameterName}`;
712
+ queryBuilder.setParameter(parameterName, `${value}%`);
713
+ break;
714
+ case 'endsWith':
715
+ condition = `${queryField} LIKE :${parameterName}`;
716
+ queryBuilder.setParameter(parameterName, `%${value}`);
717
+ break;
718
+ case 'isEmpty':
719
+ condition = `${queryField} IS NULL OR ${queryField} = ''`;
720
+ break;
721
+ case 'isNotEmpty':
722
+ condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
723
+ break;
724
+ case 'isAnyOf':
725
+ condition = `${queryField} IN (:...${parameterName})`;
726
+ queryBuilder.setParameter(parameterName, value.split(','));
727
+ break;
728
+ default:
729
+ throw new Error(`Operator ${operator} is not supported.`);
730
+ }
731
+ if (index === 0) {
732
+ queryBuilder.andWhere(condition);
733
+ }
734
+ else {
735
+ queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
736
+ }
737
+ });
738
+ };
694
739
  // Dynamic filters
695
- filters.forEach((filter, index) => {
696
- const { field, operator, value } = filter;
697
- //if (allowedColumns.includes(field)) {
698
- const queryField = `f.${field}`;
699
- const parameterName = `filterValue${index}`;
700
- let condition;
701
- switch (operator) {
702
- case 'contains':
703
- condition = `${queryField} LIKE :${parameterName}`;
704
- queryBuilder.setParameter(parameterName, `%${value}%`);
705
- break;
706
- case 'equals':
707
- condition = `${queryField} = :${parameterName}`;
708
- queryBuilder.setParameter(parameterName, value);
709
- break;
710
- case 'startsWith':
711
- condition = `${queryField} LIKE :${parameterName}`;
712
- queryBuilder.setParameter(parameterName, `${value}%`);
713
- break;
714
- case 'endsWith':
715
- condition = `${queryField} LIKE :${parameterName}`;
716
- queryBuilder.setParameter(parameterName, `%${value}`);
717
- break;
718
- case 'isEmpty':
719
- condition = `${queryField} IS NULL OR ${queryField} = ''`;
720
- break;
721
- case 'isNotEmpty':
722
- condition = `${queryField} IS NOT NULL AND ${queryField} <> ''`;
723
- break;
724
- case 'isAnyOf':
725
- condition = `${queryField} IN (:...${parameterName})`;
726
- queryBuilder.setParameter(parameterName, value.split(',')); // Asume que `value` es una cadena separada por comas.
727
- break;
728
- // Puedes agregar más casos aquí si hay otros operadores.
729
- default:
730
- throw new Error(`Operator ${operator} is not supported.`);
731
- }
732
- if (index === 0) {
733
- queryBuilder.andWhere(condition);
734
- }
735
- else {
736
- queryBuilder[logicOperator === 'OR' ? 'orWhere' : 'andWhere'](condition);
737
- }
738
- //}
739
- });
740
+ // Aplicar filtros dinámicos
741
+ applyDynamicFilters(queryBuilder, filters, logicOperator);
740
742
  queryBuilder.groupBy([
741
743
  'f.flow_id',
742
744
  'f.vendor_id',
@@ -782,6 +784,8 @@ let Flow = class Flow extends core_1.Controller {
782
784
  countQuery.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
783
785
  }
784
786
  }
787
+ // Aplicar los mismos filtros dinámicos al query de conteo
788
+ applyDynamicFilters(countQuery, filters, logicOperator);
785
789
  const totalCount = await countQuery.getRawOne();
786
790
  const count = totalCount.count;
787
791
  return { data, count };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pxp-nd/flow",
3
- "version": "1.0.86",
3
+ "version": "1.0.87",
4
4
  "description": "Workflow module for pxp-nd framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",