import 'package:Intaleq/constant/style.dart'; import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:Intaleq/constant/box_name.dart'; import 'package:Intaleq/constant/colors.dart'; import 'package:Intaleq/controller/functions/toast.dart'; import 'package:Intaleq/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) == 'Syria' ? 1000 : 10, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Syria' ? '1000 ${'LE'.tr}' : '10 ${'SYP'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Syria' ? 2000 : 20, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Syria' ? '2000 ${'LE'.tr} = 2050 ${'LE'.tr}' : '20 ${'SYP'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Syria' ? 4000 : 40, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Syria' ? '4000 ${'LE'.tr} = 4150 ${'LE'.tr}' : '40 ${'SYP'.tr}', ), ), CupertinoActionSheetAction( onPressed: () { controller.updateSelectedAmount( box.read(BoxName.countryCode) == 'Syria' ? 1000 : 50, ); showPaymentOptions(context, controller); }, child: Text( box.read(BoxName.countryCode) == 'Syria' ? '10000 ${'LE'.tr} = 11000 ${'LE'.tr}' : '50 ${'SYP'.tr}', ), ), ], cancelButton: CupertinoActionSheetAction( onPressed: () { controller.changePromoSheetDialogue(); }, child: Text('Cancel'.tr), ), ) : const SizedBox(), ), ); } } // class PassengerWalletDialog extends StatelessWidget { // const PassengerWalletDialog({ // super.key, // }); // @override // Widget build(BuildContext context) { // return GetBuilder( // builder: (controller) { // return Positioned( // top: Get.height * .1, // right: Get.width * .15, // left: Get.width * .15, // bottom: Get.height * .1, // child: controller.isPromoSheetDialogue // ? Container() // : SizedBox // .shrink(), // If condition is false, return an empty widget // ); // }, // ); // } // } void showPaymentBottomSheet(BuildContext context) { final controller = Get.find(); showModalBottomSheet( context: context, isScrollControlled: true, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.vertical(top: Radius.circular(15.0)), ), builder: (BuildContext context) { return WillPopScope( onWillPop: () async { Get.back(); return false; }, child: Container( padding: const EdgeInsets.all(16.0), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Text( 'Select Payment Amount'.tr, style: AppStyle.headTitle2, textAlign: TextAlign.center, ), const SizedBox(height: 16.0), // Payment Options List _buildPaymentOption( context: context, controller: controller, amount: 100000, bonusAmount: 0, currency: 'SYP'.tr, ), const SizedBox(height: 8.0), _buildPaymentOption( context: context, controller: controller, amount: 200000, bonusAmount: 5000, currency: 'SYP'.tr, ), const SizedBox(height: 8.0), _buildPaymentOption( context: context, controller: controller, amount: 400000, bonusAmount: 25000, currency: 'SYP'.tr, ), const SizedBox(height: 8.0), _buildPaymentOption( context: context, controller: controller, amount: 1000000, bonusAmount: 40000, currency: 'SYP'.tr, ), const SizedBox(height: 16.0), TextButton( onPressed: () => Get.back(), child: Text('Cancel'.tr), ), ], ), ), ); }, ); } Widget _buildPaymentOption({ required BuildContext context, required PaymentController controller, required int amount, required double bonusAmount, required String currency, }) { return Material( color: Colors.transparent, child: InkWell( onTap: () { controller.updateSelectedAmount(amount); Get.back(); showPaymentOptions(context, controller); }, child: Container( padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 16.0), decoration: BoxDecoration( border: Border.all(color: Colors.grey[300]!), borderRadius: BorderRadius.circular(8.0), ), child: Text( bonusAmount > 0 ? '${'Pay'.tr} $amount $currency, ${'Get'.tr} ${amount + bonusAmount} $currency' : '$amount $currency', style: AppStyle.title, textAlign: TextAlign.center, ), ), ), ); } void showPaymentOptions(BuildContext context, PaymentController controller) { showCupertinoModalPopup( context: context, builder: (context) => CupertinoActionSheet( title: Text('Payment Options'.tr), actions: [ box.read(BoxName.countryCode) == 'Syria' ? CupertinoActionSheetAction( child: Text('💳 Pay with Credit Card'.tr), onPressed: () async { if (controller.selectedAmount != 0) { controller.payWithEcash( context, controller.selectedAmount.toString(), // () 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) != 'Syria' ? 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: () async { if (controller.selectedAmount != 0) { controller.isLoading = true; controller.update(); controller.payWithMTNWallet( context, controller.selectedAmount.toString(), 'SYP', ); 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(); Get.back(); }, ), ), ); }