getRequestFilter property
NsgDataRequestParams
get
getRequestFilter
Implementation
NsgDataRequestParams get getRequestFilter {
var cmp = NsgCompare();
//Добавление условия на мастер-деталь
if (masterController != null &&
masterController!.selectedItem != null &&
masterController!.selectedItem!.fieldList.fields.containsKey(dataBinding!.masterFieldName)) {
assert(dataBinding != null, 'dataBinding == null, необходимо задать этот параметр в настройках контроллера');
var masterValue = masterController!.selectedItem!.fieldValues.fields[dataBinding!.masterFieldName];
cmp.add(name: dataBinding!.slaveFieldName, value: masterValue);
}
//Учитываем пользовательский фильтр на дату
if (controllerFilter.isOpen && controllerFilter.isPeriodAllowed && controllerFilter.periodFieldName.isNotEmpty) {
cmp.add(name: controllerFilter.periodFieldName, value: controllerFilter.nsgPeriod.beginDate, comparisonOperator: NsgComparisonOperator.greaterOrEqual);
cmp.add(name: controllerFilter.periodFieldName, value: controllerFilter.nsgPeriod.endDate, comparisonOperator: NsgComparisonOperator.less);
}
//Добавляем условие по строке поиска если фильтр разрешен и открыт
if (controllerFilter.isOpen && controllerFilter.isAllowed && controllerFilter.searchString.isNotEmpty) {
var dataItem = NsgDataClient.client.getNewObject(dataType);
var fieldNames = dataItem.searchFieldList;
if (fieldNames.isNotEmpty) {
var searchCmp = NsgCompare();
searchCmp.logicalOperator = NsgLogicalOperator.and;
var searchArray = controllerFilter.searchString.split(' ');
for (var searchString in searchArray) {
var searchArrayCmp = NsgCompare();
searchArrayCmp.logicalOperator = NsgLogicalOperator.or;
for (var fieldName in fieldNames) {
var field = dataItem.fieldList.fields[fieldName];
if ((field is NsgDataStringField || field is NsgDataReferenceField) && field is! NsgDataEnumReferenceField) {
searchArrayCmp.add(name: fieldName, value: searchString, comparisonOperator: NsgComparisonOperator.contain);
}
}
searchCmp.add(name: "SearchStringComparisonAllWords", value: searchArrayCmp);
}
cmp.add(name: "SearchStringComparison", value: searchCmp);
}
}
var param = NsgDataRequestParams();
param.top = top ?? 0;
param.replaceCompare(cmp);
if (sorting.isNotEmpty) {
param.sorting = sorting.toString();
}
return param;
}