import 'dart:convert';

import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
import 'package:ambito/src/packages/ambito_api/restclient.dart';
import 'package:ambito/src/packages/ambito_db/base_db.dart';

import '../../../main.dart';
import '../../domain/entity/baumarten/baumarten.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));
              Baumarten art = Baumarten.fromJson(baumart);
              isar.write((isar) {
                isar.baumartens.put(art);
              });
            }
            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;
  }
}
