60 lines
1.7 KiB
Dart
60 lines
1.7 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:ambito/src/domain/entity/entities.dart';
|
|
import 'package:ambito/src/packages/ambito_api/restclient.dart';
|
|
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
|
|
|
import '../../../main.dart';
|
|
|
|
Map<String, int> 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 {
|
|
Future<bool> getContent(String table) async {
|
|
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 = jsonDecode(utf8.decode(response.body.runes.toList()));
|
|
switch (table) {
|
|
case 'baumarten':
|
|
for (var baumart in json['results']) {
|
|
BaseDB.put(Baumarten.fromJson(baumart));
|
|
isar.write((isar) {
|
|
isar.baumartens.put(Baumarten.fromJson(baumart));
|
|
});
|
|
}
|
|
break;
|
|
case 'massnahmen':
|
|
for (var massnahme in json['results']) {
|
|
BaseDB.put(Massnahme.fromJson(massnahme));
|
|
isar.write((isar) {
|
|
isar.massnahmes.put(Massnahme.fromJson(massnahme));
|
|
});
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|