composeFilter method

Function composeFilter(
  1. FilterParams? filter
)

Implementation

Function composeFilter(FilterParams? filter) {
  filter = filter ?? FilterParams();

  var search = filter.getAsNullableString('search');
  var id = filter.getAsNullableString('id');
  var ids = filter.getAsObject('ids');
  var name = filter.getAsNullableString('name');
  var login = filter.getAsNullableString('login');
  var active = filter.getAsNullableBoolean('active');
  var fromCreateTime = filter.getAsNullableDateTime('from_create_time');
  var toCreateTime = filter.getAsNullableDateTime('to_create_time');
  var deleted = filter.getAsBooleanWithDefault('deleted', false);

  if (ids != null && ids is String) {
    ids = ids.split(',');
  }
  if (ids != null && !(ids is List)) {
    ids = null;
  }

  return (item) {
    if (search != null && !matchSearch(item, search)) {
      return false;
    }
    if (id != null && item.id != id) {
      return false;
    }
    if (name != null && item.name != name) {
      return false;
    }
    if (login != null && item.login != login) {
      return false;
    }
    if (active != null && item.active != active) {
      return false;
    }
    if (fromCreateTime != null && item.create_time >= fromCreateTime) {
      return false;
    }
    if (toCreateTime != null && item.create_time < toCreateTime) {
      return false;
    }
    if (!deleted && item.deleted != null && item.deleted) {
      return false;
    }
    if (ids != null && !(ids as List).contains(item.id)) {
      return false;
    }
    return true;
  };
}