first commit
This commit is contained in:
85
lib/controller/home_controller.dart
Normal file
85
lib/controller/home_controller.dart
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../models/tank_model.dart';
|
||||
import '../services/appwrite_service.dart';
|
||||
|
||||
class HomeController extends GetxController {
|
||||
final isLoading = false.obs;
|
||||
final listTankModel = <TankModel>[].obs;
|
||||
final appwriteService = AppwriteService();
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_loadListDocument();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {}
|
||||
|
||||
Future<void> _loadListDocument() async {
|
||||
isLoading.value = true;
|
||||
if(listTankModel.isNotEmpty){
|
||||
listTankModel.clear();
|
||||
}
|
||||
var dateYear = DateTime.now().year;
|
||||
var userId = await appwriteService.getCurrentUserId();
|
||||
if (userId == null) {
|
||||
//User nicht eingeloggt, evtl. zur Login-Seite navigieren
|
||||
update();
|
||||
return;
|
||||
}
|
||||
var resultList = await appwriteService.getDocumentsFromCollection(userId);
|
||||
if (resultList.isEmpty) {
|
||||
//Dokumente erfolgreich geladen, hier können Sie die Liste verarbeiten
|
||||
print('Dokumente wurden nicht geladen: ${resultList.length}');
|
||||
} else {
|
||||
for (var doc in resultList) {
|
||||
var tankModel = TankModel.fromMap(doc.data);
|
||||
listTankModel.add(tankModel);
|
||||
}
|
||||
if (listTankModel.isNotEmpty) {
|
||||
var sortList = listTankModel.where((tank) {
|
||||
var year = (DateTime.tryParse(tank.szDate)!).year;
|
||||
return year == dateYear;
|
||||
}).toList();
|
||||
listTankModel.clear();
|
||||
listTankModel.addAll(sortList);
|
||||
listTankModel.sort((a, b) {
|
||||
var dateA = DateTime.tryParse(a.szDate)!;
|
||||
var dateB = DateTime.tryParse(b.szDate)!;
|
||||
return dateB.compareTo(dateA);
|
||||
});
|
||||
for (var tank in listTankModel) {
|
||||
print(
|
||||
'SortTankModel: ${tank.szDate} - ${tank.szLiters}L - ${tank.szPricePerLiter}€/L - Total: ${tank.szPriceTotal}€',
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
isLoading.value = false;
|
||||
update();
|
||||
}
|
||||
|
||||
Future<void> logout() async {
|
||||
var logoutSuccess = await appwriteService.logout();
|
||||
if (logoutSuccess) {
|
||||
Get.snackbar(
|
||||
'Logout erfolgreich',
|
||||
'Sie wurden abgemeldet.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
Get.offAllNamed('/login-page');
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Logout fehlgeschlagen',
|
||||
'Bitte versuchen Sie es erneut.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
46
lib/controller/login_controller.dart
Normal file
46
lib/controller/login_controller.dart
Normal file
@@ -0,0 +1,46 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../pages/home_view.dart';
|
||||
import '../pages/signin_view.dart';
|
||||
import '../services/appwrite_service.dart';
|
||||
|
||||
class LoginController extends GetxController {
|
||||
final emailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
final appwriteService = AppwriteService();
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
emailController.dispose();
|
||||
passwordController.dispose();
|
||||
}
|
||||
|
||||
void login() async {
|
||||
var email = emailController.text;
|
||||
var password = passwordController.text;
|
||||
// Hier können Sie die Login-Logik implementieren
|
||||
print('Login mit E-Mail: $email, Passwort: $password');
|
||||
var loginSuccess = await appwriteService.login(email, password);
|
||||
if (loginSuccess) {
|
||||
Get.snackbar(
|
||||
'Login erfolgreich',
|
||||
'Willkommen zurück!',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
Get.offAndToNamed(HomePage.namedRoute);
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Login fehlgeschlagen',
|
||||
'Bitte überprüfen Sie Ihre E-Mail und Ihr Passwort und versuchen Sie es erneut.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void goToSignInPage() {
|
||||
Get.offAndToNamed(SigninPage.namedRoute);
|
||||
}
|
||||
}
|
||||
87
lib/controller/signin_controller.dart
Normal file
87
lib/controller/signin_controller.dart
Normal file
@@ -0,0 +1,87 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../pages/home_view.dart';
|
||||
import '../pages/login_view.dart';
|
||||
import '../services/appwrite_service.dart';
|
||||
|
||||
class SigninController extends GetxController {
|
||||
final userNameController = TextEditingController();
|
||||
final emailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
final appwriteService = AppwriteService();
|
||||
|
||||
@override
|
||||
void onReady() {}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
userNameController.dispose();
|
||||
emailController.dispose();
|
||||
passwordController.dispose();
|
||||
}
|
||||
|
||||
void register() async {
|
||||
//Eingaben überprüfen
|
||||
if (!_checkInputs()) return;
|
||||
//Registrierungslogik
|
||||
var userName = userNameController.text;
|
||||
var email = emailController.text;
|
||||
var password = passwordController.text;
|
||||
// Testausgabe
|
||||
print(
|
||||
'Registrieren mit Benutzername: $userName, E-Mail: $email, Passwort: $password',
|
||||
);
|
||||
//appwrite Registrierung und login Logik hier einfügen
|
||||
var registrationSuccess = await appwriteService.register(
|
||||
userName,
|
||||
email,
|
||||
password,
|
||||
);
|
||||
//Nach erfolgreicher Registrierung Meldung und zur Startseite navigieren
|
||||
if (registrationSuccess) {
|
||||
Get.snackbar(
|
||||
'Registrierung erfolgreich, sie werden weitergeleitet',
|
||||
'Willkommen, $userName!',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
Get.offAndToNamed(HomePage.namedRoute);
|
||||
} else {
|
||||
Get.snackbar(
|
||||
'Registrierung fehlgeschlagen',
|
||||
'Bitte überprüfen Sie Ihre Eingaben und versuchen Sie es erneut.',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void goToLoginPage() {
|
||||
Get.offAndToNamed(LoginPage.namedRoute);
|
||||
}
|
||||
|
||||
bool _checkInputs() {
|
||||
var isOk = false;
|
||||
if (userNameController.text.isEmpty ||
|
||||
emailController.text.isEmpty ||
|
||||
passwordController.text.isEmpty) {
|
||||
Get.snackbar(
|
||||
'Fehler',
|
||||
'Bitte alle Felder ausfüllen',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
isOk = false;
|
||||
} else {
|
||||
isOk = true;
|
||||
}
|
||||
if (passwordController.text.length < 6) {
|
||||
Get.snackbar(
|
||||
'Fehler',
|
||||
'Passwort muss mindestens 6 Zeichen lang sein',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
isOk = false;
|
||||
} else {
|
||||
isOk = true;
|
||||
}
|
||||
return isOk;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user