import 'dart:convert'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/controller/functions/location_background_controller.dart'; import 'package:SEFER/print.dart'; import 'package:SEFER/views/auth/captin/cards/sms_signup.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:flutter/material.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.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/Captin/home_captain/home_captin.dart'; import 'package:location/location.dart'; import '../../../views/auth/captin/cards/egypt_card_a_i.dart'; import '../../firebase/firbase_messge.dart'; class LoginDriverController extends GetxController { final formKey = GlobalKey(); TextEditingController emailController = TextEditingController(); TextEditingController phoneController = TextEditingController(); TextEditingController passwordController = TextEditingController(); bool isAgreeTerms = false; bool isloading = false; final FlutterSecureStorage _storage = const FlutterSecureStorage(); final location = Location(); void changeAgreeTerm() { isAgreeTerms = !isAgreeTerms; update(); } void saveAgreementTerms() { box.write(BoxName.agreeTerms, 'agreed'); update(); } void saveCountryCode(String countryCode) { box.write(BoxName.countryCode, countryCode); update(); } Future getLocationPermission() async { Get.put(LocationBackgroundController()).requestLocationPermission(); update(); } loginUsingCredentials(String driverID, email) async { isloading = true; update(); var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: { 'email': email, 'id': driverID, }); print(res); if (res == 'failure') { //Failure if (box.read(BoxName.phoneVerified).toString() == '1') { Get.offAll(() => EgyptCardAI()); } else { Get.offAll(() => SmsSignupEgypt()); } isloading = false; update(); // Get.snackbar('Failure', '', backgroundColor: Colors.red); } else { var jsonDecoeded = jsonDecode(res); if (jsonDecoeded.isNotEmpty) { if (jsonDecoeded['status'] == 'success' && jsonDecoeded['data'][0]['is_verified'].toString() == '1') { box.write(BoxName.emailDriver, jsonDecoeded['data'][0]['email']); box.write(BoxName.gender, jsonDecoeded['data'][0]['gender']); box.write(BoxName.phoneVerified, jsonDecoeded['data'][0]['is_verified'].toString()); box.write(BoxName.phoneDriver, jsonDecoeded['data'][0]['phone']); box.write(BoxName.nameArabic, jsonDecoeded['data'][0]['name_arabic']); box.write( BoxName.bankCodeDriver, jsonDecoeded['data'][0]['bankCode']); box.write(BoxName.accountBankNumberDriver, jsonDecoeded['data'][0]['accountBank']); box.write( BoxName.nameDriver, '${jsonDecoeded['data'][0]['first_name']}' ' ${jsonDecoeded['data'][0]['last_name']}'); var token = await CRUD().get( link: AppLink.getDriverToken, payload: {'captain_id': box.read(BoxName.driverID).toString()}); if (token != 'failure') { if (jsonDecode(token)['data'][0]['token'] != box.read(BoxName.tokenDriver)) { Get.put(FirebaseMessagesController()) .sendNotificationToAnyWithoutData( 'token change'.tr, 'change device'.tr, jsonDecode(token)['data'][0]['token'].toString(), 'promo.wav'); Get.defaultDialog( title: 'you will use this device?'.tr, middleText: '', confirm: MyElevatedButton( title: 'Ok'.tr, onPressed: () async { await CRUD() .post(link: AppLink.addTokensDriver, payload: { 'token': box.read(BoxName.tokenDriver), 'captain_id': box.read(BoxName.driverID).toString() }); Get.back(); })); } } Get.off(() => HomeCaptain()); } else { Get.offAll(() => SmsSignupEgypt()); // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'], // backgroundColor: Colors.redAccent); isloading = false; update(); } } else { Get.snackbar('failure'.tr, '', backgroundColor: AppColor.redColor); isloading = false; update(); } } } void loginByBoxData() async { Get.to(() => HomeCaptain()); await CRUD().post(link: AppLink.addTokensDriver, payload: { 'token': box.read(BoxName.tokenDriver).toString(), 'captain_id': box.read(BoxName.driverID).toString() }); } }