@pxp-nd/flow 1.0.85 → 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.
@@ -645,10 +645,14 @@ let Flow = class Flow extends core_1.Controller {
645
645
  }
646
646
  }
647
647
  async basicFlowList(params) {
648
+ var _a;
648
649
  const isActive = params._isActive;
649
650
  const type = params._type;
650
651
  const vendorId = params._vendorId;
651
652
  const allowedColumns = ['name', 'description'];
653
+ const filter = (params === null || params === void 0 ? void 0 : params.filter) ? JSON.parse(params === null || params === void 0 ? void 0 : params.filter) : null;
654
+ const filters = (filter === null || filter === void 0 ? void 0 : filter.items) || [];
655
+ const logicOperator = ((_a = filter === null || filter === void 0 ? void 0 : filter.logicOperator) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || 'AND';
652
656
  const queryBuilder = await (0, typeorm_1.getManager)()
653
657
  .createQueryBuilder()
654
658
  .select([
@@ -687,6 +691,54 @@ let Flow = class Flow extends core_1.Controller {
687
691
  queryBuilder.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
688
692
  }
689
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
+ };
739
+ // Dynamic filters
740
+ // Aplicar filtros dinámicos
741
+ applyDynamicFilters(queryBuilder, filters, logicOperator);
690
742
  queryBuilder.groupBy([
691
743
  'f.flow_id',
692
744
  'f.vendor_id',
@@ -732,6 +784,8 @@ let Flow = class Flow extends core_1.Controller {
732
784
  countQuery.andWhere(`f.${params.genericFilterFields} LIKE :genericFilterValue`, { genericFilterValue: `%${params.genericFilterValue}%` });
733
785
  }
734
786
  }
787
+ // Aplicar los mismos filtros dinámicos al query de conteo
788
+ applyDynamicFilters(countQuery, filters, logicOperator);
735
789
  const totalCount = await countQuery.getRawOne();
736
790
  const count = totalCount.count;
737
791
  return { data, count };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pxp-nd/flow",
3
- "version": "1.0.85",
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",