ambito/lib/src/packages/ambito_api/base.dart
2024-10-09 01:14:07 +02:00

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;
}
}