import 'dart:convert'; import 'package:SEFER/constant/info.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; import 'package:SEFER/views/auth/login_page.dart'; import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/controller/functions/crud.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:location/location.dart'; class LoginController extends GetxController { final formKey = GlobalKey(); final formKeyAdmin = GlobalKey(); TextEditingController emailController = TextEditingController(); TextEditingController phoneController = TextEditingController(); TextEditingController passwordController = TextEditingController(); TextEditingController adminPasswordController = TextEditingController(); TextEditingController adminNameController = TextEditingController(); bool isAgreeTerms = false; bool isloading = false; late int isTest = 1; void changeAgreeTerm() { isAgreeTerms = !isAgreeTerms; update(); } getAppTester(String appPlatform) async { var res = await CRUD() .get(link: AppLink.getTesterApp, payload: {'appPlatform': appPlatform}); if (res != 'failure') { var d = jsonDecode(res); isTest = d['message'][0]['isTest']; update(); } else { return false; } } updateAppTester(String appPlatform) async { await CRUD().post( link: AppLink.updateTesterApp, payload: {'appPlatform': appPlatform}); } void saveAgreementTerms() { box.write(BoxName.agreeTerms, 'agreed'); update(); } void saveCountryCode(String countryCode) { box.write(BoxName.countryCode, countryCode); update(); } loginUsingCredentials(String passengerID, email) async { isloading = true; update(); var res = await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: { 'email': email, 'id': passengerID, }); if (res == 'Failure') { Get.offAll(SmsSignupEgypt()); isloading = false; update(); // Get.snackbar("User does not exist.".tr, '', backgroundColor: Colors.red); } else { var jsonDecoeded = jsonDecode(res); if (jsonDecoeded.isNotEmpty) { if (jsonDecoeded['status'] == 'success' && jsonDecoeded['data'][0]['verified'].toString() == '1') { // box.write(BoxName.isVerified, '1'); box.write(BoxName.email, jsonDecoeded['data'][0]['email']); box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); var token = await CRUD().get(link: AppLink.getTokens, payload: { 'passengerID': box.read(BoxName.passengerID).toString() }); if (token != 'failure') { if (jsonDecode(token)['data'][0]['token'] != box.read(BoxName.tokenFCM)) { Get.put(FirebaseMessagesController()) .sendNotificationToAnyWithoutData( 'token change'.tr, 'change device'.tr, jsonDecode(token)['data'][0]['token'].toString(), 'cancel.wav', ); Future.delayed(const Duration(seconds: 1)); await CRUD().post(link: AppLink.addTokens, payload: { 'token': box.read(BoxName.tokenFCM), 'passengerID': box.read(BoxName.passengerID).toString() }); // Get.defaultDialog( // title: 'Device Change Detected'.tr, // middleText: // 'You can only use one device at a time. This device will now be set as your active device.' // .tr, // textConfirm: 'OK'.tr, // confirmTextColor: Colors.white, // onConfirm: () { // Get.back(); // Get.offAll(() => const MapPagePassenger()); // }, // ); // Get.snackbar('title', 'message'); } } Get.offAll(() => const MapPagePassenger()); } else { Get.offAll(() => SmsSignupEgypt()); // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'], // backgroundColor: Colors.redAccent); isloading = false; update(); } } else { isloading = false; update(); } } } // void adminDashboardOpen() async { // if (formKeyAdmin.currentState!.validate()) { // await DeviceInfoPlus.getDeviceInfo(); // if (Platform.isAndroid) { // // var res = await CRUD().get(link: AppLink.getAdminUser, payload: { // // // 'device_number': DeviceInfoPlus.deviceData['serialNumber'].toString(), // // }); // // var d = jsonDecode(res); // // // if (DeviceInfoPlus.deviceData['serialNumber'] == // // d['message']['device_number']) { // Get.back(); // Get.to(() => const AdminHomePage()); // // } // } // if (Platform.isIOS) { // // var res = await CRUD().get(link: AppLink.getAdminUser, payload: { // // 'device_number': DeviceInfoPlus.deviceData['identifierForVendor'].toString(), // // }); // // var d = jsonDecode(res); // // if (DeviceInfoPlus.deviceData['serialNumber'] == // // d['message']['device_number']) { // Get.back(); // Get.to(() => const AdminHomePage()); // // } // } // } // } void login() async { isloading = true; update(); var res = await CRUD().get( link: AppLink.loginFromGooglePassenger, payload: { 'email': emailController.text, 'id': passwordController.text }); isloading = false; update(); if (res == 'Failure') { //Failure Get.offAll(() => LoginPage()); isloading = false; update(); // Get.snackbar("User does not exist.".tr, '', backgroundColor: Colors.red); } else { var jsonDecoeded = jsonDecode(res); if (jsonDecoeded.isNotEmpty) { if (jsonDecoeded['status'] == 'success' && jsonDecoeded['data'][0]['verified'] == 1) { // box.write(BoxName.isVerified, '1'); box.write(BoxName.email, jsonDecoeded['data'][0]['email']); box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); box.write(BoxName.passengerID, passwordController.text); // var token = await CRUD().get(link: AppLink.getTokens, payload: { // 'passengerID': box.read(BoxName.passengerID).toString() // }); await updateAppTester(AppInformation.appName); Get.offAll(() => const MapPagePassenger()); } else { // Get.offAll(() => SmsSignupEgypt()); // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'], // backgroundColor: Colors.redAccent); isloading = false; update(); } } else { isloading = false; update(); } } } final location = Location(); // late PermissionStatus permissionGranted = PermissionStatus.denied; Future getLocationPermission() async { bool serviceEnabled; PermissionStatus permissionGranted; // Check if location services are enabled serviceEnabled = await location.serviceEnabled(); if (!serviceEnabled) { serviceEnabled = await location.requestService(); if (!serviceEnabled) { // Location services are still not enabled, handle the error return; } } // Check if the app has permission to access location permissionGranted = await location.hasPermission(); if (permissionGranted == PermissionStatus.denied) { permissionGranted = await location.requestPermission(); if (permissionGranted != PermissionStatus.granted) { // Location permission is still not granted, handle the error permissionGranted = await location.requestPermission(); return; } } if (permissionGranted.toString() == 'PermissionStatus.granted') { box.write(BoxName.locationPermission, 'true'); } update(); } @override void onInit() async { // permissionLocation = await Permission.locationWhenInUse.isGranted; await getAppTester(AppInformation.appName); // if (isTest == 0 && box.read(BoxName.passengerID) != null) { // // await loginUsingCredentials( // // box.read(BoxName.passengerID), box.read(BoxName.email)); // } super.onInit(); } }