Untitled
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]); } } } } }
Leave a Comment