import 'dart:convert'; import 'package:ambito/src/domain/entity/entities.dart'; import 'package:ambito/src/packages/ambito_api/restclient.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import '../ambito_db/repositories/baumarten_repository.dart'; import '../ambito_db/repositories/massnahme_repository.dart'; Map tables = { 'massnahmen': 328253, 'massnahmenkombination': 328217, 'organismen': 328255, 'foerderprogramme': 328256, 'factsheet': 328273, 'standortansprueche': 328188, 'referenzumsetzung': 328465, 'betriebsverzeichnis': 328472, 'erfahrungsbericht': 330802, 'genehmigungspflicht': 330806, 'dienstleister': 330824, 'ansprechperson': 330832, 'material': 330836, 'quellen': 334231, 'baumarten': 342622, 'aenderungfactsheet': 330946, }; class BaseApi { Map tables = {}; init() { tables = jsonDecode(dotenv.get('BASEROW_IDS')); } Future getContent(String table) async { init(); int tableId = tables[table] ?? 0; if (tableId > 0) { var response = await RestClient().get('$tableId/?user_field_names=true&size=200'); if (response.statusCode == 200) { var json = _jsonDecoded(response.body); switch (table) { case 'baumarten': for (var baumart in json['results']) { BaumartenRepository().put(Baumarten.fromJson(baumart)); } break; case 'massnahmen': for (var massnahme in json['results']) { MassnahmeRepository().put(Massnahme.fromJson(massnahme)); } break; } return true; } return false; } return false; } dynamic _jsonDecoded(String input) { return jsonDecode(utf8.decode(input.runes.toList())); } }