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 '../../consts/consts.dart'; class MeasureRepository extends BaseDB { @override IsarCollection collection = isar.measures; Future buildLists() async { var measures = getAll(); Map>> lists = {}; List props = MeasureSchema.schema.properties; for (var prop in props) { if (prop.type == IsarType.objectList) { lists[prop.name] = []; } } logger.d(lists); int counter = 0; for (Measure measure in measures) { var json = measure.toJson(); if (counter == 0) { logger.d(json); } lists.forEach((key, value) { if (counter == 0) { logger.d(key); } if (json[key] != null) { logger.d(json[key]); } }); counter++; } return true; } 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!); } } } return true; } }