import 'package:driver/constant/collection_name.dart'; import 'package:driver/constant/constant.dart'; import 'package:driver/models/payment_model/flutter_wave_model.dart'; import 'package:driver/models/payment_model/paypal_model.dart'; import 'package:driver/models/payment_model/razorpay_model.dart'; import 'package:driver/models/payment_model/stripe_model.dart'; import 'package:driver/models/user_model.dart'; import 'package:driver/models/withdraw_method_model.dart'; import 'package:driver/utils/fire_store_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class WithdrawMethodSetupController extends GetxController { Rx accountNumberFlutterWave = TextEditingController().obs; Rx bankCodeFlutterWave = TextEditingController().obs; Rx emailPaypal = TextEditingController().obs; Rx accountIdRazorPay = TextEditingController().obs; Rx accountIdStripe = TextEditingController().obs; Rx userBankDetails = UserBankDetails().obs; Rx withdrawMethodModel = WithdrawMethodModel().obs; RxBool isBankDetailsAdded = false.obs; RxBool isLoading = true.obs; Rx razorPayModel = RazorPayModel().obs; Rx paypalDataModel = PayPalModel().obs; Rx stripeSettingData = StripeModel().obs; Rx flutterWaveSettingData = FlutterWaveModel().obs; @override void onInit() { // TODO: implement onInit getPaymentMethod(); getPaymentSettings(); super.onInit(); } Future getPaymentMethod() async { isLoading.value = true; accountNumberFlutterWave.value.clear(); bankCodeFlutterWave.value.clear(); emailPaypal.value.clear(); accountIdRazorPay.value.clear(); accountIdStripe.value.clear(); await FireStoreUtils.getWithdrawMethod().then( (value) { if (value != null) { withdrawMethodModel.value = value; if (withdrawMethodModel.value.flutterWave != null) { accountNumberFlutterWave.value.text = withdrawMethodModel.value.flutterWave!.accountNumber.toString(); bankCodeFlutterWave.value.text = withdrawMethodModel.value.flutterWave!.bankCode.toString(); } if (withdrawMethodModel.value.paypal != null) { emailPaypal.value.text = withdrawMethodModel.value.paypal!.email.toString(); } if (withdrawMethodModel.value.razorpay != null) { accountIdRazorPay.value.text = withdrawMethodModel.value.razorpay!.accountId.toString(); } if (withdrawMethodModel.value.stripe != null) { accountIdStripe.value.text = withdrawMethodModel.value.stripe!.accountId.toString(); } } }, ); isLoading.value = false; } Future getPaymentSettings() async { if (Constant.userModel!.userBankDetails != null) { userBankDetails.value = Constant.userModel!.userBankDetails!; isBankDetailsAdded.value = userBankDetails.value.accountNumber.isNotEmpty; } await FireStoreUtils.fireStore.collection(CollectionName.settings).doc("razorpaySettings").get().then((user) { try { razorPayModel.value = RazorPayModel.fromJson(user.data() ?? {}); } catch (e) { debugPrint('FireStoreUtils.getUserByID failed to parse user object ${user.id}'); } }); await FireStoreUtils.fireStore.collection(CollectionName.settings).doc("paypalSettings").get().then((paypalData) { try { paypalDataModel.value = PayPalModel.fromJson(paypalData.data() ?? {}); } catch (error) { debugPrint(error.toString()); } }); await FireStoreUtils.fireStore.collection(CollectionName.settings).doc("stripeSettings").get().then((paypalData) { try { stripeSettingData.value = StripeModel.fromJson(paypalData.data() ?? {}); } catch (error) { debugPrint(error.toString()); } }); await FireStoreUtils.fireStore.collection(CollectionName.settings).doc("flutterWave").get().then((paypalData) { try { flutterWaveSettingData.value = FlutterWaveModel.fromJson(paypalData.data() ?? {}); } catch (error) { debugPrint(error.toString()); } }); isLoading.value = false; } }