import 'package:ambito/src/entity/_general/filter/item_filter_repository.dart'; import 'package:ambito/src/entity/entities.dart'; import 'package:ambito/src/extensions/extensions.dart'; import 'package:ambito/src/packages/ambito_db/base_db.dart'; import 'package:isar/isar.dart'; import '../../../../main.dart'; class MeasureRepository extends BaseDB { @override IsarCollection collection = isar.measures; Future buildMeasureFilters() async { Map> filtersAreaType = {}; Map> filtersMeasureGroup = {}; Map> filterMonths = {}; Map> filterFundingPrograms = {}; Map colors = {}; var measures = getAll(); for (Measure measure in measures) { measure.factsheetAreaType?.forEach((ivc) { filtersAreaType.putIfAbsent(ivc.value!, () => []).add(measure.id); colors[ivc.value!] = ivc.color!; }); if (measure.actionGroup != null) { filtersMeasureGroup .putIfAbsent(measure.actionGroup!.value!, () => []) .add(measure.id); colors[measure.actionGroup!.value!] = measure.actionGroup!.color!; } measure.timeFrame?.forEach((ivc) { filterMonths.putIfAbsent(ivc.value!, () => []).add(measure.id); colors[ivc.value!] = ivc.color!; }); measure.fundingPrograms?.forEach((ivc) { filterFundingPrograms.putIfAbsent(ivc.value!, () => []).add(measure.id); }); } final itemFilterRepo = ItemFilterRepository(); final autoIncrement = isar.itemFilters.autoIncrement; itemFilterRepo.putAll(filtersAreaType.entries .map((entry) => ItemFilter() ..id = autoIncrement() ..name = entry.key ..type = 'areaType' ..description = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy.' ..image = 'images/actions/areatype/${entry.key.toLowerCase().replaceUmlauts()}.jpg' ..color = colors[entry.key] ..ids = entry.value) .toList()); itemFilterRepo.putAll(filtersMeasureGroup.entries .map((entry) => ItemFilter() ..id = autoIncrement() ..name = entry.key ..type = 'group' ..description = 'Lorem ipsum dolor sit amet, consetetur sadipscing.' ..image = 'images/actions/areatype/${entry.key.toLowerCase().replaceUmlauts()}.jpg' ..color = colors[entry.key] ..ids = entry.value) .toList()); itemFilterRepo.putAll(filterMonths.entries .map((entry) => ItemFilter() ..id = autoIncrement() ..name = entry.key ..type = 'month' ..ids = entry.value) .toList()); itemFilterRepo.putAll(filterFundingPrograms.entries .map((entry) => ItemFilter() ..id = autoIncrement() ..name = entry.key ..type = 'fundingProgram' ..ids = entry.value) .toList()); return true; } int getMeasureCount() { return isar.measures.where().count(); } List getByIds(List ids) { return isar.measures.getAll(ids); } List getAllOrdered() { return isar.measures.where().sortByName().findAll(); } Future downloadImages() async { List measures = isar.measures.where().findAll(); List files = []; for (Measure measure in measures) { if (measure.files != null) { for (FilePart file in measure.files!) { files.add(file.url!); } } } logger.d(files); return true; } }