import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/controller/functions/toast.dart'; import 'package:SEFER/controller/payment/payment_controller.dart'; import '../../../main.dart'; class PassengerWalletDialog extends StatelessWidget { const PassengerWalletDialog({ super.key, }); @override Widget build(BuildContext context) { return GetBuilder( builder: (controller) => Positioned( top: Get.height * .1, right: Get.width * .15, left: Get.width * .15, bottom: Get.height * .1, child: controller.isPromoSheetDialogue ? CupertinoActionSheet( title: Text('Select Payment Amount'.tr), actions: [ CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Egypt' ? 100 : 10, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Egypt' ? '100 ${'LE'.tr}' : '10 ${'JOD'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Egypt' ? 200 : 20, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Egypt' ? '200 ${'LE'.tr} = 205 ${'LE'.tr}' : '20 ${'JOD'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Egypt' ? 400 : 40, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Egypt' ? '400 ${'LE'.tr} = 415 ${'LE'.tr}' : '40 ${'JOD'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Egypt' ? 1000 : 50, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Egypt' ? '1000 ${'LE'.tr} = 1100 ${'LE'.tr}' : '50 ${'JOD'.tr}', ), ), ], cancelButton: CupertinoActionSheetAction( onPressed: () { controller.changePromoSheetDialogue(); }, child: Text('Cancel'.tr), ), ) : const SizedBox(), ), ); } } void showPaymentOptions(BuildContext context, PaymentController controller) { showCupertinoModalPopup( context: context, builder: (context) => CupertinoActionSheet( title: Text('Payment Options'.tr), actions: [ box.read(BoxName.countryCode) == 'Egypt' ? CupertinoActionSheetAction( child: Text('💳 Pay with Credit Card'.tr), onPressed: () { if (controller.selectedAmount != 0) { controller.payWithPayMob( context, controller.selectedAmount.toString(), box.read(BoxName.countryCode) == 'Egypt' ? 'EGP' : 'JOD', () async { await controller.addPassengerWallet(); controller.changePromoSheetDialogue(); await controller.getPassengerWallet(); }, ); } else { Toast.show(context, '⚠️ You need to choose an amount!'.tr, AppColor.redColor); } }, ) : const SizedBox(), box.read(BoxName.countryCode) != 'Egypt' ? CupertinoActionSheetAction( child: Text('Pay with PayPal'.tr), onPressed: () { if (controller.selectedAmount != 0) { controller.makePaymentPayPal(context); } else { Toast.show(context, 'You will choose one of above!'.tr, AppColor.redColor); } }, ) : const SizedBox(), box.read(BoxName.phoneWallet) != null ? CupertinoActionSheetAction( child: Text('💰 Pay with Wallet'.tr), onPressed: () { if (controller.selectedAmount != 0) { controller.isLoading = true; controller.update(); controller.payWithPayMobWallet( context, controller.selectedAmount.toString(), box.read(BoxName.countryCode) == 'Egypt' ? 'EGP' : 'JOD', () async { await controller.addPassengerWallet(); controller.changePromoSheetDialogue(); await controller.getPassengerWallet(); }, ); controller.isLoading = false; controller.update(); } else { Toast.show(context, '⚠️ You need to choose an amount!'.tr, AppColor.redColor); } }, ) : CupertinoActionSheetAction( child: Text('Add wallet phone you use'.tr), onPressed: () { Get.dialog( CupertinoAlertDialog( title: Text('Insert Wallet phone number'.tr), content: Column( children: [ const SizedBox(height: 10), CupertinoTextField( controller: controller.walletphoneController, placeholder: 'Insert Wallet phone number'.tr, keyboardType: TextInputType.phone, padding: const EdgeInsets.symmetric( vertical: 12, horizontal: 10, ), ), ], ), actions: [ CupertinoDialogAction( child: Text('Cancel'.tr, style: const TextStyle( color: CupertinoColors.destructiveRed)), onPressed: () { Get.back(); }, ), CupertinoDialogAction( child: Text('OK'.tr, style: const TextStyle( color: CupertinoColors.activeGreen)), onPressed: () async { Get.back(); box.write(BoxName.phoneWallet, controller.walletphoneController.text); Toast.show( context, 'Phone Wallet Saved Successfully'.tr, AppColor.greenColor); }, ), ], ), barrierDismissible: false, ); }, ), ], cancelButton: CupertinoActionSheetAction( child: Text('Cancel'.tr), onPressed: () { controller.changePromoSheetDialogue(); }, ), ), ); }