composeFilter method
Function
composeFilter(
- FilterParams? filter
)
Implementation
Function composeFilter(FilterParams? filter) {
filter = filter ?? FilterParams();
var search = filter.getAsNullableString('search');
var id = filter.getAsNullableString('id') ??
filter.getAsNullableString('activity_id');
var orgId = filter.getAsNullableString('org_id');
var type = filter.getAsNullableString('type');
var includeTypes = filter.getAsObject('include_types');
var excludeTypes = filter.getAsObject('exclude_types');
var partyId = filter.getAsNullableString('party_id');
var refParentId = filter.getAsNullableString('ref_parent_id');
var refPartyId = filter.getAsNullableString('ref_party_id');
var refItemId = filter.getAsNullableString('ref_item_id');
var fromTime = filter.getAsNullableDateTime('from_time');
var toTime = filter.getAsNullableDateTime('to_time');
// Convert string parameters to arrays
if (includeTypes != null && includeTypes is! List) {
includeTypes = ('' + includeTypes).split(',');
}
if (excludeTypes != null && excludeTypes is! List) {
excludeTypes = ('' + excludeTypes).split(',');
}
return (item) {
if (search != null && !matchSearch(item, search)) {
return false;
}
if (id != null && item.id != id) {
return false;
}
if (orgId != null && item.orgId != orgId) {
return false;
}
if (type != null && item.type != type) {
return false;
}
if (includeTypes != null && includeTypes.contains(item.id)) {
return false;
}
if (excludeTypes != null && excludeTypes.contains(item.id)) {
return false;
}
if (refParentId != null && !includeId(item.ref_parents, refParentId)) {
return false;
}
if (refItemId != null && !includeId(item.ref_parents, refItemId)) {
return false;
}
if (partyId != null && !equalIds(item.party, partyId)) {
return false;
}
if (refPartyId != null && !equalIds(item.ref_party, refPartyId)) {
return false;
}
if (refItemId != null && !equalIds(item.ref_item, refItemId)) {
return false;
}
if (fromTime != null && item.time >= fromTime) {
return false;
}
if (toTime != null && item.time < toTime) {
return false;
}
return true;
};
}