import 'package:SEFER/constant/links.dart'; import 'package:SEFER/controller/functions/crud.dart'; import 'package:SEFER/controller/functions/tts.dart'; import 'package:SEFER/controller/home/payment/paymob_payout.dart'; import 'package:SEFER/views/home/my_wallet/bank_account_egypt.dart'; import 'package:SEFER/views/home/my_wallet/payment_history_driver_page.dart'; import 'package:SEFER/views/widgets/mydialoug.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/info.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/home/payment/captain_wallet_controller.dart'; import 'package:SEFER/controller/payment/payment_controller.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_textField.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; import '../../../controller/payment/driver_payment_controller.dart'; import '../../widgets/my_scafold.dart'; import 'card_wallet_widget.dart'; import 'points_captain.dart'; import 'transfer_budget_page.dart'; import 'weekly_payment_page.dart'; class WalletCaptain extends StatelessWidget { WalletCaptain({super.key}); CaptainWalletController captainWalletController = Get.put(CaptainWalletController()); @override Widget build(BuildContext context) { // Get.put(MapDriverController()).totalPricePassenger = '0'; captainWalletController.refreshCaptainWallet(); return MyScafolld( title: 'Driver Wallet'.tr, body: [ GetBuilder( builder: (captainWalletController) => captainWalletController .isLoading ? const MyCircularProgressIndicator() : Padding( padding: const EdgeInsets.all(10), child: ListView( children: [ const SizedBox(), Container( // decoration: AppStyle.boxDecoration1.copyWith( color: double.parse( captainWalletController.totalPoints) < 0 && double.parse( captainWalletController.totalPoints) > -3000 ? AppColor.yellowColor : double.parse( captainWalletController.totalPoints) < -3000 ? AppColor.redColor : AppColor.greenColor, // ), child: InkWell( onTap: () { Get.snackbar( 'the 3000 points equal 3000 L.E'.tr, 'the 3000 points equal 3000 L.E for you \nSo go and gain your money' .tr, backgroundColor: AppColor.greenColor, snackPosition: SnackPosition.BOTTOM, duration: const Duration(seconds: 4), ); }, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 4), child: Text( '${'Total Points is'.tr} ${captainWalletController.totalPoints.toString()} 💎', style: AppStyle.headTitle2, textAlign: TextAlign.center, ), ), ), ), const SizedBox( height: 10, ), double.parse(captainWalletController.totalPoints .toString()) < -3000 ? MyElevatedButton( title: 'Charge your Account'.tr, onPressed: () {}) : const SizedBox(), const SizedBox( height: 10, ), const CardSeferWalletDriver(), Card( elevation: 4, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 4), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Total Budget from trips is '.tr, style: AppStyle.title, ), Container( decoration: BoxDecoration( border: Border.all( width: 2, color: AppColor.writeColor)), child: GestureDetector( onTap: () { Get.snackbar( icon: InkWell( onTap: () async { await Get.put( TextToSpeechController()) .speakText( 'This amount for all trip I get from Passengers' .tr); }, child: const Icon( Icons.headphones)), '${'Total Amount:'.tr} ${captainWalletController.totalAmount}\$', 'This amount for all trip I get from Passengers' .tr, duration: const Duration(seconds: 6), backgroundColor: AppColor.yellowColor, snackPosition: SnackPosition.BOTTOM, ); }, child: Padding( padding: const EdgeInsets.all(2), child: Text( '${captainWalletController.totalAmount}\$'), ), ), ) ], ), const SizedBox( height: 10, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Total Budget from trips by\nCredit card is ' .tr, style: AppStyle.title, ), Container( decoration: BoxDecoration( border: Border.all( width: 2, color: AppColor.writeColor)), child: Padding( padding: const EdgeInsets.all(2), child: InkWell( onTap: () { Get.snackbar( icon: InkWell( onTap: () async { await Get.find< TextToSpeechController>() .speakText( 'This amount for all trip I get from Passengers and Collected For me in' .tr + ' SAFAR Wallet'.tr, ); }, child: const Icon( Icons.headphones), ), '${'Total Amount:'.tr} ${captainWalletController.totalAmountVisa}\$', 'This amount for all trip I get from Passengers and Collected For me in' .tr + ' ${AppInformation.appName} Wallet' .tr, duration: const Duration(seconds: 6), backgroundColor: AppColor.redColor, snackPosition: SnackPosition.BOTTOM, ); }, child: Text( '${captainWalletController.totalAmountVisa}\$'), ), )) ], ), const SizedBox( height: 10, ), MyElevatedButton( title: 'You can buy points from your budget'.tr, onPressed: () { Get.defaultDialog( title: 'Pay from my budget'.tr, titleStyle: AppStyle.title, content: Form( key: captainWalletController.formKey, child: MyTextForm( controller: captainWalletController .amountFromBudgetController, label: '${'You have in account'.tr} ${captainWalletController.totalAmountVisa}', hint: '${'You have in account'.tr} ${captainWalletController.totalAmountVisa}', type: TextInputType.number, ), ), confirm: MyElevatedButton( title: 'Pay'.tr, onPressed: () async { if (double.parse( captainWalletController .amountFromBudgetController .text) < double.parse( captainWalletController .totalAmountVisa)) { await captainWalletController .payFromBudget(); } else { Get.back(); Get.snackbar( 'Your Budget less than needed' .tr, '', duration: const Duration( seconds: 3), backgroundColor: AppColor.redColor, snackPosition: SnackPosition.BOTTOM, ); } }), cancel: MyElevatedButton( title: 'Cancel'.tr, onPressed: () { Get.back(); })); }, ), MyElevatedButton( title: 'Transfer budget'.tr, onPressed: () { if (double.parse(captainWalletController .totalAmountVisa) > 15) { Get.to( () => const TransferBudgetPage()); } else { Get.snackbar( "You don't have enough money in your SEFER wallet" .tr, ''); } }) ], ), ), ), const SizedBox( height: 10, ), Padding( padding: const EdgeInsets.all(8.0), child: Container( decoration: AppStyle.boxDecoration, child: Column(children: [ Text( "You can purchase a budget to enable online access through the options listed below." .tr, textAlign: TextAlign.center, style: AppStyle.title, ), const Divider( indent: 30, endIndent: 30, color: AppColor.accentColor, thickness: 3, ), const SizedBox( height: 10, ), Container( decoration: AppStyle.boxDecoration, height: Get.height * .19, child: ListView( scrollDirection: Axis.horizontal, children: [ PointsCaptain( kolor: AppColor.greyColor, pricePoint: box.read(BoxName.countryCode) == 'Jordan' ? 5 : 80, countPoint: box.read(BoxName.countryCode) == 'Jordan' ? '3000' : '1000', ), PointsCaptain( kolor: AppColor .bronze, // Bronze color for medium value pricePoint: box.read(BoxName.countryCode) == 'Jordan' ? 10 : 200, countPoint: box.read(BoxName.countryCode) == 'Jordan' ? '1040' : '2500', ), PointsCaptain( kolor: AppColor .goldenBronze, // Golden bronze color for higher value pricePoint: box.read(BoxName.countryCode) == 'Jordan' ? 22 : 400, countPoint: box.read(BoxName.countryCode) == 'Jordan' ? '23000' : '5100', ), PointsCaptain( kolor: AppColor .gold, // Gold color for highest value pricePoint: box.read(BoxName.countryCode) == 'Jordan' ? 50 : 1000, countPoint: box.read(BoxName.countryCode) == 'Jordan' ? '55000' : '130000', ), ], ), ), ]))), const SizedBox( height: 30, ), box .read(BoxName.accountIdStripeConnect) .toString() .isEmpty ? Row( mainAxisAlignment: MainAxisAlignment.center, children: [ MyElevatedButton( title: 'Create Wallet to receive your money', onPressed: () async { box.read(BoxName.countryCode) == 'Egypt' ? addBankCodeEgypt( captainWalletController) : Get.find() .createConnectAccount(); }), ], ) : const SizedBox( height: 30, ), GetBuilder( builder: (captainWalletController) { return Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ SizedBox( width: Get.width * .9, // height: Get.height * .1, // decoration: AppStyle.boxDecoration, child: Stack( children: [ InkWell( onTap: () { MyDialog().getDialog( 'Morning Promo'.tr, "this is count of your all trips in the morning promo today from 7:00am-10:00am" .tr, () { Get.back(); }); }, child: LinearProgressIndicator( minHeight: 35, color: AppColor.blueColor, borderRadius: BorderRadius.circular(12), backgroundColor: AppColor.accentColor .withOpacity(.5), value: double.parse( captainWalletController .walletDate['message'][0] ['morning_count'] .toString()) / 5, ), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( 'Morning Promo Rides'.tr, style: AppStyle.title, ), const SizedBox( width: 20, ), Text( '${captainWalletController.walletDate['message'][0]['morning_count']} / 5', style: AppStyle.title, ), ], ), ], ), ) ], ), ); }), GetBuilder( builder: (captainWalletController) { return Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ SizedBox( width: Get.width * .9, // height: Get.height * .1, // decoration: AppStyle.boxDecoration, child: Stack( children: [ InkWell( onTap: () { MyDialog().getDialog( 'Afternoon Promo'.tr, "this is count of your all trips in the Afternoon promo today from 3:00pm-6:00 pm" .tr, () { Get.back(); }); }, child: LinearProgressIndicator( minHeight: 35, color: AppColor.blueColor, borderRadius: BorderRadius.circular(12), backgroundColor: AppColor.accentColor .withOpacity(.5), value: double.parse( captainWalletController .walletDate['message'][0] ['afternoon_count'] .toString()) / 5, ), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( 'Afternoon Promo Rides'.tr, style: AppStyle.title, ), const SizedBox( width: 20, ), Text( '${captainWalletController.walletDate['message'][0]['afternoon_count']} / 5', style: AppStyle.title, ), ], ), ], ), ) ], ), ); }), Padding( padding: const EdgeInsets.symmetric(horizontal: 10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ MyElevatedButton( kolor: AppColor.blueColor, title: 'Payment History'.tr, onPressed: () async { await Get.put(DriverWalletHistoryController()) .getArchivePayment(); Get.to(() => const PaymentHistoryDriverPage(), transition: Transition.size); }, ), MyElevatedButton( kolor: AppColor.blueColor, title: 'Weekly Budget'.tr, onPressed: () async { await Get.put(DriverWalletHistoryController()) .getWeekllyArchivePayment(); Get.to(() => const WeeklyPaymentPage(), transition: Transition.size); }, ), ], ), ), // TextButton( // onPressed: () async { // PaymentController paymentController = // Get.put(PaymentController()); // await paymentController.createTransactionToCaptain( // '1000', // box.read(BoxName.accountIdStripeConnect)); // }, // child: const Text( // "Pay to Captain", // ), // ) ], ), )) ], isleading: true, action: InkWell( onTap: () async { captainWalletController.refreshCaptainWallet(); }, child: const Icon(Icons.refresh)), ); } } Future addBankCodeEgypt( CaptainWalletController captainWalletController) { return Get.defaultDialog( title: "Insert Account Bank".tr, content: Form( key: captainWalletController.formKeyAccount, child: Column( children: [ Text("Insert Card Bank Details to Receive Your Visa Money Weekly" .tr), MyTextForm( controller: captainWalletController.cardBank, label: "Insert card number".tr, hint: '4123 4567 8910 1235', type: TextInputType.number), const SizedBox( height: 10, ), BankDropdown() ], )), confirm: MyElevatedButton( title: 'Ok'.tr, onPressed: () async { if (captainWalletController.formKeyAccount.currentState! .validate()) { Get.back(); var res = await CRUD().post(link: AppLink.updateAccountBank, payload: { "bankCode": Get.find().selectedBank.toString(), "accountBank": captainWalletController.cardBank.text.toString(), "id": box.read(BoxName.driverID).toString() }); print('res: ${res}'); if (res != 'failure') { Get.snackbar( 'updated succses'.tr, 'bank account added succesfly', backgroundColor: AppColor.greenColor); } } })); } class MyDropDown1 extends StatelessWidget { @override Widget build(BuildContext context) { Get.put(PaymobPayout()); return GetBuilder(builder: (controller) { return DropdownButton( value: controller.dropdownValue, icon: const Icon(Icons.arrow_drop_down), elevation: 16, style: const TextStyle(color: Colors.deepPurple), underline: Container( height: 2, color: Colors.deepPurpleAccent, ), onChanged: (String? newValue) { controller.dropdownValue = newValue!; controller.update(); }, items: ['etisalat', 'aman', 'orange', 'vodafone'] .map>((String value) { return DropdownMenuItem( value: value, child: Text(value), ); }).toList(), ); }); } }