@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.
- package/dist/controllers/Flow.js +54 -0
- package/package.json +1 -1
package/dist/controllers/Flow.js
CHANGED
|
@@ -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 };
|