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;
}