From 2e3ce78fe8b639e081d78487a757fd21063c5f3a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Thu, 19 Sep 2024 07:05:19 +0300 Subject: [PATCH] 9/19/1 --- .env | 2 +- android/app/build.gradle | 4 +- android/app/src/main/res/raw/app_icon.png | Bin 0 -> 62830 bytes ios/Runner/Info.plist | 184 ++++++++-------- lib/constant/links.dart | 2 + lib/controller/firebase/firbase_messge.dart | 98 ++++++--- .../home/map_passenger_controller.dart | 61 ++++-- lib/controller/local/translations.dart | 4 + .../map_widget.dart/left_main_menu_icons.dart | 47 +++- .../map_widget.dart/ride_begin_passenger.dart | 5 +- .../home/my_wallet/passenger_wallet.dart | 5 + .../my_wallet/passenger_wallet_dialoge.dart | 204 +++++++++++------- 12 files changed, 393 insertions(+), 223 deletions(-) create mode 100644 android/app/src/main/res/raw/app_icon.png diff --git a/.env b/.env index 6e03726..a5bc609 100644 --- a/.env +++ b/.env @@ -20,7 +20,7 @@ seferPaymentServer=https://seferpw.shop/sefer seferCairoServer=https://sefer.click/sefer seferGizaServer=https://gizasefer.online/sefer whatappID=369939736211879 -whatsapp=EAAOtbZBSUK74BO6yE1QwIBsRCjPDANdum66xap0ZA7OZA8LqEu8MZAts1kwr12eRiNXtvpJ2ZAFSY5dw3KVSyrUuH8boLjynxdFI4Gh1Q7BCHx275X2uZBwKWZCSrsVN17i6mZAFNYYd25sQv0ZBomeTk02ZCIJot4UqWxK9ZBvxsq1k2yS7lD2NsjZB5EHbpaYGLzxFJ2FCCSX6iHyKXab6ckfK7m19wo77in7Dl3YZD +whatsapp=EAAOtbZBSUK74BO3mbLwnnn5GsZBc5uAMHgbDGpyi3C0vDI8ZBWZBzN8HUwXePwisopEgyIGcNfZCNQ8RZAJEdmw58D1qgX5hsbfh9XDsIfFG2yKrVXYbPm5zClUbJMHSHAmtTNkfPkzK7AEvOp2KzZADkkqq5QDzk1iDcauULdEDkmxcCz4HDiYeGOEmPVXFr55zK24sHSGZBFDdqtkunHCZCyCShcj1Gg9GomWRi2NEZD cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl diff --git a/android/app/build.gradle b/android/app/build.gradle index 701a177..15619f0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -148,8 +148,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdk = 23 targetSdk = flutter.targetSdkVersion - versionCode = 70 - versionName = '1.5.70' + versionCode = 71 + versionName = '1.5.71' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/android/app/src/main/res/raw/app_icon.png b/android/app/src/main/res/raw/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..96cc55a8e7da0c2843621332a1338764c122535d GIT binary patch literal 62830 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 - - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLSchemes - - com.googleusercontent.apps.594687661098-8e26699cris2k3nj5msj1osi59it9kpf - - - - LSApplicationQueriesSchemes - - googlechromes - comgooglemaps - - CADisableMinimumFrameDurationOnPhone - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Sefer - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleGetInfoString - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Sefer - CFBundlePackageType - APPL - CFBundleShortVersionString - 48 - CFBundleSignature - ???? - CFBundleVersion - 4.3.48 - FirebaseAppDelegateProxyEnabled - NO - GMSApiKey - YOUR_API_KEY - LSApplicationCategoryType - - LSRequiresIPhoneOS - - NSCameraUsageDescription - Sefer app requires access to your camera in order to scan QR codes and capture + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + com.googleusercontent.apps.594687661098-8e26699cris2k3nj5msj1osi59it9kpf + + + + LSApplicationQueriesSchemes + + googlechromes + comgooglemaps + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Sefer + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sefer + CFBundlePackageType + APPL + CFBundleShortVersionString + 52 + CFBundleSignature + ???? + CFBundleVersion + 4.3.52 + FirebaseAppDelegateProxyEnabled + NO + GMSApiKey + YOUR_API_KEY + LSApplicationCategoryType + + LSRequiresIPhoneOS + + NSCameraUsageDescription + Sefer app requires access to your camera in order to scan QR codes and capture images for uploading and access to connect to a call. - NSFaceIDUsageDescription - Use Face ID to securely authenticate payment accounts. - NSLocationAlwaysAndWhenInUseUsageDescription - This app needs access to your location to provide you with the best ride experience. + NSFaceIDUsageDescription + Use Face ID to securely authenticate payment accounts. + NSLocationAlwaysAndWhenInUseUsageDescription + This app needs access to your location to provide you with the best ride experience. Your location data will be used to find the nearest available cars and connect you with the closest captain for efficient and convenient rides. - NSLocationAlwaysUsageDescription - This app needs access to location. - NSLocationWhenInUseUsageDescription - This app needs access to your location to provide you with the best ride experience. + NSLocationAlwaysUsageDescription + This app needs access to location. + NSLocationWhenInUseUsageDescription + This app needs access to your location to provide you with the best ride experience. Your location data will be used to find the nearest available cars and connect you with the closest captain for efficient and convenient rides. - NSMicrophoneUsageDescription - This app requires access to your microphone to record audio, allowing you to add + NSMicrophoneUsageDescription + This app requires access to your microphone to record audio, allowing you to add voice recordings to your photos and videos and access to connect to a call. - NSPhotoLibraryUsageDescription - Explanation of why your app needs access to the photo library. - UIApplicationSupportsIndirectInputEvents - - UIBackgroundModes - - fetch - location - remote-notification - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - \ No newline at end of file + NSPhotoLibraryUsageDescription + Explanation of why your app needs access to the photo library. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + fetch + location + remote-notification + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/lib/constant/links.dart b/lib/constant/links.dart index a661486..a06a4c4 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -189,6 +189,8 @@ class AppLink { static String getCarsLocationByPassengerSpeed = "$location/getSpeed.php"; static String getCarsLocationByPassengerComfort = "$location/getComfort.php"; static String getCarsLocationByPassengerBalash = "$location/getBalash.php"; + static String getCarsLocationByPassengerPinkBike = + "$location/getPinkBike.php"; static String getCarsLocationByPassengerDelivery = "$location/getDelivery.php"; static String getLocationParents = "$location/getLocationParents.php"; diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index adaead2..ebaba41 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -429,7 +429,7 @@ class FirebaseMessagesController extends GetxController { )); } - void sendNotificationAll(String title, body) async { + void sendNotificationAll(String title, body, tone) async { // Get the token you want to subtract. String token = box.read(BoxName.tokenFCM); tokens = box.read(BoxName.tokens); @@ -441,25 +441,41 @@ class FirebaseMessagesController extends GetxController { tokens = box.read(BoxName.tokens); for (var i = 0; i < tokens.length; i++) { http - .post(Uri.parse('https://fcm.googleapis.com/fcm/send'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'key=${AK.serverAPI}' - }, - body: jsonEncode({ - 'notification': { + .post( + Uri.parse('https://fcm.googleapis.com/fcm/send'), + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'key=${AK.serverAPI}' + }, + body: jsonEncode({ + 'message': { + 'token': token, + 'notification': { 'title': title, 'body': body, - 'sound': 'ding.wav' }, - 'priority': 'high', - 'data': { - 'click_action': 'FLUTTER_NOTIFICATION_CLICK', - 'id': '1', - 'status': 'done' + // 'data': { + // 'DriverList': jsonEncode(data), + // }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, }, - 'to': tokens[i], - })) + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, + }, + }), + ) .whenComplete(() {}) .catchError((e) {}); } @@ -533,11 +549,15 @@ class FirebaseMessagesController extends GetxController { 'body': body, }, 'android': { + 'priority': 'high', // Set priority to high 'notification': { 'sound': tone, }, }, 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, 'payload': { 'aps': { 'sound': tone, @@ -603,11 +623,15 @@ class FirebaseMessagesController extends GetxController { 'body': body, }, 'android': { + 'priority': 'high', // Set priority to high 'notification': { 'sound': tone, }, }, 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, 'payload': { 'aps': { 'sound': tone, @@ -716,11 +740,15 @@ class FirebaseMessagesController extends GetxController { 'DriverList': jsonEncode(data), }, 'android': { + 'priority': 'high', // Set priority to high 'notification': { 'sound': tone, }, }, 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, 'payload': { 'aps': { 'sound': tone, @@ -746,7 +774,7 @@ class FirebaseMessagesController extends GetxController { } void sendNotificationToDriverMapPolyline(String title, String body, - String token, List data, String polylineJson) async { + String token, List data, String polylineJson, String tone) async { try { String serviceAccountKeyJson = '''{ "type": "service_account", @@ -778,18 +806,32 @@ class FirebaseMessagesController extends GetxController { 'Authorization': 'Bearer $accessToken', }, body: jsonEncode({ - 'notification': { - 'title': title, - 'body': body, - // 'sound': 'tone2.wav', - 'sound': 'order.wav' + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + 'data': { + 'DriverList': jsonEncode(data), + }, + 'android': { + 'priority': 'high', // Set priority to high + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'headers': { + 'apns-priority': '10', // Set APNs priority to 10 + }, + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, }, - 'data': { - 'DriverList': data, - 'PolylineJson': polylineJson, - }, - 'priority': 'high', - 'to': token, }), ); diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 3eb764e..ae93a0c 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1017,10 +1017,10 @@ class MapPassengerController extends GetxController { late String make = ''; late String licensePlate = ''; confirmRideForFirstDriver() async { - startCarLocationSearch(box.read(BoxName.carType)); + // startCarLocationSearch(box.read(BoxName.carType)); // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 7000); - await getNearestDriverByPassengerLocationAPIGOOGLE(); + // box.read(BoxName.carType), 7000); + // await getNearestDriverByPassengerLocationAPIGOOGLE(); Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); if (dataCarsLocationByPassenger != 'failure' || dataCarsLocationByPassenger != null) { @@ -1258,12 +1258,8 @@ class MapPassengerController extends GetxController { ]; Log.print('body: ${body}'); for (var i = 1; i < driversToken.length; i++) { - FirebaseMessagesController().sendNotificationToDriverMapPolyline( - 'OrderSpeed', - rideId.toString(), - driversToken[i], - body, - polylineCoordinates.toString()); + FirebaseMessagesController().sendNotificationToDriverMAP('OrderSpeed', + rideId.toString(), driversToken[i], body, 'order.wav'); } (rideId); @@ -1291,6 +1287,8 @@ class MapPassengerController extends GetxController { if (res.toString() == 'waiting' && tick >= 15) { timer.cancel(); // Stop the current timer showAndResearchForCaptain(); + //TODO add to wait + confirmRideForAllDriverAvailable(); // delayAndFetchRideStatusForAllDriverAvailable(rideId); } else if (res.toString() == 'Apply') { // todo play sound @@ -1314,7 +1312,9 @@ class MapPassengerController extends GetxController { // No need to recall delayAndFetchRideStatus as Timer.periodic is already running update(); // } - tick++; + if (tick < 19) { + tick++; + } } else { timer.cancel(); // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 @@ -1343,7 +1343,7 @@ class MapPassengerController extends GetxController { Log.print('tick delayAndFetchRideStatusForAllDriverAvailable: ${tick}'); void fetchRideStatus() async { - if (attemptCounter < maxAttempts && !isApplied && tick < 20) { + if (attemptCounter < maxAttempts && !isApplied || tick < 20) { attemptCounter++; tick++; var res = await getRideStatus(rideId); @@ -1760,7 +1760,7 @@ class MapPassengerController extends GetxController { 'northeastLon': bounds.northeast.longitude.toString(), }); break; - case 'Delivery': + case 'Scooter': res = await CRUD() .get(link: AppLink.getCarsLocationByPassengerDelivery, payload: { 'southwestLat': bounds.southwest.latitude.toString(), @@ -1778,6 +1778,15 @@ class MapPassengerController extends GetxController { 'northeastLon': bounds.northeast.longitude.toString(), }); break; + case 'Pink Bike': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerPinkBike, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; default: res = await CRUD() .get(link: AppLink.getCarsLocationByPassenger, payload: { @@ -1796,11 +1805,29 @@ class MapPassengerController extends GetxController { } else { noCarString = false; dataCarsLocationByPassenger = jsonDecode(res); - driverId = dataCarsLocationByPassenger['message'][carsOrder] - ['driver_id'] - .toString(); - gender = dataCarsLocationByPassenger['message'][carsOrder]['gender'] - .toString(); + + // Check if 'message' is present and not null + if (dataCarsLocationByPassenger['message'] != null && + dataCarsLocationByPassenger['message'].isNotEmpty) { + // Check if carsOrder is within bounds + if (carsOrder < dataCarsLocationByPassenger['message'].length) { + driverId = dataCarsLocationByPassenger['message'][carsOrder] + ['driver_id'] + .toString(); + gender = dataCarsLocationByPassenger['message'][carsOrder]['gender'] + .toString(); + driverToken = dataCarsLocationByPassenger['message'][carsOrder] + ['token'] + .toString(); + } else { + print('carsOrder is out of bounds for message array'); + return false; + } + } else { + // Get.defaultDialog(title: 'No cars available '); + print('No cars available or message is null'); + return false; + } carsLocationByPassenger.clear(); // Clear existing markers diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index a5a8b93..72ed9ef 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,10 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Price of trip": "سعر الرحلة", + "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "بالنسبة لرحلات السرعة والتوصيل، يتم حساب السعر ديناميكياً. بالنسبة لرحلات الراحة، يتم حساب السعر بناءً على الوقت والمسافة", + "Phone Wallet Saved Successfully": "تم حفظ المحفظة الهاتفية بنجاح", "Add wallet phone you use": "أضف محفظة الهاتف التي تستخدمها", "Update Available": "تحديث متوفر", 'Phone number must be exactly 11 digits long': diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart index d004ed5..65478ee 100644 --- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart +++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart @@ -121,7 +121,50 @@ GetBuilder leftMainMenuIcons() { // borderRadius: BorderRadius.circular(15)), // child: IconButton( // onPressed: () async { - // Get.to(SmsSignupEgypt()); + // // Get.to(SmsSignupEgypt()); + // List d = [ + // "30.003028,31.2419628", + // "30.0955661,31.2665336", + // "160.00", + // "25.92", + // "1488", + // "16.93", + // "114243034311436865474", + // "113172279072358305645", + // "hamza ayed", + // "rlMbi4Hc8L1STMPE99iPKqK4Gddwv8r9qZOCadsz9qTEJZ6KLEE9ruTJI6N8dKfK4CXez5pme5WIs14-1QGo29s07fQOniZgIlJV5XFL3yqzPRSUmn3", + // "+201023248456", + // "1 min", + // "1 m", + // "false", + // "QwUMoyUtZ0J3oR6yXKUavrB_gBl9npUZe-qZtax-Raq4QBbdKv0AmtLKm0BfBd6N_592HBv4CVa41ii4122W3hr-BCUKKzJhzZcK8m0YjbWbtpvgJRD8uD_nuMk9", + // "0", + // "238", + // "false", + // "114243034311436865474", + // "1488", + // "startEnd", + // "30.049307749732176,31.274291574954987", + // "", + // "", + // "", + // "", + // "17.73", + // "0", + // "hamzaayedflutter@gmail.com", + // "الفسطاط، حي مصر القديمة، مصر", + // " الزاوية الحمراء، محافظة القاهرة، مصر", + // "Speed", + // "8", + // "5.00" + // ]; + // FirebaseMessagesController().sendNotificationToDriverMAP( + // 'Order'.tr, + // 'from: ', + // // jsonDecode(value)['message'].toString(), + // 'd3JaCCFAQeu8QTxRnlC1sB:APA91bFuRjbVK32obIFYXFTI4iwsZEPrrgwvPouob2bXivID-W4aXz51J_OIJ2nHpNU2ocOvGLD1Ip65rLViAFx5qHVE-c8FabBwBi5fSQ-lDTQfe36xxKsc9DU-sTyj_FoYrrMnLNVi', + // d, + // 'order.wav'); // }, // icon: const Icon( // Icons.chat, @@ -129,7 +172,7 @@ GetBuilder leftMainMenuIcons() { // ), // ), // ), - // AnimatedContainer( + // // AnimatedContainer( // duration: const Duration(microseconds: 200), // width: controller.widthMapTypeAndTraffic, // decoration: BoxDecoration( diff --git a/lib/views/home/map_widget.dart/ride_begin_passenger.dart b/lib/views/home/map_widget.dart/ride_begin_passenger.dart index 984c2a7..abd71c7 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -10,6 +10,7 @@ import 'package:SEFER/main.dart'; import '../../../constant/colors.dart'; import '../../../constant/style.dart'; import '../../../controller/functions/audio_record1.dart'; +import '../../../controller/functions/launch.dart'; import '../../../controller/functions/toast.dart'; import '../../../controller/home/map_passenger_controller.dart'; @@ -248,8 +249,8 @@ class RideBeginPassenger extends StatelessWidget { profileController.prfoileData['sosPhone']); } } else { - controller - .sendSMS(box.read(BoxName.sosPhonePassenger)); + makePhoneCall('122'); + // box.read(BoxName.sosPhonePassenger)); } }, icon: const Icon( diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index 29c5794..de06b3b 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -6,6 +6,7 @@ import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/info.dart'; import '../../../constant/style.dart'; +import '../../../controller/functions/toast.dart'; import '../../../controller/home/payment/credit_card_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; @@ -96,6 +97,10 @@ class PassengerWallet extends StatelessWidget { Get.back(); box.write(BoxName.phoneWallet, controller.walletphoneController.text); + Toast.show( + context, + 'Phone Wallet Saved Successfully'.tr, + AppColor.greenColor); }, ), cancel: MyElevatedButton( diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index d9ae68d..531ebae 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -8,6 +8,7 @@ import 'package:SEFER/controller/payment/payment_controller.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import '../../../main.dart'; +import '../../widgets/my_textField.dart'; class PassengerWalletDialog extends StatelessWidget { const PassengerWalletDialog({ @@ -163,92 +164,137 @@ class PassengerWalletDialog extends StatelessWidget { }, ), box.read(BoxName.countryCode) == 'Egypt' - ? Column( - children: [ - MyElevatedButton( - title: '💳 Pay with Credit Card'.tr, + ? box.read(BoxName.phoneWallet) != null + ? Column( + children: [ + MyElevatedButton( + title: '💳 Pay with Credit Card'.tr, + onPressed: () { + if (controller.selectedAmount != 0) { + controller.payWithPayMob( + context, + controller.selectedAmount + .toString(), // Convert int to double + 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, + ); + } + }, + ), + // Add some spacing between buttons + MyElevatedButton( + kolor: AppColor.yellowColor, + title: '💰 Pay with Wallet'.tr, + onPressed: () { + if (controller.selectedAmount != 0) { + controller.payWithPayMobWallet( + context, + controller.selectedAmount + .toString(), // Convert int to double + 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, + ); + } + }, + ), + ], + ) + : MyElevatedButton( + title: 'Pay with Credit Card'.tr, onPressed: () { if (controller.selectedAmount != 0) { - controller.payWithPayMob( - context, - controller.selectedAmount - .toString(), // Convert int to double - box.read(BoxName.countryCode) == - 'Egypt' - ? 'EGP' - : 'JOD', - () async { - await controller - .addPassengerWallet(); - controller - .changePromoSheetDialogue(); - await controller - .getPassengerWallet(); - }, - ); + controller.makePaymentStripe( + controller.selectedAmount! + .toDouble(), // Convert int to double + box.read(BoxName.countryCode) != + 'Egypt' + ? 'usd' + : 'jod', () { + controller.addPassengerWallet(); + controller.changePromoSheetDialogue(); + controller.getPassengerWallet(); + }); } else { Toast.show( - context, - '⚠️ You need to choose an amount!'.tr, - AppColor.redColor, - ); + context, + 'You will choose one of above !'.tr, + AppColor.redColor); } - }, - ), - // Add some spacing between buttons - MyElevatedButton( - kolor: AppColor.yellowColor, - title: '💰 Pay with Wallet'.tr, - onPressed: () { - if (controller.selectedAmount != 0) { - controller.payWithPayMobWallet( - context, - controller.selectedAmount - .toString(), // Convert int to double - 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, - ); - } - }, - ), - ], - ) + }) : MyElevatedButton( - title: 'Pay with Credit Card'.tr, + kolor: AppColor.deepPurpleAccent, + title: "Add wallet phone you use".tr, onPressed: () { - if (controller.selectedAmount != 0) { - controller.makePaymentStripe( - controller.selectedAmount! - .toDouble(), // Convert int to double - box.read(BoxName.countryCode) != 'Egypt' - ? 'usd' - : 'jod', () { - controller.addPassengerWallet(); - controller.changePromoSheetDialogue(); - controller.getPassengerWallet(); - }); - } else { - Toast.show( - context, - 'You will choose one of above !'.tr, - AppColor.redColor); - } + Get.defaultDialog( + barrierDismissible: false, + title: 'Insert Wallet phone number'.tr, + content: Form( + key: controller.formKey, + child: MyTextForm( + controller: controller + .walletphoneController, + label: + 'Insert Wallet phone number' + .tr, + hint: 'Insert Wallet phone number' + .tr, + type: TextInputType.phone)), + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'OK'.tr, + onPressed: () async { + Get.back(); + box.write( + BoxName.phoneWallet, + controller + .walletphoneController.text); + Toast.show( + context, + 'Phone Wallet Saved Successfully' + .tr, + AppColor.greenColor); + }, + ), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); + })); }), MyElevatedButton( title: 'Cancel'.tr,