Untitled
unknown
plain_text
a year ago
1.4 kB
7
Indexable
void groupPermits() {
groupedPermits.clear();
// First pass - identify duplicates by pdfTemplate within categories
Map<String, Map<String, List<PermitModel>>> duplicatesMap = {};
for (var permit in subPermits) {
if (!duplicatesMap.containsKey(permit.category)) {
duplicatesMap[permit.category] = {};
}
if (!duplicatesMap[permit.category]!.containsKey(permit.pdfTemplate)) {
duplicatesMap[permit.category]![permit.pdfTemplate] = [];
}
duplicatesMap[permit.category]![permit.pdfTemplate]!.add(permit);
}
// Second pass - create categories and copies as needed
for (var category in duplicatesMap.keys) {
var permits = duplicatesMap[category]!;
int maxDuplicates = permits.values.map((list) => list.length).reduce(max);
for (int copyIndex = 0; copyIndex < maxDuplicates; copyIndex++) {
String categoryName = category;
if (maxDuplicates > 1) {
categoryName = '${category.tr} (${copyIndex + 1})';
}
groupedPermits[categoryName] = [];
expandedStates[categoryName] = duplicatesMap.length <= 2;
// Add one permit of each template to this category copy
for (var templatePermits in permits.values) {
if (copyIndex < templatePermits.length) {
groupedPermits[categoryName]!.add(templatePermits[copyIndex]);
}
}
}
}
}
Editor is loading...
Leave a Comment