Files
Fondex-Driver/lib/controllers/withdraw_method_setup_controller.dart
2025-12-08 23:25:00 +05:00

113 lines
4.3 KiB
Dart

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<TextEditingController> accountNumberFlutterWave = TextEditingController().obs;
Rx<TextEditingController> bankCodeFlutterWave = TextEditingController().obs;
Rx<TextEditingController> emailPaypal = TextEditingController().obs;
Rx<TextEditingController> accountIdRazorPay = TextEditingController().obs;
Rx<TextEditingController> accountIdStripe = TextEditingController().obs;
Rx<UserBankDetails> userBankDetails = UserBankDetails().obs;
Rx<WithdrawMethodModel> withdrawMethodModel = WithdrawMethodModel().obs;
RxBool isBankDetailsAdded = false.obs;
RxBool isLoading = true.obs;
Rx<RazorPayModel> razorPayModel = RazorPayModel().obs;
Rx<PayPalModel> paypalDataModel = PayPalModel().obs;
Rx<StripeModel> stripeSettingData = StripeModel().obs;
Rx<FlutterWaveModel> flutterWaveSettingData = FlutterWaveModel().obs;
@override
void onInit() {
// TODO: implement onInit
getPaymentMethod();
getPaymentSettings();
super.onInit();
}
Future<void> 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<void> 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;
}
}