ambito/lib/src/packages/ambito_api/base.dart

67 lines
1.8 KiB
Dart
Raw Normal View History

2024-09-18 15:07:08 +02:00
import 'dart:convert';
2024-10-07 11:01:02 +02:00
import 'package:ambito/src/domain/entity/entities.dart';
2024-09-18 15:07:08 +02:00
import 'package:ambito/src/packages/ambito_api/restclient.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
2024-09-18 15:07:08 +02:00
import '../ambito_db/repositories/baumarten_repository.dart';
import '../ambito_db/repositories/massnahme_repository.dart';
2024-09-18 15:07:08 +02:00
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 {
Map tables = {};
init() {
tables = jsonDecode(dotenv.get('BASEROW_IDS'));
}
2024-09-18 15:07:08 +02:00
Future<bool> getContent(String table) async {
init();
2024-09-18 15:07:08 +02:00
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);
2024-09-18 15:07:08 +02:00
switch (table) {
case 'baumarten':
for (var baumart in json['results']) {
BaumartenRepository().put(Baumarten.fromJson(baumart));
2024-09-18 15:07:08 +02:00
}
break;
case 'massnahmen':
for (var massnahme in json['results']) {
MassnahmeRepository().put(Massnahme.fromJson(massnahme));
2024-09-18 15:07:08 +02:00
}
break;
}
return true;
}
return false;
}
return false;
}
dynamic _jsonDecoded(String input) {
return jsonDecode(utf8.decode(input.runes.toList()));
}
2024-09-18 15:07:08 +02:00
}