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;
  }
}
