applyGroupFilterExp method
Implementation
bool applyGroupFilterExp(
GroupFilterExp groupFilterExp, Map<String, dynamic> map) {
bool? filterAndOk;
for (var filter in groupFilterExp.filterExps) {
if (groupFilterExp.operatorEx == OperatorFilterEx.OR) {
/// Como é uma expressão or, caso esse filtro seja verdadeiro sempre retorna true
if (filter is FilterExpColumn) {
var value = map[filter.line!.key];
if (filter.line!.formatData != null) {
value = filter.line!.formatData!
.formatData(ObjFormatData(data: value, map: map));
}
if (filterByTypeSearch(filter.typeSearch, value, filter.value)) {
return true;
}
} else if (filter is FilterSelectColumn) {
var value = map[filter.line!.key];
if (filter.line!.formatData != null) {
value = filter.line!.formatData!
.formatData(ObjFormatData(data: value, map: map));
}
if (filterByTypeSearch(filter.typeSearch, value, filter.value)) {
return true;
}
} else if (filter is FilterExpRangeCollun) {
if (map[filter.line!.key] != null &&
map[filter.line!.key] >
(filter.dateStart?.millisecondsSinceEpoch ?? 0) &&
map[filter.line!.key] <
(filter.dateEnd?.millisecondsSinceEpoch ??
double.maxFinite.toInt())) {
return true;
} else {
return false;
}
} else if (filter is GroupFilterExp) {
if (applyGroupFilterExp(filter, map)) {
return true;
}
}
} else if (groupFilterExp.operatorEx == OperatorFilterEx.AND) {
/// Expressão AND seta filterAndOk = true caso seja true, caso seja falso retorna false na função,
if (filter is FilterExpColumn) {
var value = map[filter.line!.key];
if (filter.line!.formatData != null) {
value = filter.line!.formatData!
.formatData(ObjFormatData(data: value, map: map));
}
if (filterByTypeSearch(filter.typeSearch, value, filter.value)) {
filterAndOk = true;
} else {
return false;
}
} else if (filter is FilterSelectColumn) {
var value = map[filter.line!.key];
if (filter.line!.formatData != null) {
value = filter.line!.formatData!
.formatData(ObjFormatData(data: value, map: map));
}
if (filterByTypeSearch(filter.typeSearch, value, filter.value)) {
filterAndOk = true;
} else {
return false;
}
} else if (filter is GroupFilterExp) {
if (applyGroupFilterExp(filter, map)) {
filterAndOk = true;
} else {
return false;
}
} else if (filter is FilterExpRangeCollun) {
if (map[filter.line!.key] != null &&
map[filter.line!.key] >
(filter.dateStart?.millisecondsSinceEpoch ?? 0) &&
map[filter.line!.key] <
(filter.dateEnd?.millisecondsSinceEpoch ??
double.maxFinite.toInt())) {
filterAndOk = true;
} else {
return false;
}
}
}
}
return filterAndOk ?? false;
}