111 lines
3.1 KiB
Dart
111 lines
3.1 KiB
Dart
import 'package:appwrite/appwrite.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
|
|
import '../../data/models/tank_model.dart';
|
|
import '../../data/repository/appwrite_repository.dart';
|
|
import '../../pages/tank/tank_view.dart';
|
|
import '../graph/graph_view.dart';
|
|
import '../login/login_view.dart';
|
|
|
|
class TanklistController extends GetxController {
|
|
final _dataBox = GetStorage('MyUserStorage');
|
|
final isloadingList = false.obs;
|
|
final tankList = <AppWriteTankModel>[].obs;
|
|
final szRxUserId = 'NoUser'.obs;
|
|
//AppWrite API-REST get Data
|
|
final AppwriteRepository _authRepository = AppwriteRepository();
|
|
|
|
@override
|
|
void onInit() {
|
|
szRxUserId(_dataBox.read('userId'));
|
|
super.onInit();
|
|
}
|
|
|
|
@override
|
|
void onReady() {
|
|
getTankList();
|
|
super.onReady();
|
|
}
|
|
|
|
@override
|
|
void onClose() {}
|
|
|
|
void getTankList() async {
|
|
isloadingList(true);
|
|
bool isErrorByLoading = false;
|
|
String message = '';
|
|
try {
|
|
await _authRepository
|
|
.listTankStops(szRxUserId.value)
|
|
.then((tankListData) {
|
|
if (tankListData.documents.isEmpty) {
|
|
isErrorByLoading = true;
|
|
message = 'Leere Liste keine Daten vorhanden';
|
|
return;
|
|
}
|
|
tankList.clear();
|
|
var data = tankListData.toMap();
|
|
List d = data['documents'].toList();
|
|
tankList.value =
|
|
d.map((e) => AppWriteTankModel.fromMap(e['data'])).toList();
|
|
tankList.sort((a, b) {
|
|
final DateTime dateA = DateTime.parse(a.date);
|
|
final DateTime dateB = DateTime.parse(b.date);
|
|
return dateB.compareTo(dateA);
|
|
});
|
|
message = 'Liste wurde erfolgreich geladen';
|
|
}).catchError((error) {
|
|
isErrorByLoading = true;
|
|
if (error is AppwriteException) {
|
|
message = error.message!;
|
|
} else {
|
|
message = 'Uuups da ist was schief gelaufen';
|
|
}
|
|
});
|
|
} catch (e) {
|
|
isErrorByLoading = true;
|
|
message = 'Fehler beim Laden der Tankliste';
|
|
print('Error fetching tank list: $e');
|
|
} finally {
|
|
if (!isErrorByLoading) {
|
|
isloadingList(false);
|
|
}
|
|
}
|
|
String title = isErrorByLoading ? 'Fehler' : 'Erfolg';
|
|
Get.snackbar(
|
|
title,
|
|
message,
|
|
backgroundColor: isErrorByLoading ? Colors.red : Colors.green,
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
duration: const Duration(seconds: 4),
|
|
);
|
|
update();
|
|
}
|
|
|
|
void goToUpdatePage() {
|
|
// Go to Update Page
|
|
}
|
|
void goToInputPage() {
|
|
Get.offAndToNamed(TankPage.namedRoute);
|
|
}
|
|
|
|
void logoutSessionAndGoToLoginPage() async {
|
|
// Handle logout logic here
|
|
print('Logout session and go to login page');
|
|
// Clear GetStorage session ID
|
|
_dataBox.remove('sessionId');
|
|
_dataBox.remove('userId');
|
|
_dataBox.remove('userName');
|
|
_dataBox.remove('userEmail');
|
|
print('Session ID removed from GetStorage');
|
|
await _authRepository.logout();
|
|
Get.offAndToNamed(LoginPage.namedRoute);
|
|
}
|
|
|
|
void goToChartView() {
|
|
Get.offAndToNamed(GraphPage.namedRoute);
|
|
}
|
|
}
|