Files
flutter_tank_web_app/lib/controller/home_controller.dart
T
2026-09-25 20:52:50 +02:00

109 lines
3.0 KiB
Dart

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 = <TankModel>[].obs;
final listTankModel = <TankGuruDirectusModel>[].obs;
//final appwriteService = AppwriteService();
final directusService = DirectusService();
final currentYear = DateTime.now().year.obs;
final argumentMap = Get.arguments as Map<String, dynamic>?;
@override
void onInit() {
_loadListDirectus();
super.onInit();
}
@override
void onReady() {}
@override
void onClose() {}
void changeYear(int year) {
currentYear.value = year;
_loadListDirectus();
update();
}
Future<void> _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<void> logout() async {
Get.snackbar(
'Logout erfolgreich',
'Sie wurden abgemeldet.',
snackPosition: SnackPosition.BOTTOM,
);
Get.offAllNamed('/login-page');
}
Future<void> viewTankDetails(TankGuruDirectusModel tank) async {
var result = await Get.toNamed(DetailPage.namedRoute, arguments: tank);
if (result == 'deleted') {
_loadListDirectus();
}
}
Future<void> navigateToAddTankEntry() async {
await Get.offAllNamed(EditPage.namedRoute);
}
void goToGraphPage() {
Get.toNamed(GraphPage.namedRoute, arguments: listTankModel);
}
void goToGasStations() {
Get.toNamed(GasstationsPage.namedRoute);
}
}