import 'package:get/get.dart'; import '../models/tank_guru_directus_model.dart'; import '../pages/detail_view.dart'; import '../pages/edit_view.dart'; import '../pages/graph_view.dart'; import '../pages/gasstations_view.dart'; import '../services/directus_service.dart'; class HomeController extends GetxController { final isLoading = false.obs; //final listTankModel = [].obs; final listTankModel = [].obs; //final appwriteService = AppwriteService(); final directusService = DirectusService(); final currentYear = DateTime.now().year.obs; final argumentMap = Get.arguments as Map?; @override void onInit() { _loadListDirectus(); super.onInit(); } @override void onReady() {} @override void onClose() {} void changeYear(int year) { currentYear.value = year; _loadListDirectus(); update(); } Future _loadListDirectus() async { isLoading.value = true; if (listTankModel.isNotEmpty) { listTankModel.clear(); } var userId = argumentMap?['userIdentId'] as String?; if (userId == null) { //User nicht eingeloggt, evtl. zur Login-Seite navigieren update(); return; } var resultList = await directusService.getTankGuruDataFromTable(userId); if (resultList.isEmpty) { //Dokumente erfolgreich geladen, hier können Sie die Liste verarbeiten print('Dokumente wurden nicht geladen: ${resultList.length}'); } else { listTankModel( resultList .map((tankStopJson) => TankGuruDirectusModel.fromJson(tankStopJson)) .toList(), ); if (listTankModel.isNotEmpty) { var sortList = listTankModel.where((tank) { var year = (DateTime.tryParse(tank.tankDate!)!).year; return year == currentYear.value; }).toList(); listTankModel.clear(); listTankModel.addAll(sortList); listTankModel.sort((a, b) { var dateA = DateTime.tryParse(a.tankDate!)!; var dateB = DateTime.tryParse(b.tankDate!)!; return dateB.compareTo(dateA); }); for (var tank in listTankModel) { print( 'SortTankModel: ${tank.tankDate!} - ${tank.liter}L - ${tank.pricePerLiter}€/L - Total: ${tank.szPriceTotal}€', ); } } } isLoading.value = false; update(); } Future logout() async { Get.snackbar( 'Logout erfolgreich', 'Sie wurden abgemeldet.', snackPosition: SnackPosition.BOTTOM, ); Get.offAllNamed('/login-page'); } Future viewTankDetails(TankGuruDirectusModel tank) async { var result = await Get.toNamed(DetailPage.namedRoute, arguments: tank); if (result == 'deleted') { _loadListDirectus(); } } Future navigateToAddTankEntry() async { await Get.offAllNamed(EditPage.namedRoute); } void goToGraphPage() { Get.toNamed(GraphPage.namedRoute, arguments: listTankModel); } void goToGasStations() { Get.toNamed(GasstationsPage.namedRoute); } }