From 9752d61230f760f28925b8d2c94b2adc11d885dc Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 15 Sep 2024 09:53:40 +0300 Subject: [PATCH 01/16] 9/15/1 --- .env | 2 +- android/app/build.gradle | 155 +- android/build.gradle | 2 +- android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- assets/images/moto.png | Bin 730181 -> 83925 bytes assets/images/pinkBike.png | Bin 0 -> 100796 bytes ios/Runner/AppDelegate.swift | 2 +- .../auth/onboarding_controller.dart | 2 +- lib/controller/auth/register_controller.dart | 173 +- lib/controller/functions/crud.dart | 49 + lib/controller/functions/package_info.dart | 6 + .../home/map_passenger_controller.dart | 125 +- .../local/phone_intel/countries.dart | 7574 +++++++++++++++++ .../phone_intel/country_picker_dialog.dart | 168 + lib/controller/local/phone_intel/helpers.dart | 31 + .../local/phone_intel/intl_phone_field.dart | 521 ++ .../local/phone_intel/phone_number.dart | 79 + lib/controller/local/translations.dart | 77 +- lib/views/auth/sms_verfy_page.dart | 91 +- .../car_details_widget_to_go.dart | 102 +- .../map_widget.dart/left_main_menu_icons.dart | 34 +- pubspec.lock | 24 +- pubspec.yaml | 1 + 24 files changed, 9002 insertions(+), 221 deletions(-) create mode 100644 assets/images/pinkBike.png create mode 100644 lib/controller/local/phone_intel/countries.dart create mode 100644 lib/controller/local/phone_intel/country_picker_dialog.dart create mode 100644 lib/controller/local/phone_intel/helpers.dart create mode 100644 lib/controller/local/phone_intel/intl_phone_field.dart create mode 100644 lib/controller/local/phone_intel/phone_number.dart diff --git a/.env b/.env index 47a2fdf..6e03726 100644 --- a/.env +++ b/.env @@ -18,7 +18,7 @@ serverPHP=https://api.sefer.live/sefer seferAlexandriaServer=https://seferalexandria.site/sefer seferPaymentServer=https://seferpw.shop/sefer seferCairoServer=https://sefer.click/sefer -seferGizaServer=https://sefergiza.site/sefer +seferGizaServer=https://gizasefer.online/sefer whatappID=369939736211879 whatsapp=EAAOtbZBSUK74BO6yE1QwIBsRCjPDANdum66xap0ZA7OZA8LqEu8MZAts1kwr12eRiNXtvpJ2ZAFSY5dw3KVSyrUuH8boLjynxdFI4Gh1Q7BCHx275X2uZBwKWZCSrsVN17i6mZAFNYYd25sQv0ZBomeTk02ZCIJot4UqWxK9ZBvxsq1k2yS7lD2NsjZB5EHbpaYGLzxFJ2FCCSX6iHyKXab6ckfK7m19wo77in7Dl3YZD cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl diff --git a/android/app/build.gradle b/android/app/build.gradle index 318b5f3..0b1138a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,4 +1,91 @@ - +// +//def localProperties = new Properties() +//def localPropertiesFile = rootProject.file('local.properties') +//if (localPropertiesFile.exists()) { +// localPropertiesFile.withReader('UTF-8') { reader -> +// localProperties.load(reader) +// } +//} +// +//def flutterRoot = localProperties.getProperty('flutter.sdk') +//if (flutterRoot == null) { +// throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +//} +// +//def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +//if (flutterVersionCode == null) { +// flutterVersionCode = '12' +//} +// +//def flutterVersionName = localProperties.getProperty('flutter.versionName') +//if (flutterVersionName == null) { +// flutterVersionName = '1.1.2' +//} +// +//apply plugin: 'com.android.application' +//apply plugin: 'kotlin-android' +//// apply plugin: 'com.google.gms.google-services' +//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +//def keystoreProperties = new Properties() +//def keystorePropertiesFile = rootProject.file('key.properties') +// +// +//android { +// namespace "com.mobileapp.store.ride" +// compileSdkVersion 34 +// ndkVersion flutter.ndkVersion +// +// compileOptions { +// sourceCompatibility JavaVersion.VERSION_1_8 +// targetCompatibility JavaVersion.VERSION_1_8 +// } +// +// kotlinOptions { +// jvmTarget = '1.8' +// } +// +// sourceSets { +// main.java.srcDirs += 'src/main/kotlin' +// } +// +// defaultConfig { +// // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). +// applicationId "com.mobileapp.store.ride" +// // You can update the following values to match your application needs. +// // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. +// minSdkVersion 23 +// targetSdkVersion 34 +// versionCode 67 +// versionName '1.5.67' +// // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] +// } +// +// signingConfigs { +// release { +// keyAlias keystoreProperties['keyAlias'] +// keyPassword keystoreProperties['keyPassword'] +// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null +// storePassword keystoreProperties['storePassword'] +// } +// } +// buildTypes { +// release { +// signingConfig signingConfigs.release +// } +// } +// +// +//} +// +//flutter { +// source '../..' +//} +// +//dependencies { +// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +// // implementation platform('com.google.firebase:firebase-bom:32.1.1') +// +//} def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -26,18 +113,24 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' // apply plugin: 'com.google.gms.google-services' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') - +if (keystorePropertiesFile.exists()) { + keystorePropertiesFile.withReader('UTF-8') { reader -> + keystoreProperties.load(reader) + } +} android { namespace "com.mobileapp.store.ride" - compileSdkVersion 34 - ndkVersion flutter.ndkVersion + compileSdk 34 + ndkVersion "26.1.10909125" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 + coreLibraryDesugaringEnabled true } kotlinOptions { @@ -49,32 +142,33 @@ android { } defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.mobileapp.store.ride" + // Specify your unique Application ID + applicationId = "com.mobileapp.store.ride" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 23 - targetSdkVersion 34 - versionCode 61 - versionName '1.5.61' - // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] + minSdk = 23 + targetSdk = flutter.targetSdkVersion + versionCode = 68 + versionName = '1.5.68' + multiDexEnabled =true + + // manifestPlaceholders can be specified here if needed } - signingConfigs { - release { - keyAlias keystoreProperties['keyAlias'] - keyPassword keystoreProperties['keyPassword'] - storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - storePassword keystoreProperties['storePassword'] - } - } - buildTypes { - release { - signingConfig signingConfigs.release - } - } + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } - + buildTypes { + release { + signingConfig signingConfigs.release + } + } } flutter { @@ -83,6 +177,13 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2' + // Optional dependencies like Firebase can be uncommented if needed // implementation platform('com.google.firebase:firebase-bom:32.1.1') - -} + implementation "com.stripe:stripe-android:20.47.0" + implementation 'com.stripe:paymentsheet:20.47.0' + + // If push provisioning is needed, make sure you have the correct version: + implementation "com.stripe:stripe-android-pushprovisioning:VERSION" // Replace VERSION with the correct one. + +} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 6f00cdb..eccf533 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -12,7 +12,7 @@ buildscript { // classpath 'com.android.tools.build:gradle:7.3.1' classpath 'com.google.gms:google-services:4.3.15' // END: FlutterFire Configuration - classpath 'com.android.tools.build:gradle:7.3.0' + classpath 'com.android.tools.build:gradle:8.4.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle.properties b/android/gradle.properties index 4de64f2..91ed4fe 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,6 @@ org.gradle.jvmargs=-Xmx4096M android.useAndroidX=true android.enableJetifier=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2443e72..684137a 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -4,4 +4,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip diff --git a/assets/images/moto.png b/assets/images/moto.png index 0cb9559f24b63c6c4f10b3624ee24d02dcc4e1f5..8257812a0d4dd652e365a3d98d82a53a0815a860 100644 GIT binary patch literal 83925 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⪫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 a%Rg4lv<(c`ZU$K}0D-5gpUXO@geCyezE>9j literal 730181 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�F*UOXYXV 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
HWh5<)VEQOA4?$}Im3_UPbIV1az!l^F7U| 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

MkEra}B;6X(QTW*uyjMS@Kt8nxtX7Agt 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Ⓢ%&>U5~b~64$*YRPk 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 GGywoI7bGVD literal 0 HcmV?d00001 diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 265f9be..3966f9f 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -4,7 +4,7 @@ import FirebaseCore import GoogleMaps // import Constants -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( diff --git a/lib/controller/auth/onboarding_controller.dart b/lib/controller/auth/onboarding_controller.dart index 1edc952..2746e84 100644 --- a/lib/controller/auth/onboarding_controller.dart +++ b/lib/controller/auth/onboarding_controller.dart @@ -22,7 +22,7 @@ class OnBoardingControllerImp extends OnBoardingController { if (currentPage > onBoardingList.length - 1) { box.write(BoxName.onBoarding, 'yes'); - Get.offAll(LoginPage()); + Get.offAll(() => LoginPage()); } else { pageController.animateToPage(currentPage, duration: const Duration(milliseconds: 900), curve: Curves.easeInOut); diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index 6a92964..cf76827 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/links.dart'; @@ -14,6 +15,7 @@ import 'package:SEFER/views/widgets/elevated_btn.dart'; import '../../constant/box_name.dart'; import '../../main.dart'; +import '../../print.dart'; import '../../views/auth/verify_email_page.dart'; import '../functions/sms_controller.dart'; @@ -113,80 +115,125 @@ class RegisterController extends GetxController { } sendOtpMessage() async { - SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); + SmsEgyptController smsEgyptController; - int randomNumber = Random().nextInt(100000) + 1; - isLoading = true; - update(); - if (formKey3.currentState!.validate()) { - if (box.read(BoxName.countryCode) == 'Egypt') { - if (isValidEgyptianPhoneNumber(phoneController.text) == true) { - var responseCheker = await CRUD() - .post(link: AppLink.checkPhoneNumberISVerfiedPassenger, payload: { - 'phone_number': '+2${phoneController.text}', + try { + // Initialize SmsEgyptController + smsEgyptController = Get.put(SmsEgyptController()); + + // Generate a random OTP + int randomNumber = Random().nextInt(100000) + 1; + + isLoading = true; + update(); + + // Get phone number from controller + String phoneNumber = phoneController.text; + + // Check if the phone number is from Egypt (Assuming Egyptian numbers start with +20) + bool isEgyptianNumber = phoneNumber.startsWith('+20'); + // print('dfdf${phoneNumber.toString().split('+2')[1]}'); + if (isEgyptianNumber && phoneNumber.length == 13) { + // Check if the phone number is already verified + var responseChecker = await CRUD().post( + link: AppLink.checkPhoneNumberISVerfiedPassenger, + payload: { + 'phone_number': phoneNumber, 'email': box.read(BoxName.email), - }); - if (responseCheker != 'failure') { - var d = jsonDecode(responseCheker); - if (d['message'][0]['verified'].toString() == '1') { - Get.snackbar('Phone number is verified before'.tr, '', - backgroundColor: AppColor.greenColor); - box.write(BoxName.isVerified, '1'); - box.write(BoxName.phone, '+2${phoneController.text}'); - Get.offAll(const MapPagePassenger()); - } else { - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': '+2${phoneController.text}', - 'token': randomNumber.toString(), - }); + }, + ); - await smsEgyptController.sendSmsEgypt( - phoneController.text.toString(), randomNumber.toString()); - isSent = true; - remainingTime = 300; // Reset to 5 minutes - startTimer(); - isLoading = false; - update(); - } + if (responseChecker != 'failure') { + var data = jsonDecode(responseChecker); + + // If the phone number is already verified + if (data['message'][0]['verified'].toString() == '1') { + Get.snackbar('Phone number is verified before'.tr, '', + backgroundColor: AppColor.greenColor); + box.write(BoxName.isVerified, '1'); + box.write(BoxName.phone, phoneNumber); + Get.offAll(const MapPagePassenger()); } else { - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': '+2${phoneController.text}', - 'token': randomNumber.toString(), - }); - - await smsEgyptController.sendSmsEgypt( - phoneController.text.toString(), randomNumber.toString()); - isSent = true; - remainingTime = 300; // Reset to 5 minutes - startTimer(); - isLoading = false; - update(); - - // Get.snackbar(responseCheker, 'message'); + // If the phone number is not verified, send OTP + if (isEgyptianNumber) { + if (isValidEgyptianPhoneNumber( + phoneNumber.toString().split('+2')[1])) { + await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, + smsEgyptController); + } + } } - } else if (isValidPhoneNumber(phoneController.text)) { - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': '+${phoneController.text}', - 'token': randomNumber.toString(), - }); - await smsEgyptController.sendWhatsAppAuth( - phoneController.text, randomNumber.toString()); - // await smsEgyptController.sendSmsEgypt( - // phoneController.text.toString(), randomNumber.toString()); - isSent = true; - remainingTime = 300; // Reset to 5 minutes - startTimer(); - isLoading = false; - update(); } else { - Get.snackbar('Phone Number wrong'.tr, '', - backgroundColor: AppColor.redColor, - duration: const Duration(seconds: 5)); + // If verification check fails, still send OTP + if (isEgyptianNumber) { + if (isValidEgyptianPhoneNumber( + phoneNumber.toString().split('+2')[1])) { + await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, + smsEgyptController); + } else { + MyDialog().getDialog( + 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, + () { + Get.back(); + }); + } + } } + } else { + // MyDialog().getDialog( + // 'Error'.tr, 'Phone number must be exactly 11 digits long'.tr, () { + // Get.back(); + // }); + sendOtp( + phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); + print(phoneNumber); } + } catch (e) { + // Handle error + print('Error: $e'); + } finally { + isLoading = false; + update(); } } +// Helper function to send OTP or WhatsApp message based on phone number location + Future sendOtp(String phoneNumber, int otp, bool isEgyptian, + SmsEgyptController controller) async { + // Trim any leading or trailing whitespace from the phone number + phoneNumber = phoneNumber.trim(); + Log.print('phoneNumber: ${phoneNumber}'); + + if (isEgyptian) { + // Check if the phone number has exactly 11 digits + if (phoneNumber.length == 11 && + RegExp(r'^\d{11}$').hasMatch(phoneNumber)) { + // Send SMS for Egyptian phone numbers + await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': phoneNumber, + 'token': otp.toString(), + }); + + await controller.sendSmsEgypt(phoneNumber, otp.toString()); + print('SMS sent to Egyptian phone number: $phoneNumber'); + } else { + // Show error dialog if phone number is invalid + MyDialog().getDialog('Invalid Phone Number', + 'The phone number must be exactly 11 digits long.', () { + Get.back(); + }); + } + } else { + // Send WhatsApp message for non-Egyptian phone numbers + await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString()); + print('WhatsApp message sent to non-Egyptian phone number: $phoneNumber'); + } + + isSent = true; + remainingTime = 300; // Reset to 5 minutes + startTimer(); + } + verifySMSCode() async { // if (formKey3.currentState!.validate()) { if (isValidEgyptianPhoneNumber(phoneController.text)) { diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 8efc675..c642116 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -9,6 +9,7 @@ import 'package:SEFER/env/env.dart'; import '../../constant/api_key.dart'; import '../../print.dart'; +import '../../views/widgets/elevated_btn.dart'; import 'upload_image.dart'; class CRUD { @@ -71,6 +72,54 @@ class CRUD { } } + Future sendWhatsAppAuth(String to, String token) async { + var headers = { + 'Authorization': 'Bearer ${Env.whatsapp}', + 'Content-Type': 'application/json' + }; + var request = http.Request( + 'POST', + Uri.parse( + 'https://graph.facebook.com/v20.0/${Env.whatappID}/messages')); + request.body = json.encode({ + "messaging_product": "whatsapp", + "to": to, //"962798583052", + "type": "template", + "template": { + "name": "sefer1", + "language": {"code": "en"}, + "components": [ + { + "type": "body", + "parameters": [ + { + "type": "text", + "text": token, + } + ] + } + ] + } + }); + request.headers.addAll(headers); + + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + print(await response.stream.bytesToString()); + Get.defaultDialog( + title: 'You will receive a code in WhatsApp Messenger'.tr, + middleText: '', + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + })); + } else { + print(response.reasonPhrase); + } + } + Future getAgoraToken({ required String channelName, required String uid, diff --git a/lib/controller/functions/package_info.dart b/lib/controller/functions/package_info.dart index b8a0c7f..ca4933b 100644 --- a/lib/controller/functions/package_info.dart +++ b/lib/controller/functions/package_info.dart @@ -64,6 +64,12 @@ void showUpdateDialog(BuildContext context) { Navigator.of(context).pop(); }, ), + CupertinoDialogAction( + child: Text('Cancel'.tr), + onPressed: () async { + Navigator.of(context).pop(); + }, + ), ], ); }, diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 363e74d..deb6e0b 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -233,7 +233,7 @@ class MapPassengerController extends GetxController { late double totalPassengerSpeedDiscount = 0; late double totalPassengerBalashDiscount = 0; late double totalPassengerRaihGaiDiscount = 0; - late double totalPassengerMotoDelivery = 0; + late double totalPassengerScooter = 0; late double totalDriver = 0; late double averageDuration = 0; late double costDuration = 0; @@ -3269,6 +3269,8 @@ class MapPassengerController extends GetxController { double totalPassengerBalash = 0; double totalPassengerLady = 0; double totalPassengerRayehGai = 0; + double totalPassengerRayehGaiComfort = 0; + double totalPassengerRayehGaiBalash = 0; Future bottomSheet() async { if (data.isNotEmpty) { durationToAdd = Duration(seconds: durationToRide); @@ -3285,9 +3287,40 @@ class MapPassengerController extends GetxController { costDelivery, costBalash, costLady, - costRayehGai = 0; + costRayehGai, + costRayehGaiBalash, + costRayehGaiComfort = 0; update(); - if (currentTime.hour >= 22 && currentTime.hour < 5) { + if (startNameAddress.toLowerCase().contains('airport') || + endNameAddress.toLowerCase().contains('airport') || + startNameAddress.contains('مطار') || + startNameAddress.contains('المطار') || + endNameAddress.contains('مطار') || + endNameAddress.contains('المطار')) { + costComfort = + (distance * comfortPrice) + (costDuration * latePrice) + 20; + costSpeed = (distance * speedPrice) + (costDuration * latePrice) + 20; + costBalash = + (distance * (speedPrice - 1)) + (costDuration * latePrice) + 20; + costDelivery = + (distance * deliveryPrice) + (costDuration * latePrice) + 20; + costLady = + (distance * comfortPrice + 2) + (costDuration * latePrice) + 20; + costRayehGai = (distance * 2 * speedPrice) - + ((distance * 1 * speedPrice) * .4) + + costDuration * 2 * latePrice + + 20; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2 * latePrice + + 20; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2 * latePrice + + 20; + + update(); + } else if (currentTime.hour >= 21 && currentTime.hour < 0) { // costDistance = distance * latePrice; costComfort = (distance * comfortPrice) + costDuration * latePrice; costSpeed = (distance * speedPrice) + costDuration * latePrice; @@ -3297,9 +3330,65 @@ class MapPassengerController extends GetxController { costRayehGai = (distance * 2 * speedPrice) - ((distance * 1 * speedPrice) * .4) + costDuration * 2 * latePrice; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2 * latePrice; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2 * latePrice; update(); - } else if (currentTime.hour >= 13 && currentTime.hour <= 16) { + } else if (currentTime.hour >= 1 && currentTime.hour < 5) { + // costDistance = distance * latePrice; + if (startNameAddress.contains('club') || + startNameAddress.contains('nightclub') || + startNameAddress.contains('ديسكو') || + startNameAddress.contains('ملهى ليلي') || + startNameAddress.contains('Night club')) { + // Your code here + costComfort = + (distance * comfortPrice) + costDuration * (latePrice + .5) * 2; + costSpeed = + (distance * speedPrice) + costDuration * (latePrice + .5) * 2; + costBalash = (distance * (speedPrice - 1)) + + costDuration * (latePrice + .5) * 2; + costDelivery = + (distance * deliveryPrice) + costDuration * (latePrice + .5) * 2; + costLady = (distance * comfortPrice + 2) + + costDuration * (latePrice + .5) * 2; + costRayehGai = (distance * 2 * speedPrice) - + ((distance * 1 * speedPrice) * .4) + + costDuration * 2 * (latePrice + .5) * 2; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2 * (latePrice + .5) * 2; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2 * (latePrice + .5) * 2; + + update(); + } + costComfort = + (distance * comfortPrice) + costDuration * (latePrice + .5); + costSpeed = (distance * speedPrice) + costDuration * (latePrice + .5); + costBalash = + (distance * (speedPrice - 1)) + costDuration * (latePrice + .5); + costDelivery = + (distance * deliveryPrice) + costDuration * (latePrice + .5); + costLady = + (distance * comfortPrice + 2) + costDuration * (latePrice + .5); + costRayehGai = (distance * 2 * speedPrice) - + ((distance * 1 * speedPrice) * .4) + + costDuration * 2 * latePrice; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2 * latePrice; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2 * latePrice; + + update(); + } else if (currentTime.hour >= 14 && currentTime.hour <= 17) { // if (averageDuration > 2.5) { // costDistance = distance * heavyPrice; costComfort = (distance * comfortPrice) + costDuration * heavyPrice; @@ -3310,6 +3399,12 @@ class MapPassengerController extends GetxController { costRayehGai = (distance * 2 * speedPrice) - ((distance * 1 * speedPrice) * .4) + costDuration * 2 * heavyPrice; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2 * heavyPrice; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2 * heavyPrice; update(); // } / @@ -3323,6 +3418,12 @@ class MapPassengerController extends GetxController { costRayehGai = (distance * 2 * speedPrice) - ((distance * 1 * speedPrice) * .4) + costDuration * 2; + costRayehGaiComfort = (distance * 2 * comfortPrice) - + ((distance * 1 * comfortPrice) * .4) + + costDuration * 2; + costRayehGaiBalash = (distance * 2 * (speedPrice - 1)) - + ((distance * 1 * (speedPrice - 1)) * .4) + + costDuration * 2; update(); } @@ -3338,6 +3439,12 @@ class MapPassengerController extends GetxController { (costBalash + (costBalash * kazan / 100)).ceilToDouble(); totalPassengerRayehGai = (costRayehGai + (costRayehGai * kazan / 100)).ceilToDouble(); + totalPassengerRayehGaiComfort = + (costRayehGaiComfort + (costRayehGaiComfort * kazan / 100)) + .ceilToDouble(); + totalPassengerRayehGaiBalash = + (costRayehGaiBalash + (costRayehGaiBalash * kazan / 100)) + .ceilToDouble(); totalPassengerComfortDiscount = totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100; totalPassengerLadyDiscount = @@ -3348,7 +3455,7 @@ class MapPassengerController extends GetxController { totalPassengerBalash + totalPassengerBalash * (kazan) / 100; totalPassengerRaihGaiDiscount = totalPassengerRayehGai + totalPassengerRayehGai * (kazan) / 100; - totalPassengerMotoDelivery = + totalPassengerScooter = (costDelivery + (costDelivery * kazan / 100)).ceilToDouble(); totalPassengerComfort = totalPassengerComfortDiscount - (totalPassengerComfortDiscount * kazan / 100); @@ -3369,7 +3476,7 @@ class MapPassengerController extends GetxController { totalPassengerBalash = 20; totalPassengerComfort = 30; totalPassengerLady = 30; - totalPassengerMotoDelivery = 18; + totalPassengerScooter = 18; } else { totalPassenger = totalCostPassenger; update(); @@ -3383,7 +3490,9 @@ class MapPassengerController extends GetxController { (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); totalPassengerBalash = totalPassengerBalash + (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerMotoDelivery = totalPassengerMotoDelivery + + totalPassengerScooter = totalPassengerScooter + + (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); + totalPassengerRayehGai = totalPassengerScooter + (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); update(); } @@ -3620,7 +3729,7 @@ class MapPassengerController extends GetxController { addCustomStepIcon(); addCustomStartIcon(); addCustomEndIcon(); - await getLocation(); + getLocation(); // await addToken(); getKazanPercent(); diff --git a/lib/controller/local/phone_intel/countries.dart b/lib/controller/local/phone_intel/countries.dart new file mode 100644 index 0000000..13e4bab --- /dev/null +++ b/lib/controller/local/phone_intel/countries.dart @@ -0,0 +1,7574 @@ +// see: https://en.wikipedia.org/wiki/List_of_country_calling_codes +// for list of country/calling codes + +const List countries = [ + Country( + name: "Afghanistan", + nameTranslations: { + "sk": "Afganistan", + "se": "Afghanistan", + "pl": "Afganistan", + "no": "Afghanistan", + "ja": "アフガニスタン", + "it": "Afghanistan", + "zh": "阿富汗", + "nl": "Afghanistan", + "de": "Afghanistan", + "fr": "Afghanistan", + "es": "Afganistán", + "en": "Afghanistan", + "pt_BR": "Afeganistão", + "sr-Cyrl": "Авганистан", + "sr-Latn": "Avganistan", + "zh_TW": "阿富汗", + "tr": "Afganistan", + "ro": "Afganistan", + "ar": "أفغانستان", + "fa": "افغانستان", + "yue": "阿富汗" + }, + flag: "🇦🇫", + code: "AF", + dialCode: "93", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Åland Islands", + nameTranslations: { + "sk": "Alandy", + "se": "Ålánda", + "pl": "Wyspy Alandzkie", + "no": "Åland", + "ja": "オーランド諸島", + "it": "Isole Åland", + "zh": "奥兰群岛", + "nl": "Åland", + "de": "Ålandinseln", + "fr": "Îles Åland", + "es": "Islas Åland", + "en": "Åland Islands", + "pt_BR": "Ilhas Aland", + "sr-Cyrl": "Аландска Острва", + "sr-Latn": "Alandska Ostrva", + "zh_TW": "奧蘭群島", + "tr": "Åland", + "ro": "Insulele Åland", + "ar": "جزر أولاند", + "fa": "جزیره اولاند", + "yue": "奧蘭群島" + }, + flag: "🇦🇽", + code: "AX", + dialCode: "358", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Albania", + nameTranslations: { + "sk": "Albánsko", + "se": "Albánia", + "pl": "Albania", + "no": "Albania", + "ja": "アルバニア", + "it": "Albania", + "zh": "阿尔巴尼亚", + "nl": "Albanië", + "de": "Albanien", + "fr": "Albanie", + "es": "Albania", + "en": "Albania", + "pt_BR": "Albânia", + "sr-Cyrl": "Албанија", + "sr-Latn": "Albanija", + "zh_TW": "阿爾巴尼亞", + "tr": "Arnavutluk", + "ro": "Albania", + "ar": "ألبانيا", + "fa": "آلبانی", + "yue": "阿爾巴尼亞" + }, + flag: "🇦🇱", + code: "AL", + dialCode: "355", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Algeria", + nameTranslations: { + "sk": "Alžírsko", + "se": "Algeria", + "pl": "Algieria", + "no": "Algerie", + "ja": "アルジェリア", + "it": "Algeria", + "zh": "阿尔及利亚", + "nl": "Algerije", + "de": "Algerien", + "fr": "Algérie", + "es": "Argelia", + "en": "Algeria", + "pt_BR": "Argélia", + "sr-Cyrl": "Аргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿爾及利亞", + "tr": "Cezayir", + "ro": "Algeria", + "ar": "الجزائر", + "fa": "الجزیره", + "yue": "阿爾及利亞" + }, + flag: "🇩🇿", + code: "DZ", + dialCode: "213", + minLength: 9, + maxLength: 9, + ), + Country( + name: "American Samoa", + nameTranslations: { + "sk": "Americká Samoa", + "se": "Amerihká Samoa", + "pl": "Samoa Amerykańskie", + "no": "Amerikansk Samoa", + "ja": "米領サモア", + "it": "Samoa americane", + "zh": "美属萨摩亚", + "nl": "Amerikaans-Samoa", + "de": "Amerikanisch-Samoa", + "fr": "Samoa américaines", + "es": "Samoa Americana", + "en": "American Samoa", + "pt_BR": "Samoa Americana", + "sr-Cyrl": "Америчка Самоа", + "sr-Latn": "Američka Samoa", + "zh_TW": "美屬薩摩亞", + "tr": "Amerikan Samoası", + "ro": "Samoa Americană", + "ar": "ساموا الأمريكية", + "fa": "ساموا آمریکا", + "yue": "美屬薩摩亞" + }, + flag: "🇦🇸", + code: "AS", + dialCode: "1684", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Andorra", + nameTranslations: { + "sk": "Andorra", + "se": "Andorra", + "pl": "Andora", + "no": "Andorra", + "ja": "アンドラ", + "it": "Andorra", + "zh": "安道尔", + "nl": "Andorra", + "de": "Andorra", + "fr": "Andorre", + "es": "Andorra", + "en": "Andorra", + "pt_BR": "Andorra", + "sr-Cyrl": "Андора", + "sr-Latn": "Andora", + "zh_TW": "安道爾", + "tr": "Andora", + "ro": "Andorra", + "ar": "أندورا", + "fa": "آندورا", + "yue": "安道爾" + }, + flag: "🇦🇩", + code: "AD", + dialCode: "376", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Angola", + nameTranslations: { + "sk": "Angola", + "se": "Angola", + "pl": "Angola", + "no": "Angola", + "ja": "アンゴラ", + "it": "Angola", + "zh": "安哥拉", + "nl": "Angola", + "de": "Angola", + "fr": "Angola", + "es": "Angola", + "en": "Angola", + "pt_BR": "Angola", + "sr-Cyrl": "Ангола", + "sr-Latn": "Angola", + "zh_TW": "安哥拉", + "tr": "Angola", + "ro": "Angola", + "ar": "أنغولا", + "fa": "آنگولا", + "yue": "安哥拉" + }, + flag: "🇦🇴", + code: "AO", + dialCode: "244", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Anguilla", + nameTranslations: { + "sk": "Anguilla", + "se": "Anguilla", + "pl": "Anguilla", + "no": "Anguilla", + "ja": "アンギラ", + "it": "Anguilla", + "zh": "安圭拉", + "nl": "Anguilla", + "de": "Anguilla", + "fr": "Anguilla", + "es": "Anguila", + "en": "Anguilla", + "pt_BR": "Anguilla", + "sr-Cyrl": "Ангвила", + "sr-Latn": "Angvila", + "zh_TW": "安圭拉", + "tr": "Anguilla", + "ro": "Anguilla", + "ar": "أنغويلا", + "fa": "آنگولیا", + "yue": "安圭拉" + }, + flag: "🇦🇮", + code: "AI", + dialCode: "1264", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Antarctica", + nameTranslations: { + "sk": "Antarktída", + "se": "Antárktis", + "pl": "Antarktyda", + "no": "Antarktis", + "ja": "南極", + "it": "Antartide", + "zh": "南极洲", + "nl": "Antarctica", + "de": "Antarktis", + "fr": "Antarctique", + "es": "Antártida", + "en": "Antarctica", + "pt_BR": "Antártica", + "sr-Cyrl": "Антарктик", + "sr-Latn": "Antarktik", + "zh_TW": "南極", + "tr": "Antarktika", + "ro": "Antarctica", + "ar": "القارة القطبية الجنوبية", + "fa": "قطب جنوب", + "yue": "南极洲" + }, + flag: "🇦🇶", + code: "AQ", + dialCode: "672", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Antigua and Barbuda", + nameTranslations: { + "sk": "Antigua a Barbuda", + "se": "Antigua ja Barbuda", + "pl": "Antigua i Barbuda", + "no": "Antigua og Barbuda", + "ja": "アンティグア・バーブーダ", + "it": "Antigua e Barbuda", + "zh": "安提瓜和巴布达", + "nl": "Antigua en Barbuda", + "de": "Antigua und Barbuda", + "fr": "Antigua-et-Barbuda", + "es": "Antigua y Barbuda", + "en": "Antigua & Barbuda", + "pt_BR": "Antigua e Barbuda", + "sr-Cyrl": "Антигва и Барбуда", + "sr-Latn": "Antigva i Barbuda", + "zh_TW": "安提瓜和巴布達", + "tr": "Antigua ve Barbuda", + "ro": "Antigua şi Barbuda", + "ar": "أنتيغوا وباربودا", + "fa": "آنتیگوآ و باربودا", + "yue": "安提瓜同巴布达" + }, + flag: "🇦🇬", + code: "AG", + dialCode: "1268", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Argentina", + nameTranslations: { + "sk": "Argentína", + "se": "Argentina", + "pl": "Argentyna", + "no": "Argentina", + "ja": "アルゼンチン", + "it": "Argentina", + "zh": "阿根廷", + "nl": "Argentinië", + "de": "Argentinien", + "fr": "Argentine", + "es": "Argentina", + "en": "Argentina", + "pt_BR": "Argentina", + "sr-Cyrl": "Аргентина", + "sr-Latn": "Argentina", + "zh_TW": "阿根廷", + "tr": "Arjantin", + "ro": "Argentina", + "ar": "الأرجنتين", + "fa": "آرژانتین", + "yue": "阿根廷" + }, + flag: "🇦🇷", + code: "AR", + dialCode: "54", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Armenia", + nameTranslations: { + "sk": "Arménsko", + "se": "Armenia", + "pl": "Armenia", + "no": "Armenia", + "ja": "アルメニア", + "it": "Armenia", + "zh": "亚美尼亚", + "nl": "Armenië", + "de": "Armenien", + "fr": "Arménie", + "es": "Armenia", + "en": "Armenia", + "pt_BR": "Armênia", + "sr-Cyrl": "Јерменија", + "sr-Latn": "Jermenija", + "zh_TW": "亞美尼亞", + "tr": "Ermenistan", + "ro": "Armenia", + "ar": "أرمينيا", + "fa": "ارمنستان", + "yue": "亞美尼亞" + }, + flag: "🇦🇲", + code: "AM", + dialCode: "374", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Aruba", + nameTranslations: { + "sk": "Aruba", + "se": "Aruba", + "pl": "Aruba", + "no": "Aruba", + "ja": "アルバ", + "it": "Aruba", + "zh": "阿鲁巴", + "nl": "Aruba", + "de": "Aruba", + "fr": "Aruba", + "es": "Aruba", + "en": "Aruba", + "pt_BR": "Aruba", + "sr-Cyrl": "Аруба", + "sr-Latn": "Aruba", + "zh_TW": "阿魯巴", + "tr": "Aruba", + "ro": "Aruba", + "ar": "أروبا", + "fa": "آروبا", + "yue": "阿魯巴島" + }, + flag: "🇦🇼", + code: "AW", + dialCode: "297", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Australia", + nameTranslations: { + "sk": "Austrália", + "se": "Austrália", + "pl": "Australia", + "no": "Australia", + "ja": "オーストラリア", + "it": "Australia", + "zh": "澳大利亚", + "nl": "Australië", + "de": "Australien", + "fr": "Australie", + "es": "Australia", + "en": "Australia", + "pt_BR": "Austrália", + "sr-Cyrl": "Аустралија", + "sr-Latn": "Australija", + "zh_TW": "澳州", + "tr": "Avustralya", + "ro": "Australia", + "ar": "أستراليا", + "fa": "استرالیا", + "yue": "澳洲" + }, + flag: "🇦🇺", + code: "AU", + dialCode: "61", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Austria", + nameTranslations: { + "sk": "Rakúsko", + "se": "Nuortariika", + "pl": "Austria", + "no": "Østerrike", + "ja": "オーストリア", + "it": "Austria", + "zh": "奥地利", + "nl": "Oostenrijk", + "de": "Österreich", + "fr": "Autriche", + "es": "Austria", + "en": "Austria", + "pt_BR": "Áustria", + "sr-Cyrl": "Аустрија", + "sr-Latn": "Austrija", + "zh_TW": "奥地利", + "tr": "Avusturya", + "ro": "Austria", + "ar": "النمسا", + "fa": "اتریش", + "yue": "奧地利" + }, + flag: "🇦🇹", + code: "AT", + dialCode: "43", + minLength: 13, + maxLength: 13, + ), + Country( + name: "Azerbaijan", + nameTranslations: { + "sk": "Azerbajdžan", + "se": "Aserbaižan", + "pl": "Azerbejdżan", + "no": "Aserbajdsjan", + "ja": "アゼルバイジャン", + "it": "Azerbaigian", + "zh": "阿塞拜疆", + "nl": "Azerbeidzjan", + "de": "Aserbaidschan", + "fr": "Azerbaïdjan", + "es": "Azerbaiyán", + "en": "Azerbaijan", + "pt_BR": "Azerbaijão", + "sr-Cyrl": "Азербејџан", + "sr-Latn": "Azerbejdžan", + "zh_TW": "亞塞拜然", + "tr": "Azerbaycan", + "ro": "Azerbaidjan", + "ar": "أذربيجان", + "fa": "آذربایجان", + "yue": "阿塞拜疆" + }, + flag: "🇦🇿", + code: "AZ", + dialCode: "994", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Bahamas", + nameTranslations: { + "sk": "Bahamy", + "se": "Bahamas", + "pl": "Bahamy", + "no": "Bahamas", + "ja": "バハマ", + "it": "Bahamas", + "zh": "巴哈马", + "nl": "Bahama's", + "de": "Bahamas", + "fr": "Bahamas", + "es": "Bahamas", + "en": "Bahamas", + "pt_BR": "Bahamas", + "sr-Cyrl": "Бахаме", + "sr-Latn": "Bahame", + "zh_TW": "巴哈馬", + "tr": "Bahama", + "ro": "Bahamas", + "ar": "باهاماس", + "fa": "باهاماس", + "yue": "巴哈馬" + }, + flag: "🇧🇸", + code: "BS", + dialCode: "1242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bahrain", + nameTranslations: { + "sk": "Bahrajn", + "se": "Bahrain", + "pl": "Bahrajn", + "no": "Bahrain", + "ja": "バーレーン", + "it": "Bahrein", + "zh": "巴林", + "nl": "Bahrein", + "de": "Bahrain", + "fr": "Bahreïn", + "es": "Baréin", + "en": "Bahrain", + "pt_BR": "Bahrain", + "sr-Cyrl": "Бахреин", + "sr-Latn": "Bahrein", + "zh_TW": "巴林", + "tr": "Bahreyn", + "ro": "Bahrein", + "ar": "البحرين", + "fa": "بحرین", + "yue": "巴林" + }, + flag: "🇧🇭", + code: "BH", + dialCode: "973", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bangladesh", + nameTranslations: { + "sk": "Bangladéš", + "se": "Bangladesh", + "pl": "Bangladesz", + "no": "Bangladesh", + "ja": "バングラデシュ", + "it": "Bangladesh", + "zh": "孟加拉国", + "nl": "Bangladesh", + "de": "Bangladesch", + "fr": "Bangladesh", + "es": "Bangladés", + "en": "Bangladesh", + "pt_BR": "Bangladesh", + "sr-Cyrl": "Бангладеш", + "sr-Latn": "Bangladeš", + "zh_TW": "孟加拉", + "tr": "Bangladeş", + "ro": "Bangladesh", + "ar": "بنغلاديش", + "fa": "بنگلادش", + "yue": "孟加拉囯" + }, + flag: "🇧🇩", + code: "BD", + dialCode: "880", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Barbados", + nameTranslations: { + "sk": "Barbados", + "se": "Barbados", + "pl": "Barbados", + "no": "Barbados", + "ja": "バルバドス", + "it": "Barbados", + "zh": "巴巴多斯", + "nl": "Barbados", + "de": "Barbados", + "fr": "Barbade", + "es": "Barbados", + "en": "Barbados", + "pt_BR": "Barbados", + "sr-Cyrl": "Барбадос", + "sr-Latn": "Barbados", + "zh_TW": "巴巴多斯", + "tr": "Barbados", + "ro": "Barbados", + "ar": "باربادوس", + "fa": "باربادوس", + "yue": "巴巴多斯" + }, + flag: "🇧🇧", + code: "BB", + dialCode: "1246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Belarus", + nameTranslations: { + "sk": "Bielorusko", + "se": "Vilges-Ruošša", + "pl": "Białoruś", + "no": "Hviterussland", + "ja": "ベラルーシ", + "it": "Bielorussia", + "zh": "白俄罗斯", + "nl": "Belarus", + "de": "Belarus", + "fr": "Biélorussie", + "es": "Bielorrusia", + "en": "Belarus", + "pt_BR": "Bielo-Rússia", + "sr-Cyrl": "Белорусија", + "sr-Latn": "Belorusija", + "zh_TW": "白俄羅斯", + "tr": "Belarus", + "ro": "Belarus", + "ar": "بيلاروس", + "fa": "بلاروس", + "yue": "白俄羅斯" + }, + flag: "🇧🇾", + code: "BY", + dialCode: "375", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Belgium", + nameTranslations: { + "sk": "Belgicko", + "se": "Belgia", + "pl": "Belgia", + "no": "Belgia", + "ja": "ベルギー", + "it": "Belgio", + "zh": "比利时", + "nl": "België", + "de": "Belgien", + "fr": "Belgique", + "es": "Bélgica", + "en": "Belgium", + "pt_BR": "Bélgica", + "sr-Cyrl": "Белгија", + "sr-Latn": "Belgija", + "zh_TW": "比利時", + "tr": "Belçika", + "ro": "Belgia", + "ar": "بلجيكا", + "fa": "بلژیک", + "yue": "比利時" + }, + flag: "🇧🇪", + code: "BE", + dialCode: "32", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Belize", + nameTranslations: { + "sk": "Belize", + "se": "Belize", + "pl": "Belize", + "no": "Belize", + "ja": "ベリーズ", + "it": "Belize", + "zh": "伯利兹", + "nl": "Belize", + "de": "Belize", + "fr": "Belize", + "es": "Belice", + "en": "Belize", + "pt_BR": "Belize", + "sr-Cyrl": "Белизе", + "sr-Latn": "Belize", + "zh_TW": "伯利茲", + "tr": "Belize", + "ro": "Belize", + "ar": "بليز", + "fa": "بليز", + "yue": "伯利茲" + }, + flag: "🇧🇿", + code: "BZ", + dialCode: "501", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Benin", + nameTranslations: { + "sk": "Benin", + "se": "Benin", + "pl": "Benin", + "no": "Benin", + "ja": "ベナン", + "it": "Benin", + "zh": "贝宁", + "nl": "Benin", + "de": "Benin", + "fr": "Bénin", + "es": "Benín", + "en": "Benin", + "pt_BR": "Benin", + "sr-Cyrl": "Бенин", + "sr-Latn": "Benin", + "zh_TW": "貝南", + "tr": "Benin", + "ro": "Benin", + "ar": "بنين", + "fa": "بنين", + "yue": "貝寧" + }, + flag: "🇧🇯", + code: "BJ", + dialCode: "229", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bermuda", + nameTranslations: { + "sk": "Bermudy", + "se": "Bermuda", + "pl": "Bermudy", + "no": "Bermuda", + "ja": "バミューダ", + "it": "Bermuda", + "zh": "百慕大", + "nl": "Bermuda", + "de": "Bermuda", + "fr": "Bermudes", + "es": "Bermudas", + "en": "Bermuda", + "pt_BR": "Bermudas", + "sr-Cyrl": "Бермуда", + "sr-Latn": "Bermuda", + "zh_TW": "百慕達", + "tr": "Bermuda", + "ro": "Insulele Bermude", + "ar": "برمودا", + "fa": "برمودا", + "yue": "百慕大" + }, + flag: "🇧🇲", + code: "BM", + dialCode: "1441", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bhutan", + nameTranslations: { + "sk": "Bhután", + "se": "Bhutan", + "pl": "Bhutan", + "no": "Bhutan", + "ja": "ブータン", + "it": "Bhutan", + "zh": "不丹", + "nl": "Bhutan", + "de": "Bhutan", + "fr": "Bhoutan", + "es": "Bután", + "en": "Bhutan", + "pt_BR": "Butão", + "sr-Cyrl": "Бутан", + "sr-Latn": "Butan", + "zh_TW": "不丹", + "tr": "Bhutan", + "ro": "Bhutan", + "ar": "بوتان", + "fa": "بوتان", + "yue": "不丹" + }, + flag: "🇧🇹", + code: "BT", + dialCode: "975", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bolivia, Plurinational State of bolivia", + nameTranslations: { + "sk": "Bolívia", + "se": "Bolivia", + "pl": "Boliwia", + "no": "Bolivia", + "ja": "ボリビア", + "it": "Bolivia", + "zh": "玻利维亚", + "nl": "Bolivia", + "de": "Bolivien", + "fr": "Bolivie", + "es": "Bolivia", + "en": "Bolivia", + "pt_BR": "Bolívia", + "sr-Cyrl": "Боливија", + "sr-Latn": "Bolivija", + "zh_TW": "玻利維亞", + "tr": "Bolivya", + "ro": "Bolivia", + "ar": "بوليفيا", + "fa": "بولیوی", + "yue": "玻利維亞(多民族國家)" + }, + flag: "🇧🇴", + code: "BO", + dialCode: "591", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bosnia and Herzegovina", + nameTranslations: { + "sk": "Bosna a Hercegovina", + "se": "Bosnia-Hercegovina", + "pl": "Bośnia i Hercegowina", + "no": "Bosnia-Hercegovina", + "ja": "ボスニア・ヘルツェゴビナ", + "it": "Bosnia ed Erzegovina", + "zh": "波斯尼亚和黑塞哥维那", + "nl": "Bosnië en Herzegovina", + "de": "Bosnien und Herzegowina", + "fr": "Bosnie-Herzégovine", + "es": "Bosnia y Herzegovina", + "en": "Bosnia & Herzegovina", + "pt_BR": "Bósnia e Herzegovina", + "sr-Cyrl": "Босна и Херцеговина", + "sr-Latn": "Bosna i Hercegovina", + "zh_TW": "波士尼亞和黑塞哥維那", + "tr": "Bosna Hersek", + "ro": "Bosnia și Herțegovina", + "ar": "البوسنة والهرسك", + "fa": "بوسنی و هرزگوین", + "yue": "波斯尼亞黑塞哥維那" + }, + flag: "🇧🇦", + code: "BA", + dialCode: "387", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Botswana", + nameTranslations: { + "sk": "Botswana", + "se": "Botswana", + "pl": "Botswana", + "no": "Botswana", + "ja": "ボツワナ", + "it": "Botswana", + "zh": "博茨瓦纳", + "nl": "Botswana", + "de": "Botsuana", + "fr": "Botswana", + "es": "Botsuana", + "en": "Botswana", + "pt_BR": "Botswana", + "sr-Cyrl": "Боцвана", + "sr-Latn": "Bocvana", + "zh_TW": "博茨瓦納", + "tr": "Botsvana", + "ro": "Botswana", + "ar": "بوتسوانا", + "fa": "بوتسوانا", + "yue": "博茨瓦納" + }, + flag: "🇧🇼", + code: "BW", + dialCode: "267", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Bouvet Island", + nameTranslations: { + "sk": "Bouvetov ostrov", + "se": "Bouvet-sullot", + "pl": "Wyspa Bouveta", + "no": "Bouvetøya", + "ja": "ブーベ島", + "it": "Isola Bouvet", + "zh": "布韦岛", + "nl": "Bouveteiland", + "de": "Bouvetinsel", + "fr": "Île Bouvet", + "es": "Isla Bouvet", + "en": "Bouvet Island", + "pt_BR": "Ilha Bouvet", + "sr-Cyrl": "Острво Буве", + "sr-Latn": "Ostrvo Buve", + "zh_TW": "布維特島", + "tr": "Bouvet Adası", + "ro": "Insula Bouvet", + "ar": "جزيرة بوفيه", + "fa": "جزیره بووه", + "yue": "布维特岛" + }, + flag: "🇧🇻", + code: "BV", + dialCode: "47", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Brazil", + nameTranslations: { + "sk": "Brazília", + "se": "Brasil", + "pl": "Brazylia", + "no": "Brasil", + "ja": "ブラジル", + "it": "Brasile", + "zh": "巴西", + "nl": "Brazilië", + "de": "Brasilien", + "fr": "Brésil", + "es": "Brasil", + "en": "Brazil", + "pt_BR": "Brasil", + "sr-Cyrl": "Бразил", + "sr-Latn": "Brazil", + "zh_TW": "巴西", + "tr": "Brezilya", + "ro": "Brazilia", + "ar": "البرازيل", + "fa": "برزیل", + "yue": "巴西" + }, + flag: "🇧🇷", + code: "BR", + dialCode: "55", + minLength: 11, + maxLength: 11, + ), + Country( + name: "British Indian Ocean Territory", + nameTranslations: { + "sk": "Britské indickooceánske územie", + "se": "British Indian Ocean Territory", + "pl": "Brytyjskie Terytorium Oceanu Indyjskiego", + "no": "Det britiske territoriet i Indiahavet", + "ja": "英領インド洋地域", + "it": "Territorio britannico dell'Oceano Indiano", + "zh": "英属印度洋领地", + "nl": "Brits Indische Oceaanterritorium", + "de": "Britisches Territorium im Indischen Ozean", + "fr": "Territoire britannique de l'océan Indien", + "es": "Territorio Británico del Océano Índico", + "en": "British Indian Ocean Territory", + "pt_BR": "Território Britânico do Oceano Índico", + "sr-Cyrl": "Британска територија Индијског океана", + "sr-Latn": "Britanska teritorija Indijskog okeana", + "zh_TW": "英屬印度洋領地", + "tr": "Britanya Hint Okyanusu Toprakları", + "ro": "Teritoriul Britanic din Oceanul Indian", + "ar": "إقليم المحيط الهندي البريطاني", + "fa": "سرزمین دریایی هند - بریتانیا", + "yue": "英屬印度洋領土" + }, + flag: "🇮🇴", + code: "IO", + dialCode: "246", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Brunei Darussalam", + nameTranslations: { + "sk": "Brunej", + "se": "Brunei", + "pl": "Brunei", + "no": "Brunei", + "ja": "ブルネイ", + "it": "Brunei", + "zh": "文莱", + "nl": "Brunei", + "de": "Brunei Darussalam", + "fr": "Brunéi Darussalam", + "es": "Brunéi", + "en": "Brunei", + "pt_BR": "Brunei", + "sr-Cyrl": "Брунеј", + "sr-Latn": "Brunej", + "zh_TW": "汶萊", + "tr": "Bruney", + "ro": "Brunei", + "ar": "بروناي", + "fa": "برونئی", + "yue": "文萊達魯薩蘭國" + }, + flag: "🇧🇳", + code: "BN", + dialCode: "673", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Bulgaria", + nameTranslations: { + "sk": "Bulharsko", + "se": "Bulgária", + "pl": "Bułgaria", + "no": "Bulgaria", + "ja": "ブルガリア", + "it": "Bulgaria", + "zh": "保加利亚", + "nl": "Bulgarije", + "de": "Bulgarien", + "fr": "Bulgarie", + "es": "Bulgaria", + "en": "Bulgaria", + "pt_BR": "Bulgária", + "sr-Cyrl": "Бугарска", + "sr-Latn": "Bugarska", + "zh_TW": "保加利亞", + "tr": "Bulgaristan", + "ro": "Bulgaria", + "ar": "بلغاريا", + "fa": "بلغارستان", + "yue": "保加利亞" + }, + flag: "🇧🇬", + code: "BG", + dialCode: "359", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Burkina Faso", + nameTranslations: { + "sk": "Burkina Faso", + "se": "Burkina Faso", + "pl": "Burkina Faso", + "no": "Burkina Faso", + "ja": "ブルキナファソ", + "it": "Burkina Faso", + "zh": "布基纳法索", + "nl": "Burkina Faso", + "de": "Burkina Faso", + "fr": "Burkina Faso", + "es": "Burkina Faso", + "en": "Burkina Faso", + "pt_BR": "Burkina Faso", + "sr-Cyrl": "Буркина Фасо", + "sr-Latn": "Burkina Faso", + "zh_TW": "布吉納法索", + "tr": "Burkina Faso", + "ro": "Burkina Faso", + "ar": "بوركينا فاسو", + "fa": "بورکینافاسو", + "yue": "布基納法索" + }, + flag: "🇧🇫", + code: "BF", + dialCode: "226", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Burundi", + nameTranslations: { + "sk": "Burundi", + "se": "Burundi", + "pl": "Burundi", + "no": "Burundi", + "ja": "ブルンジ", + "it": "Burundi", + "zh": "布隆迪", + "nl": "Burundi", + "de": "Burundi", + "fr": "Burundi", + "es": "Burundi", + "en": "Burundi", + "pt_BR": "Burundi", + "sr-Cyrl": "Бурунди", + "sr-Latn": "Burundi", + "zh_TW": "蒲隆地", + "tr": "Burundi", + "ro": "Burundi", + "ar": "بوروندي", + "fa": "بوروندی", + "yue": "蒲隆地" + }, + flag: "🇧🇮", + code: "BI", + dialCode: "257", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cambodia", + nameTranslations: { + "sk": "Kambodža", + "se": "Kambodža", + "pl": "Kambodża", + "no": "Kambodsja", + "ja": "カンボジア", + "it": "Cambogia", + "zh": "柬埔寨", + "nl": "Cambodja", + "de": "Kambodscha", + "fr": "Cambodge", + "es": "Camboya", + "en": "Cambodia", + "pt_BR": "Camboja", + "sr-Cyrl": "Камбоџа", + "sr-Latn": "Kambodža", + "zh_TW": "柬埔寨", + "tr": "Kamboçya", + "ro": "Cambogia", + "ar": "كمبوديا", + "fa": "کامبوج", + "yue": "柬埔寨" + }, + flag: "🇰🇭", + code: "KH", + dialCode: "855", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cameroon", + nameTranslations: { + "sk": "Kamerun", + "se": "Kamerun", + "pl": "Kamerun", + "no": "Kamerun", + "ja": "カメルーン", + "it": "Camerun", + "zh": "喀麦隆", + "nl": "Kameroen", + "de": "Kamerun", + "fr": "Cameroun", + "es": "Camerún", + "en": "Cameroon", + "pt_BR": "Camarões", + "sr-Cyrl": "Камерун", + "sr-Latn": "Kamerun", + "zh_TW": "喀麥隆", + "tr": "Kamerun", + "ro": "Camerun", + "ar": "الكاميرون", + "fa": "کامرون", + "yue": "喀 麥 隆" + }, + flag: "🇨🇲", + code: "CM", + dialCode: "237", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Canada", + nameTranslations: { + "sk": "Kanada", + "se": "Kanáda", + "pl": "Kanada", + "no": "Canada", + "ja": "カナダ", + "it": "Canada", + "zh": "加拿大", + "nl": "Canada", + "de": "Kanada", + "fr": "Canada", + "es": "Canadá", + "en": "Canada", + "pt_BR": "Canadá", + "sr-Cyrl": "Канада", + "sr-Latn": "Kanada", + "zh_TW": "加拿大", + "tr": "Kanada", + "ro": "Canada", + "ar": "كندا", + "fa": "کانادا", + "yue": "加拿大" + }, + flag: "🇨🇦", + code: "CA", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Cayman Islands", + nameTranslations: { + "sk": "Kajmanie ostrovy", + "se": "Cayman-sullot", + "pl": "Kajmany", + "no": "Caymanøyene", + "ja": "ケイマン諸島", + "it": "Isole Cayman", + "zh": "开曼群岛", + "nl": "Kaaimaneilanden", + "de": "Kaimaninseln", + "fr": "Îles Caïmans", + "es": "Islas Caimán", + "en": "Cayman Islands", + "pt_BR": "Ilhas Cayman", + "sr-Cyrl": "Кајманска Острва", + "sr-Latn": "Kajmanska Ostrva", + "zh_TW": "開曼群島", + "tr": "Cayman Adaları", + "ro": "Insulele Cayman", + "ar": "جزر كايمان", + "fa": "جزایر کیمن", + "yue": "開曼群島" + }, + flag: "🇰🇾", + code: "KY", + dialCode: "345", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Central African Republic", + nameTranslations: { + "sk": "Stredoafrická republika", + "se": "Gaska-Afrihká dásseváldi", + "pl": "Republika Środkowoafrykańska", + "no": "Den sentralafrikanske republikk", + "ja": "中央アフリカ共和国", + "it": "Repubblica Centrafricana", + "zh": "中非共和国", + "nl": "Centraal-Afrikaanse Republiek", + "de": "Zentralafrikanische Republik", + "fr": "République centrafricaine", + "es": "República Centroafricana", + "en": "Central African Republic", + "pt_BR": "República Centro-Africana", + "sr-Cyrl": "Централноафричка Република", + "sr-Latn": "Centralnoafrička Republika", + "zh_TW": "中非共和國", + "tr": "Orta Afrika Cumhuriyeti", + "ro": "Republica Centrafricană", + "ar": "جمهورية أفريقيا الوسطى", + "fa": "جمهوری افریقای مرکزی", + "yue": "中非共和國" + }, + flag: "🇨🇫", + code: "CF", + dialCode: "236", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Chad", + nameTranslations: { + "sk": "Čad", + "se": "Tčad", + "pl": "Czad", + "no": "Tsjad", + "ja": "チャド", + "it": "Ciad", + "zh": "乍得", + "nl": "Tsjaad", + "de": "Tschad", + "fr": "Tchad", + "es": "Chad", + "en": "Chad", + "pt_BR": "Chade", + "sr-Cyrl": "Чад", + "sr-Latn": "Čad", + "zh_TW": "查德", + "tr": "Çad", + "ro": "Ciad", + "ar": "تشاد", + "fa": "چاد", + "yue": "乍得" + }, + flag: "🇹🇩", + code: "TD", + dialCode: "235", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Chile", + nameTranslations: { + "sk": "Čile", + "se": "Čiile", + "pl": "Chile", + "no": "Chile", + "ja": "チリ", + "it": "Cile", + "zh": "智利", + "nl": "Chili", + "de": "Chile", + "fr": "Chili", + "es": "Chile", + "en": "Chile", + "pt_BR": "Chile", + "sr-Cyrl": "Чиле", + "sr-Latn": "Čile", + "zh_TW": "智利", + "tr": "Şili", + "ro": "Chile", + "ar": "تشيلي", + "fa": "شیلی", + "yue": "智利" + }, + flag: "🇨🇱", + code: "CL", + dialCode: "56", + minLength: 9, + maxLength: 9, + ), + Country( + name: "China", + nameTranslations: { + "sk": "Čína", + "se": "Kiinná", + "pl": "Chiny", + "no": "Kina", + "ja": "中国", + "it": "Cina", + "zh": "中国", + "nl": "China", + "de": "China", + "fr": "Chine", + "es": "China", + "en": "China", + "pt_BR": "China", + "sr-Cyrl": "Кина", + "sr-Latn": "Kina", + "zh_TW": "中國", + "tr": "Çin", + "ro": "China", + "ar": "الصين", + "fa": "چین", + "yue": "中國" + }, + flag: "🇨🇳", + code: "CN", + dialCode: "86", + minLength: 11, + maxLength: 12, + ), + Country( + name: "Christmas Island", + nameTranslations: { + "sk": "Vianočný ostrov", + "se": "Juovllat-sullot", + "pl": "Wyspa Bożego Narodzenia", + "no": "Christmasøya", + "ja": "クリスマス島", + "it": "Isola Christmas", + "zh": "圣诞岛", + "nl": "Christmaseiland", + "de": "Weihnachtsinsel", + "fr": "Île Christmas", + "es": "Isla de Navidad", + "en": "Christmas Island", + "pt_BR": "Ilha do Natal", + "sr-Cyrl": "Ускршња Острва", + "sr-Latn": "Uskršnja Ostrva", + "zh_TW": "聖誕島", + "tr": "Christmas Adası", + "ro": "Insula Crăciunului", + "ar": "جزيرة عيد الميلاد", + "fa": "جزیره کریسمس", + "yue": "聖誕島" + }, + flag: "🇨🇽", + code: "CX", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Cocos (Keeling) Islands", + nameTranslations: { + "sk": "Kokosové ostrovy", + "se": "Cocos-sullot", + "pl": "Wyspy Kokosowe", + "no": "Kokosøyene", + "ja": "ココス(キーリング)諸島", + "it": "Isole Cocos (Keeling)", + "zh": "科科斯(基林)群岛", + "nl": "Cocoseilanden", + "de": "Kokosinseln", + "fr": "Îles Cocos", + "es": "Islas Cocos", + "en": "Cocos (Keeling) Islands", + "pt_BR": "Ilhas Cocos (Keeling)", + "sr-Cyrl": "Кокосова Острва", + "sr-Latn": "Kokosova Ostrva", + "zh_TW": "科科斯(基林)群島", + "tr": "Cocos (Keyling) Adaları", + "ro": "Insulele Cocos", + "ar": "جزر كوكوس", + "fa": "جزایر کوکوس", + "yue": "可可島(基林)群島" + }, + flag: "🇨🇨", + code: "CC", + dialCode: "61", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Colombia", + nameTranslations: { + "sk": "Kolumbia", + "se": "Kolombia", + "pl": "Kolumbia", + "no": "Colombia", + "ja": "コロンビア", + "it": "Colombia", + "zh": "哥伦比亚", + "nl": "Colombia", + "de": "Kolumbien", + "fr": "Colombie", + "es": "Colombia", + "en": "Colombia", + "pt_BR": "Colômbia", + "sr-Cyrl": "Колумбија", + "sr-Latn": "Kolumbija", + "zh_TW": "哥倫比亞", + "tr": "Kolombiya", + "ro": "Columbia", + "ar": "كولومبيا", + "fa": "کلمبیا", + "yue": "哥倫比亞" + }, + flag: "🇨🇴", + code: "CO", + dialCode: "57", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Comoros", + nameTranslations: { + "sk": "Komory", + "se": "Komoros", + "pl": "Komory", + "no": "Komorene", + "ja": "コモロ", + "it": "Comore", + "zh": "科摩罗", + "nl": "Comoren", + "de": "Komoren", + "fr": "Comores", + "es": "Comoras", + "en": "Comoros", + "pt_BR": "Comores", + "sr-Cyrl": "Комори", + "sr-Latn": "Komori", + "zh_TW": "科摩羅", + "tr": "Komor Adaları", + "ro": "Comore", + "ar": "جزر القمر", + "fa": "جزیره کومور", + "yue": "科摩羅" + }, + flag: "🇰🇲", + code: "KM", + dialCode: "269", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo", + nameTranslations: { + "sk": "Konžská republika", + "se": "Kongo-Brazzaville", + "pl": "Kongo", + "no": "Kongo-Brazzaville", + "ja": "コンゴ共和国(ブラザビル)", + "it": "Congo-Brazzaville", + "zh": "刚果(布)", + "nl": "Congo-Brazzaville", + "de": "Kongo-Brazzaville", + "fr": "Congo-Brazzaville", + "es": "Congo", + "en": "Congo - Brazzaville", + "pt_BR": "República do Congo", + "sr-Cyrl": "Република Конго", + "sr-Latn": "Republika Kongo", + "zh_TW": "剛果共和國(布拉柴維爾)", + "tr": "Kongo Cumhuriyeti", + "ro": "Republica Congo", + "ar": "جمهورية الكونغو", + "fa": "جمهوری کنگو", + "yue": "剛果(共和國)" + }, + flag: "🇨🇬", + code: "CG", + dialCode: "242", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Congo, The Democratic Republic of the Congo", + nameTranslations: { + "sk": "Konžská demokratická republika", + "se": "Kongo-Kinshasa", + "pl": "Demokratyczna Republika Konga", + "no": "Kongo-Kinshasa", + "ja": "コンゴ民主共和国(キンシャサ)", + "it": "Congo - Kinshasa", + "zh": "刚果(金)", + "nl": "Congo-Kinshasa", + "de": "Kongo-Kinshasa", + "fr": "Congo-Kinshasa", + "es": "República Democrática del Congo", + "en": "Congo - Kinshasa", + "pt_BR": "República Democrática do Congo", + "sr-Cyrl": "Демократска Република Конго", + "sr-Latn": "Demokratska Republika Kongo", + "zh_TW": "剛果民主共和國(金沙薩)", + "tr": "Kongo Demokratik Cumhuriyeti", + "ro": "Republica Democrată Congo", + "ar": "جمهورية الكونغو الديمقراطية", + "fa": "جمهوری دموکراتیک کنگو", + "yue": "剛果(金)" + }, + flag: "🇨🇩", + code: "CD", + dialCode: "243", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Cook Islands", + nameTranslations: { + "sk": "Cookove ostrovy", + "se": "Cook-sullot", + "pl": "Wyspy Cooka", + "no": "Cookøyene", + "ja": "クック諸島", + "it": "Isole Cook", + "zh": "库克群岛", + "nl": "Cookeilanden", + "de": "Cookinseln", + "fr": "Îles Cook", + "es": "Islas Cook", + "en": "Cook Islands", + "pt_BR": "Ilhas Cook", + "sr-Cyrl": "Кукова Острва", + "sr-Latn": "Kukova Ostrva", + "zh_TW": "庫克群島", + "tr": "Cook Adaları", + "ro": "Insulele Cook", + "ar": "جزر كوك", + "fa": "جزایر کوک", + "yue": "庫克群島" + }, + flag: "🇨🇰", + code: "CK", + dialCode: "682", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Costa Rica", + nameTranslations: { + "sk": "Kostarika", + "se": "Costa Rica", + "pl": "Kostaryka", + "no": "Costa Rica", + "ja": "コスタリカ", + "it": "Costa Rica", + "zh": "哥斯达黎加", + "nl": "Costa Rica", + "de": "Costa Rica", + "fr": "Costa Rica", + "es": "Costa Rica", + "en": "Costa Rica", + "pt_BR": "Costa Rica", + "sr-Cyrl": "Коста Рика", + "sr-Latn": "Kosta Rika", + "zh_TW": "哥斯大黎加", + "tr": "Kosta Rika", + "ro": "Costa Rica", + "ar": "كوستاريكا", + "fa": "کاستاریکا", + "yue": "哥斯達黎加" + }, + flag: "🇨🇷", + code: "CR", + dialCode: "506", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Côte d'Ivoire", + nameTranslations: { + "sk": "Pobrežie Slonoviny", + "se": "Elfenbenariddu", + "pl": "Côte d'Ivoire", + "no": "Elfenbenskysten", + "ja": "コートジボワール", + "it": "Costa d'Avorio", + "zh": "科特迪瓦", + "nl": "Ivoorkust", + "de": "Côte d'Ivoire", + "fr": "Côte d'Ivoire", + "es": "Côte d'Ivoire", + "en": "Côte d'Ivoire", + "pt_BR": "Côte d'Ivoire", + "sr-Cyrl": "Обала Слоноваче", + "sr-Latn": "Obala Slonovače", + "zh_TW": "象牙海岸", + "tr": "Fildişi Kıyısı", + "ro": "Coasta de fildeș", + "ar": "ساحل العاج", + "fa": "ساحل عاج", + "yue": "科特迪瓦" + }, + flag: "🇨🇮", + code: "CI", + dialCode: "225", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Croatia", + nameTranslations: { + "sk": "Chorvátsko", + "se": "Kroátia", + "pl": "Chorwacja", + "no": "Kroatia", + "ja": "クロアチア", + "it": "Croazia", + "zh": "克罗地亚", + "nl": "Kroatië", + "de": "Kroatien", + "fr": "Croatie", + "es": "Croacia", + "en": "Croatia", + "pt_BR": "Croácia", + "sr-Cyrl": "Хрватска", + "sr-Latn": "Hrvatska", + "zh_TW": "克羅埃西亞", + "tr": "Hırvatistan", + "ro": "Croația", + "ar": "كرواتيا", + "fa": "کرواسی", + "yue": "克羅地亞" + }, + flag: "🇭🇷", + code: "HR", + dialCode: "385", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Cuba", + nameTranslations: { + "sk": "Kuba", + "se": "Kuba", + "pl": "Kuba", + "no": "Cuba", + "ja": "キューバ", + "it": "Cuba", + "zh": "古巴", + "nl": "Cuba", + "de": "Kuba", + "fr": "Cuba", + "es": "Cuba", + "en": "Cuba", + "pt_BR": "Cuba", + "sr-Cyrl": "Куба", + "sr-Latn": "Kuba", + "zh_TW": "古巴", + "tr": "Küba", + "ro": "Cuba", + "ar": "كوبا", + "fa": "كوبا", + "yue": "古巴" + }, + flag: "🇨🇺", + code: "CU", + dialCode: "53", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Cyprus", + nameTranslations: { + "sk": "Cyprus", + "se": "Kypros", + "pl": "Cypr", + "no": "Kypros", + "ja": "キプロス", + "it": "Cipro", + "zh": "塞浦路斯", + "nl": "Cyprus", + "de": "Zypern", + "fr": "Chypre", + "es": "Chipre", + "en": "Cyprus", + "pt_BR": "Chipre", + "sr-Cyrl": "Кипар", + "sr-Latn": "Kipar", + "zh_TW": "塞普勒斯", + "tr": "Kıbrıs", + "ro": "Cipru", + "ar": "قبرص", + "fa": "قبرس", + "yue": "塞浦路斯" + }, + flag: "🇨🇾", + code: "CY", + dialCode: "357", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Czech Republic", + nameTranslations: { + "sk": "Česko", + "se": "Čeahkka", + "pl": "Czechy", + "no": "Tsjekkia", + "ja": "チェコ", + "it": "Cechia", + "zh": "捷克", + "nl": "Tsjechië", + "de": "Tschechien", + "fr": "Tchéquie", + "es": "Chequia", + "en": "Czechia", + "pt_BR": "Czechia", + "sr-Cyrl": "Чешка", + "sr-Latn": "Češka", + "zh_TW": "捷克", + "tr": "Çek Cumhuriyeti", + "ro": "Cehia", + "ar": "جمهورية التشيك", + "fa": "جمهوری چک", + "yue": "捷克共和國" + }, + flag: "🇨🇿", + code: "CZ", + dialCode: "420", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Denmark", + nameTranslations: { + "sk": "Dánsko", + "se": "Dánmárku", + "pl": "Dania", + "no": "Danmark", + "ja": "デンマーク", + "it": "Danimarca", + "zh": "丹麦", + "nl": "Denemarken", + "de": "Dänemark", + "fr": "Danemark", + "es": "Dinamarca", + "en": "Denmark", + "pt_BR": "Dinamarca", + "sr-Cyrl": "Данска", + "sr-Latn": "Danska", + "zh_TW": "丹麥", + "tr": "Danimarka", + "ro": "Danemarca", + "ar": "الدنمارك", + "fa": "دانمارک", + "yue": "丹麥" + }, + flag: "🇩🇰", + code: "DK", + dialCode: "45", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Djibouti", + nameTranslations: { + "sk": "Džibutsko", + "se": "Djibouti", + "pl": "Dżibuti", + "no": "Djibouti", + "ja": "ジブチ", + "it": "Gibuti", + "zh": "吉布提", + "nl": "Djibouti", + "de": "Dschibuti", + "fr": "Djibouti", + "es": "Yibuti", + "en": "Djibouti", + "pt_BR": "Djibouti", + "sr-Cyrl": "Џибути", + "sr-Latn": "Džibuti", + "zh_TW": "吉布地", + "tr": "Cibuti", + "ro": "Djibouti", + "ar": "جيبوتي", + "fa": "جیبوتی", + "yue": "吉布提" + }, + flag: "🇩🇯", + code: "DJ", + dialCode: "253", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Dominica", + nameTranslations: { + "sk": "Dominika", + "se": "Dominica", + "pl": "Dominika", + "no": "Dominica", + "ja": "ドミニカ国", + "it": "Dominica", + "zh": "多米尼克", + "nl": "Dominica", + "de": "Dominica", + "fr": "Dominique", + "es": "Dominica", + "en": "Dominica", + "pt_BR": "Dominica", + "sr-Cyrl": "Доминика", + "sr-Latn": "Dominika", + "zh_TW": "多明尼加", + "tr": "Dominika", + "ro": "Dominica", + "ar": "دومينيكا", + "fa": "دومينيكا", + "yue": "多米尼加" + }, + flag: "🇩🇲", + code: "DM", + dialCode: "1767", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Dominican Republic", + nameTranslations: { + "sk": "Dominikánska republika", + "se": "Dominikána dásseváldi", + "pl": "Dominikana", + "no": "Den dominikanske republikk", + "ja": "ドミニカ共和国", + "it": "Repubblica Dominicana", + "zh": "多米尼加共和国", + "nl": "Dominicaanse Republiek", + "de": "Dominikanische Republik", + "fr": "République dominicaine", + "es": "República Dominicana", + "en": "Dominican Republic", + "pt_BR": "República Dominicana", + "sr-Cyrl": "Доминиканска Република", + "sr-Latn": "Dominikanska Republika", + "zh_TW": "多明尼加共和國", + "tr": "Dominik Cumhuriyeti", + "ro": "Republica Dominicană", + "ar": "جمهورية الدومينيكان", + "fa": "جمهوری دومنیکن", + "yue": "多明尼加共和國" + }, + flag: "🇩🇴", + code: "DO", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ecuador", + nameTranslations: { + "sk": "Ekvádor", + "se": "Ecuador", + "pl": "Ekwador", + "no": "Ecuador", + "ja": "エクアドル", + "it": "Ecuador", + "zh": "厄瓜多尔", + "nl": "Ecuador", + "de": "Ecuador", + "fr": "Équateur", + "es": "Ecuador", + "en": "Ecuador", + "pt_BR": "Equador", + "sr-Cyrl": "Еквадор", + "sr-Latn": "Ekvador", + "zh_TW": "厄瓜多", + "tr": "Ekvador", + "ro": "Ecuador", + "ar": "الإكوادور", + "fa": "اكوادور", + "yue": "厄瓜多爾" + }, + flag: "🇪🇨", + code: "EC", + dialCode: "593", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Egypt", + nameTranslations: { + "sk": "Egypt", + "se": "Egypt", + "pl": "Egipt", + "no": "Egypt", + "ja": "エジプト", + "it": "Egitto", + "zh": "埃及", + "nl": "Egypt", + "de": "Ägypt", + "fr": "Égypte", + "es": "Egipt", + "en": "Egypt", + "pt_BR": "Egito", + "sr-Cyrl": "Египат", + "sr-Latn": "Egipat", + "zh_TW": "埃及", + "tr": "Mısır", + "ro": "Egipt", + "ar": "مصر", + "fa": "مصر", + "yue": "埃及" + }, + flag: "🇪🇬", + code: "EG", + dialCode: "2", + minLength: 11, + maxLength: 11, + ), + Country( + name: "El Salvador", + nameTranslations: { + "sk": "Salvádor", + "se": "El Salvador", + "pl": "Salwador", + "no": "El Salvador", + "ja": "エルサルバドル", + "it": "El Salvador", + "zh": "萨尔瓦多", + "nl": "El Salvador", + "de": "El Salvador", + "fr": "Salvador", + "es": "El Salvador", + "en": "El Salvador", + "pt_BR": "El Salvador", + "sr-Cyrl": "Салвадор", + "sr-Latn": "Salvador", + "zh_TW": "薩爾瓦多", + "tr": "El Salvador", + "ro": "Salvador", + "ar": "السلفادور", + "fa": "ال سالوادور", + "yue": "薩爾瓦多" + }, + flag: "🇸🇻", + code: "SV", + dialCode: "503", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Equatorial Guinea", + nameTranslations: { + "sk": "Rovníková Guinea", + "se": "Ekvatoriála Guinea", + "pl": "Gwinea Równikowa", + "no": "Ekvatorial-Guinea", + "ja": "赤道ギニア", + "it": "Guinea Equatoriale", + "zh": "赤道几内亚", + "nl": "Equatoriaal-Guinea", + "de": "Äquatorialguinea", + "fr": "Guinée équatoriale", + "es": "Guinea Ecuatorial", + "en": "Equatorial Guinea", + "pt_BR": "Guiné Equatorial", + "sr-Cyrl": "Екваторијална Гвинеја", + "sr-Latn": "Ekvatorijalna Gvineja", + "zh_TW": "赤道幾內亞", + "tr": "Ekvator Ginesi", + "ro": "Guineea Ecuatorială", + "ar": "غينيا الاستوائية", + "fa": "گینه استوایی", + "yue": "赤道幾內亞" + }, + flag: "🇬🇶", + code: "GQ", + dialCode: "240", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Eritrea", + nameTranslations: { + "sk": "Eritrea", + "se": "Eritrea", + "pl": "Erytrea", + "no": "Eritrea", + "ja": "エリトリア", + "it": "Eritrea", + "zh": "厄立特里亚", + "nl": "Eritrea", + "de": "Eritrea", + "fr": "Érythrée", + "es": "Eritrea", + "en": "Eritrea", + "pt_BR": "Eritreia", + "sr-Cyrl": "Еритреја", + "sr-Latn": "Eritreja", + "zh_TW": "厄立特裡亞", + "tr": "Eritre", + "ro": "Eritreea", + "ar": "إريتريا", + "fa": "اریتره", + "yue": "厄立特里亞" + }, + flag: "🇪🇷", + code: "ER", + dialCode: "291", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Estonia", + nameTranslations: { + "sk": "Estónsko", + "se": "Estlánda", + "pl": "Estonia", + "no": "Estland", + "ja": "エストニア", + "it": "Estonia", + "zh": "爱沙尼亚", + "nl": "Estland", + "de": "Estland", + "fr": "Estonie", + "es": "Estonia", + "en": "Estonia", + "pt_BR": "Estônia", + "sr-Cyrl": "Естонија", + "sr-Latn": "Estonija", + "zh_TW": "愛沙尼亞", + "tr": "Estonya", + "ro": "Estonia", + "ar": "إستونيا", + "fa": "استونی", + "yue": "愛沙尼亞" + }, + flag: "🇪🇪", + code: "EE", + dialCode: "372", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ethiopia", + nameTranslations: { + "sk": "Etiópia", + "se": "Etiopia", + "pl": "Etiopia", + "no": "Etiopia", + "ja": "エチオピア", + "it": "Etiopia", + "zh": "埃塞俄比亚", + "nl": "Ethiopië", + "de": "Äthiopien", + "fr": "Éthiopie", + "es": "Etiopía", + "en": "Ethiopia", + "pt_BR": "Etiópia", + "sr-Cyrl": "Етиопија", + "sr-Latn": "Etiopija", + "zh_TW": "伊索比亞", + "tr": "Etiyopya", + "ro": "Etiopia", + "ar": "إثيوبيا", + "fa": "اتیوپی", + "yue": "埃塞俄比亞" + }, + flag: "🇪🇹", + code: "ET", + dialCode: "251", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Falkland Islands (Malvinas)", + nameTranslations: { + "sk": "Falklandy", + "se": "Falklandsullot", + "pl": "Falklandy", + "no": "Falklandsøyene", + "ja": "フォークランド諸島", + "it": "Isole Falkland", + "zh": "福克兰群岛", + "nl": "Falklandeilanden", + "de": "Falklandinseln", + "fr": "Îles Malouines", + "es": "Islas Malvinas", + "en": "Falkland Islands", + "pt_BR": "Ilhas Falkland", + "sr-Cyrl": "Фокландска Острва", + "sr-Latn": "Foklandska Ostrva", + "zh_TW": "福克蘭群島", + "tr": "Falkland Adaları", + "ro": "Insulele Falklands", + "ar": "جزر فوكلاند", + "fa": "جزایر فالکلند", + "yue": "福克蘭群島(馬爾維納斯群島)" + }, + flag: "🇫🇰", + code: "FK", + dialCode: "500", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Faroe Islands", + nameTranslations: { + "sk": "Faerské ostrovy", + "se": "Fearsullot", + "pl": "Wyspy Owcze", + "no": "Færøyene", + "ja": "フェロー諸島", + "it": "Isole Fær Øer", + "zh": "法罗群岛", + "nl": "Faeröer", + "de": "Färöer", + "fr": "Îles Féroé", + "es": "Islas Feroe", + "en": "Faroe Islands", + "pt_BR": "ilhas Faroe", + "sr-Cyrl": "Фарска Острва", + "sr-Latn": "Farska Ostrva", + "zh_TW": "法羅群島", + "tr": "Faroe Adaları", + "ro": "Insulele Feroe", + "ar": "جزر فارو", + "fa": "جزایر فارو", + "yue": "法羅群島" + }, + flag: "🇫🇴", + code: "FO", + dialCode: "298", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Fiji", + nameTranslations: { + "sk": "Fidži", + "se": "Fijisullot", + "pl": "Fidżi", + "no": "Fiji", + "ja": "フィジー", + "it": "Figi", + "zh": "斐济", + "nl": "Fiji", + "de": "Fidschi", + "fr": "Fidji", + "es": "Fiyi", + "en": "Fiji", + "pt_BR": "Fiji", + "sr-Cyrl": "Фиџи", + "sr-Latn": "Fidži", + "zh_TW": "斐濟", + "tr": "Fiji", + "ro": "Fiji", + "ar": "فيجي", + "fa": "فيجي", + "yue": "斐濟" + }, + flag: "🇫🇯", + code: "FJ", + dialCode: "679", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Finland", + nameTranslations: { + "sk": "Fínsko", + "se": "Suopma", + "pl": "Finlandia", + "no": "Finland", + "ja": "フィンランド", + "it": "Finlandia", + "zh": "芬兰", + "nl": "Finland", + "de": "Finnland", + "fr": "Finlande", + "es": "Finlandia", + "en": "Finland", + "pt_BR": "Finlândia", + "sr-Cyrl": "Финска", + "sr-Latn": "Finska", + "zh_TW": "芬蘭", + "tr": "Finlandiya", + "ro": "Finlanda", + "ar": "فنلندا", + "fa": "فنلاند", + "yue": "芬蘭" + }, + flag: "🇫🇮", + code: "FI", + dialCode: "358", + minLength: 12, + maxLength: 12, + ), + Country( + name: "France", + nameTranslations: { + "sk": "Francúzsko", + "se": "Frankriika", + "pl": "Francja", + "no": "Frankrike", + "ja": "フランス", + "it": "Francia", + "zh": "法国", + "nl": "Frankrijk", + "de": "Frankreich", + "fr": "France", + "es": "Francia", + "en": "France", + "pt_BR": "França", + "sr-Cyrl": "Француска", + "sr-Latn": "Francuska", + "zh_TW": "法國", + "tr": "Fransa", + "ro": "Franța", + "ar": "فرنسا", + "fa": "فرانسه", + "yue": "法國" + }, + flag: "🇫🇷", + code: "FR", + dialCode: "33", + minLength: 9, + maxLength: 9, + ), + Country( + name: "French Guiana", + nameTranslations: { + "sk": "Francúzska Guyana", + "se": "Frankriikka Guayana", + "pl": "Gujana Francuska", + "no": "Fransk Guyana", + "ja": "仏領ギアナ", + "it": "Guyana francese", + "zh": "法属圭亚那", + "nl": "Frans-Guyana", + "de": "Französisch-Guayana", + "fr": "Guyane française", + "es": "Guayana Francesa", + "en": "French Guiana", + "pt_BR": "Guiana Francesa", + "sr-Cyrl": "Француска Гвајана", + "sr-Latn": "Francuska Gvajana", + "zh_TW": "法屬蓋亞那", + "tr": "Fransız Guyanası", + "ro": "Guiana Franceză", + "ar": "غويانا الفرنسية", + "fa": "گویان فرانسه", + "yue": "法屬圭亞那" + }, + flag: "🇬🇫", + code: "GF", + dialCode: "594", + minLength: 15, + maxLength: 15, + ), + Country( + name: "French Polynesia", + nameTranslations: { + "sk": "Francúzska Polynézia", + "se": "Frankriikka Polynesia", + "pl": "Polinezja Francuska", + "no": "Fransk Polynesia", + "ja": "仏領ポリネシア", + "it": "Polinesia francese", + "zh": "法属波利尼西亚", + "nl": "Frans-Polynesië", + "de": "Französisch-Polynesien", + "fr": "Polynésie française", + "es": "Polinesia Francesa", + "en": "French Polynesia", + "pt_BR": "Polinésia Francesa", + "sr-Cyrl": "Француска Полинезија", + "sr-Latn": "Francuska Polinezija", + "zh_TW": "法屬玻里尼西亞", + "tr": "Fransız Polinezyası", + "ro": "Polinezia Franceză", + "ar": "بولينزيا الفرنسية", + "fa": "پلی‌نزی فرانسه", + "yue": "法屬波利尼西亞" + }, + flag: "🇵🇫", + code: "PF", + dialCode: "689", + minLength: 6, + maxLength: 6, + ), + Country( + name: "French Southern Territories", + nameTranslations: { + "sk": "Francúzske južné a antarktické územia", + "se": "French Southern Territories", + "pl": "Francuskie Terytoria Południowe i Antarktyczne", + "no": "De franske sørterritorier", + "ja": "仏領極南諸島", + "it": "Terre australi francesi", + "zh": "法属南部领地", + "nl": "Franse Gebieden in de zuidelijke Indische Oceaan", + "de": "Französische Süd- und Antarktisgebiete", + "fr": "Terres australes françaises", + "es": "Territorios Australes Franceses", + "en": "French Southern Territories", + "pt_BR": "Territórios Franceses do Sul", + "sr-Cyrl": "Француске јужне и антарктичке земље", + "sr-Latn": "Francuske južne i antarktičke zemlje", + "zh_TW": "法屬南部屬地", + "tr": "Fransız Güney ve Antarktika Toprakları", + "ro": "Teritoriile australe și antarctice franceze", + "ar": "أراض فرنسية جنوبية وأنتارتيكية", + "fa": "سرزمین‌های جنوبی فرانسه", + "yue": "法國南部領土" + }, + flag: "🇹🇫", + code: "TF", + dialCode: "262", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Gabon", + nameTranslations: { + "sk": "Gabon", + "se": "Gabon", + "pl": "Gabon", + "no": "Gabon", + "ja": "ガボン", + "it": "Gabon", + "zh": "加蓬", + "nl": "Gabon", + "de": "Gabun", + "fr": "Gabon", + "es": "Gabón", + "en": "Gabon", + "pt_BR": "Gabão", + "sr-Cyrl": "Габон", + "sr-Latn": "Gabon", + "zh_TW": "加彭", + "tr": "Gabon", + "ro": "Gabon", + "ar": "الغابون", + "fa": "گابن", + "yue": "加蓬" + }, + flag: "🇬🇦", + code: "GA", + dialCode: "241", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gambia", + nameTranslations: { + "sk": "Gambia", + "se": "Gámbia", + "pl": "Gambia", + "no": "Gambia", + "ja": "ガンビア", + "it": "Gambia", + "zh": "冈比亚", + "nl": "Gambia", + "de": "Gambia", + "fr": "Gambie", + "es": "Gambia", + "en": "Gambia", + "pt_BR": "Gâmbia", + "sr-Cyrl": "Гамбија", + "sr-Latn": "Gambija", + "zh_TW": "岡比亞", + "tr": "Gambiya", + "ro": "Gambia", + "ar": "غامبيا", + "fa": "گامبیا", + "yue": "岡比亞" + }, + flag: "🇬🇲", + code: "GM", + dialCode: "220", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Georgia", + nameTranslations: { + "sk": "Gruzínsko", + "se": "Georgia", + "pl": "Gruzja", + "no": "Georgia", + "ja": "ジョージア", + "it": "Georgia", + "zh": "格鲁吉亚", + "nl": "Georgië", + "de": "Georgien", + "fr": "Géorgie", + "es": "Georgia", + "en": "Georgia", + "pt_BR": "Georgia", + "sr-Cyrl": "Грузија", + "sr-Latn": "Gruzija", + "zh_TW": "喬治亞", + "tr": "Gürcistan", + "ro": "Georgia", + "ar": "جورجيا", + "fa": "گرجستان", + "yue": "格魯吉亞" + }, + flag: "🇬🇪", + code: "GE", + dialCode: "995", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Germany", + nameTranslations: { + "sk": "Nemecko", + "se": "Duiska", + "pl": "Niemcy", + "no": "Tyskland", + "ja": "ドイツ", + "it": "Germania", + "zh": "德国", + "nl": "Duitsland", + "de": "Deutschland", + "fr": "Allemagne", + "es": "Alemania", + "en": "Germany", + "pt_BR": "Alemanha", + "sr-Cyrl": "Немачка", + "sr-Latn": "Nemačka", + "zh_TW": "德國", + "tr": "Almanya", + "ro": "Germania", + "ar": "ألمانيا", + "fa": "آلمان", + "yue": "德國" + }, + flag: "🇩🇪", + code: "DE", + dialCode: "49", + minLength: 9, + maxLength: 13, + ), + Country( + name: "Ghana", + nameTranslations: { + "sk": "Ghana", + "se": "Ghana", + "pl": "Ghana", + "no": "Ghana", + "ja": "ガーナ", + "it": "Ghana", + "zh": "加纳", + "nl": "Ghana", + "de": "Ghana", + "fr": "Ghana", + "es": "Ghana", + "en": "Ghana", + "pt_BR": "Gana", + "sr-Cyrl": "Гана", + "sr-Latn": "Gana", + "zh_TW": "迦納", + "tr": "Gana", + "ro": "Ghana", + "ar": "غانا", + "fa": "غنا", + "yue": "加納" + }, + flag: "🇬🇭", + code: "GH", + dialCode: "233", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Gibraltar", + nameTranslations: { + "sk": "Gibraltár", + "se": "Gibraltar", + "pl": "Gibraltar", + "no": "Gibraltar", + "ja": "ジブラルタル", + "it": "Gibilterra", + "zh": "直布罗陀", + "nl": "Gibraltar", + "de": "Gibraltar", + "fr": "Gibraltar", + "es": "Gibraltar", + "en": "Gibraltar", + "pt_BR": "Gibraltar", + "sr-Cyrl": "Гибралтар", + "sr-Latn": "Gibraltar", + "zh_TW": "直布羅陀", + "tr": "Cebelitarık", + "ro": "Gibraltar", + "ar": "جبل طارق", + "fa": "جبل الطارق", + "yue": "直布羅陀" + }, + flag: "🇬🇮", + code: "GI", + dialCode: "350", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Greece", + nameTranslations: { + "sk": "Grécko", + "se": "Greika", + "pl": "Grecja", + "no": "Hellas", + "ja": "ギリシャ", + "it": "Grecia", + "zh": "希腊", + "nl": "Griekenland", + "de": "Griechenland", + "fr": "Grèce", + "es": "Grecia", + "en": "Greece", + "pt_BR": "Grécia", + "sr-Cyrl": "Грчка", + "sr-Latn": "Grčka", + "zh_TW": "希臘", + "tr": "Yunanistan", + "ro": "Grecia", + "ar": "اليونان", + "fa": "یونان", + "yue": "希臘" + }, + flag: "🇬🇷", + code: "GR", + dialCode: "30", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Greenland", + nameTranslations: { + "sk": "Grónsko", + "se": "Kalaallit Nunaat", + "pl": "Grenlandia", + "no": "Grønland", + "ja": "グリーンランド", + "it": "Groenlandia", + "zh": "格陵兰", + "nl": "Groenland", + "de": "Grönland", + "fr": "Groenland", + "es": "Groenlandia", + "en": "Greenland", + "pt_BR": "Groenlândia", + "sr-Cyrl": "Гренланд", + "sr-Latn": "Grenland", + "zh_TW": "格陵蘭", + "tr": "Grönland", + "ro": "Groenlanda", + "ar": "جرينلاند", + "fa": "گرینلند", + "yue": "格陵蘭" + }, + flag: "🇬🇱", + code: "GL", + dialCode: "299", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Grenada", + nameTranslations: { + "sk": "Grenada", + "se": "Grenada", + "pl": "Grenada", + "no": "Grenada", + "ja": "グレナダ", + "it": "Grenada", + "zh": "格林纳达", + "nl": "Grenada", + "de": "Grenada", + "fr": "Grenade", + "es": "Granada", + "en": "Grenada", + "pt_BR": "Grenada", + "sr-Cyrl": "Гренада", + "sr-Latn": "Grenada", + "zh_TW": "格林納達", + "tr": "Grenada", + "ro": "Grenada", + "ar": "غرينادا", + "fa": "گرنادا", + "yue": "格林納達" + }, + flag: "🇬🇩", + code: "GD", + dialCode: "1473", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guadeloupe", + nameTranslations: { + "sk": "Guadeloupe", + "se": "Guadeloupe", + "pl": "Gwadelupa", + "no": "Guadeloupe", + "ja": "グアドループ", + "it": "Guadalupa", + "zh": "瓜德罗普", + "nl": "Guadeloupe", + "de": "Guadeloupe", + "fr": "Guadeloupe", + "es": "Guadalupe", + "en": "Guadeloupe", + "pt_BR": "Guadalupe", + "sr-Cyrl": "Гваделуп", + "sr-Latn": "Gvadelup", + "zh_TW": "瓜地洛普", + "tr": "Guadeloupe", + "ro": "Guadelupa", + "ar": "غوادلوب", + "fa": "گوادلوپ", + "yue": "瓜德罗普" + }, + flag: "🇬🇵", + code: "GP", + dialCode: "590", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Guam", + nameTranslations: { + "sk": "Guam", + "se": "Guam", + "pl": "Guam", + "no": "Guam", + "ja": "グアム", + "it": "Guam", + "zh": "关岛", + "nl": "Guam", + "de": "Guam", + "fr": "Guam", + "es": "Guam", + "en": "Guam", + "pt_BR": "Guam", + "sr-Cyrl": "Гвам", + "sr-Latn": "Gvam", + "zh_TW": "關島", + "tr": "Guam", + "ro": "Guam", + "ar": "غوام", + "fa": "گوام", + "yue": "關島" + }, + flag: "🇬🇺", + code: "GU", + dialCode: "1671", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guatemala", + nameTranslations: { + "sk": "Guatemala", + "se": "Guatemala", + "pl": "Gwatemala", + "no": "Guatemala", + "ja": "グアテマラ", + "it": "Guatemala", + "zh": "危地马拉", + "nl": "Guatemala", + "de": "Guatemala", + "fr": "Guatemala", + "es": "Guatemala", + "en": "Guatemala", + "pt_BR": "Guatemala", + "sr-Cyrl": "Гватемала", + "sr-Latn": "Gvatemala", + "zh_TW": "瓜地馬拉", + "tr": "Guatemala", + "ro": "Guatemala", + "ar": "غواتيمالا", + "fa": "گواتمالا", + "yue": "危地馬拉" + }, + flag: "🇬🇹", + code: "GT", + dialCode: "502", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Guernsey", + nameTranslations: { + "sk": "Guernsey", + "se": "Guernsey", + "pl": "Guernsey", + "no": "Guernsey", + "ja": "ガーンジー", + "it": "Guernsey", + "zh": "根西岛", + "nl": "Guernsey", + "de": "Guernsey", + "fr": "Guernesey", + "es": "Guernsey", + "en": "Guernsey", + "pt_BR": "Guernsey", + "sr-Cyrl": "Гернзи", + "sr-Latn": "Gernzi", + "zh_TW": "根息島", + "tr": "Guernsey", + "ro": "Guernsey", + "ar": "غيرنزي", + "fa": "گرنزی", + "yue": "格恩西島" + }, + flag: "🇬🇬", + code: "GG", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Guinea", + nameTranslations: { + "sk": "Guinea", + "se": "Guinea", + "pl": "Gwinea", + "no": "Guinea", + "ja": "ギニア", + "it": "Guinea", + "zh": "几内亚", + "nl": "Guinee", + "de": "Guinea", + "fr": "Guinée", + "es": "Guinea", + "en": "Guinea", + "pt_BR": "Guiné", + "sr-Cyrl": "Гвинеја", + "sr-Latn": "Gvineja", + "zh_TW": "幾內亞", + "tr": "Gine", + "ro": "Guinea", + "ar": "غينيا", + "fa": "گینه", + "yue": "幾內亞" + }, + flag: "🇬🇳", + code: "GN", + dialCode: "224", + minLength: 8, + maxLength: 9, + ), + Country( + name: "Guinea-Bissau", + nameTranslations: { + "sk": "Guinea-Bissau", + "se": "Guinea-Bissau", + "pl": "Gwinea Bissau", + "no": "Guinea-Bissau", + "ja": "ギニアビサウ", + "it": "Guinea-Bissau", + "zh": "几内亚比绍", + "nl": "Guinee-Bissau", + "de": "Guinea-Bissau", + "fr": "Guinée-Bissau", + "es": "Guinea-Bisáu", + "en": "Guinea-Bissau", + "pt_BR": "Guiné-bissau", + "sr-Cyrl": "Гвинеја Бисао", + "sr-Latn": "Gvineja Bisao", + "zh_TW": "幾內亞比索", + "tr": "Gine-Bissau", + "ro": "Guineea-Bissau", + "ar": "غينيا بيساو", + "fa": "گینه بیسائو", + "yue": "幾內亞比紹" + }, + flag: "🇬🇼", + code: "GW", + dialCode: "245", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Guyana", + nameTranslations: { + "sk": "Guyana", + "se": "Guyana", + "pl": "Gujana", + "no": "Guyana", + "ja": "ガイアナ", + "it": "Guyana", + "zh": "圭亚那", + "nl": "Guyana", + "de": "Guyana", + "fr": "Guyana", + "es": "Guyana", + "en": "Guyana", + "pt_BR": "Guiana", + "sr-Cyrl": "Гвајана", + "sr-Latn": "Gvajana", + "zh_TW": "蓋亞那", + "tr": "Guyana", + "ro": "Guyana", + "ar": "غيانا", + "fa": "گویان", + "yue": "圭亞那" + }, + flag: "🇬🇾", + code: "GY", + dialCode: "592", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Haiti", + nameTranslations: { + "sk": "Haiti", + "se": "Haiti", + "pl": "Haiti", + "no": "Haiti", + "ja": "ハイチ", + "it": "Haiti", + "zh": "海地", + "nl": "Haïti", + "de": "Haiti", + "fr": "Haïti", + "es": "Haití", + "en": "Haiti", + "pt_BR": "Haiti", + "sr-Cyrl": "Хаити", + "sr-Latn": "Haiti", + "zh_TW": "海地", + "tr": "Haiti", + "ro": "Haiti", + "ar": "هايتي", + "fa": "هائیتی", + "yue": "海地" + }, + flag: "🇭🇹", + code: "HT", + dialCode: "509", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Heard Island and Mcdonald Islands", + nameTranslations: { + "sk": "Heardov ostrov a Macdonaldove ostrovy", + "se": "Heard- ja McDonald-sullot", + "pl": "Wyspy Heard i McDonalda", + "no": "Heard- og McDonaldøyene", + "ja": "ハード島・マクドナルド諸島", + "it": "Isole Heard e McDonald", + "zh": "赫德岛和麦克唐纳群岛", + "nl": "Heard en McDonaldeilanden", + "de": "Heard und McDonaldinseln", + "fr": "Îles Heard et McDonald", + "es": "Islas Heard y McDonald", + "en": "Heard & McDonald Islands", + "pt_BR": "Ilhas Heard e McDonald", + "sr-Cyrl": "Острва Херд и Макдоналд", + "sr-Latn": "Ostrva Herd i Makdonald", + "zh_TW": "赫德暨麥當勞群島", + "tr": "Heard Adası ve McDonald Adaları", + "ro": "Insula Heard și Insulele McDonald", + "ar": "جزيرة هيرد وجزر ماكدونالد", + "fa": "جزیره هرد و جزایر مک‌دونالد", + "yue": "赫德岛同麦克唐纳群岛" + }, + flag: "🇭🇲", + code: "HM", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Holy See (Vatican City State)", + nameTranslations: { + "sk": "Vatikán", + "se": "Vatikána", + "pl": "Watykan", + "no": "Vatikanstaten", + "ja": "バチカン市国", + "it": "Città del Vaticano", + "zh": "梵蒂冈", + "nl": "Vaticaanstad", + "de": "Vatikanstadt", + "fr": "État de la Cité du Vatican", + "es": "Ciudad del Vaticano", + "en": "Vatican City", + "pt_BR": "Cidade do Vaticano", + "sr-Cyrl": "Ватикан", + "sr-Latn": "Vatikan", + "zh_TW": "梵蒂岡", + "tr": "Vatikan", + "ro": "Vatican", + "ar": "الفاتيكان", + "fa": "واتیکان", + "yue": "梵蒂岡城國" + }, + flag: "🇻🇦", + code: "VA", + dialCode: "379", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Honduras", + nameTranslations: { + "sk": "Honduras", + "se": "Honduras", + "pl": "Honduras", + "no": "Honduras", + "ja": "ホンジュラス", + "it": "Honduras", + "zh": "洪都拉斯", + "nl": "Honduras", + "de": "Honduras", + "fr": "Honduras", + "es": "Honduras", + "en": "Honduras", + "pt_BR": "Honduras", + "sr-Cyrl": "Хондурас", + "sr-Latn": "Honduras", + "zh_TW": "宏都拉斯", + "tr": "Honduras", + "ro": "Honduras", + "ar": "هندوراس", + "fa": "هندوراس", + "yue": "洪都拉斯" + }, + flag: "🇭🇳", + code: "HN", + dialCode: "504", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hong Kong", + nameTranslations: { + "sk": "Hongkong – OAO Číny", + "se": "Hongkong", + "pl": "SRA Hongkong (Chiny)", + "no": "Hongkong S.A.R. Kina", + "ja": "中華人民共和国香港特別行政区", + "it": "RAS di Hong Kong", + "zh": "中国香港特别行政区", + "nl": "Hongkong SAR van China", + "de": "Sonderverwaltungsregion Hongkong", + "fr": "R.A.S. chinoise de Hong Kong", + "es": "RAE de Hong Kong (China)", + "en": "Hong Kong SAR China", + "pt_BR": "RAE de Hong Kong China", + "sr-Cyrl": "Хонг Конг", + "sr-Latn": "Hong Kong", + "zh_TW": "香港", + "tr": "Hong Kong", + "ro": "Hong Kong", + "ar": "هونغ كونغ", + "fa": "هنگ کنگ", + "yue": "香港" + }, + flag: "🇭🇰", + code: "HK", + dialCode: "852", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Hungary", + nameTranslations: { + "sk": "Maďarsko", + "se": "Ungár", + "pl": "Węgry", + "no": "Ungarn", + "ja": "ハンガリー", + "it": "Ungheria", + "zh": "匈牙利", + "nl": "Hongarije", + "de": "Ungarn", + "fr": "Hongrie", + "es": "Hungría", + "en": "Hungary", + "pt_BR": "Hungria", + "sr-Cyrl": "Мађарска", + "sr-Latn": "Mađarska", + "zh_TW": "匈牙利", + "tr": "Macaristan", + "ro": "Ungaria", + "ar": "المجر", + "fa": "مجارستان", + "yue": "匈牙利" + }, + flag: "🇭🇺", + code: "HU", + dialCode: "36", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Iceland", + nameTranslations: { + "sk": "Island", + "se": "Islánda", + "pl": "Islandia", + "no": "Island", + "ja": "アイスランド", + "it": "Islanda", + "zh": "冰岛", + "nl": "IJsland", + "de": "Island", + "fr": "Islande", + "es": "Islandia", + "en": "Iceland", + "pt_BR": "Islândia", + "sr-Cyrl": "Исланд", + "sr-Latn": "Island", + "zh_TW": "冰島", + "tr": "İzlanda", + "ro": "Islanda", + "ar": "آيسلندا", + "fa": "ایسلند", + "yue": "冰島" + }, + flag: "🇮🇸", + code: "IS", + dialCode: "354", + minLength: 7, + maxLength: 9, + ), + Country( + name: "India", + nameTranslations: { + "sk": "India", + "se": "India", + "pl": "Indie", + "no": "India", + "ja": "インド", + "it": "India", + "zh": "印度", + "nl": "India", + "de": "Indien", + "fr": "Inde", + "es": "India", + "en": "India", + "pt_BR": "Índia", + "sr-Cyrl": "Индија", + "sr-Latn": "Indija", + "zh_TW": "印度", + "tr": "Hindistan", + "ro": "India", + "ar": "الهند", + "fa": "هند", + "yue": "印度" + }, + flag: "🇮🇳", + code: "IN", + dialCode: "91", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Indonesia", + nameTranslations: { + "sk": "Indonézia", + "se": "Indonesia", + "pl": "Indonezja", + "no": "Indonesia", + "ja": "インドネシア", + "it": "Indonesia", + "zh": "印度尼西亚", + "nl": "Indonesië", + "de": "Indonesien", + "fr": "Indonésie", + "es": "Indonesia", + "en": "Indonesia", + "pt_BR": "Indonésia", + "sr-Cyrl": "Индонезија", + "sr-Latn": "Indonezija", + "zh_TW": "印尼", + "tr": "Endonezya", + "ro": "Indonezia", + "ar": "إندونيسيا", + "fa": "اندونزی", + "yue": "印尼" + }, + flag: "🇮🇩", + code: "ID", + dialCode: "62", + minLength: 10, + maxLength: 13, + ), + Country( + name: "Iran, Islamic Republic of Persian Gulf", + nameTranslations: { + "sk": "Irán", + "se": "Iran", + "pl": "Iran", + "no": "Iran", + "ja": "イラン", + "it": "Iran", + "zh": "伊朗", + "nl": "Iran", + "de": "Iran", + "fr": "Iran", + "es": "Irán", + "en": "Iran", + "pt_BR": "Irã", + "sr-Cyrl": "Иран", + "sr-Latn": "Iran", + "zh_TW": "伊朗", + "tr": "İran", + "ro": "Iran", + "ar": "إيران", + "fa": "ایران", + "yue": "伊朗" + }, + flag: "🇮🇷", + code: "IR", + dialCode: "98", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Iraq", + nameTranslations: { + "sk": "Irak", + "se": "Irak", + "pl": "Irak", + "no": "Irak", + "ja": "イラク", + "it": "Iraq", + "zh": "伊拉克", + "nl": "Irak", + "de": "Irak", + "fr": "Irak", + "es": "Irak", + "en": "Iraq", + "pt_BR": "Iraque", + "sr-Cyrl": "Ирак", + "sr-Latn": "Irak", + "zh_TW": "伊拉克", + "tr": "Irak", + "ro": "Irak", + "ar": "العراق", + "fa": "عراق", + "yue": "伊拉克" + }, + flag: "🇮🇶", + code: "IQ", + dialCode: "964", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Ireland", + nameTranslations: { + "sk": "Írsko", + "se": "Irlánda", + "pl": "Irlandia", + "no": "Irland", + "ja": "アイルランド", + "it": "Irlanda", + "zh": "爱尔兰", + "nl": "Ierland", + "de": "Irland", + "fr": "Irlande", + "es": "Irlanda", + "en": "Ireland", + "pt_BR": "Irlanda", + "sr-Cyrl": "Ирска", + "sr-Latn": "Irska", + "zh_TW": "愛爾蘭", + "tr": "İrlanda", + "ro": "Irlanda", + "ar": "أيرلندا", + "fa": "ایرلند", + "yue": "愛爾蘭" + }, + flag: "🇮🇪", + code: "IE", + dialCode: "353", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Isle of Man", + nameTranslations: { + "sk": "Ostrov Man", + "se": "Mann-sullot", + "pl": "Wyspa Man", + "no": "Man", + "ja": "マン島", + "it": "Isola di Man", + "zh": "马恩岛", + "nl": "Isle of Man", + "de": "Isle of Man", + "fr": "Île de Man", + "es": "Isla de Man", + "en": "Isle of Man", + "pt_BR": "Ilha de Man", + "sr-Cyrl": "Острво Мен", + "sr-Latn": "Ostrvo Men", + "zh_TW": "曼島", + "tr": "Man Adası", + "ro": "Insula Man", + "ar": "جزيرة مان", + "fa": "جزیره مان", + "yue": "马伊岛" + }, + flag: "🇮🇲", + code: "IM", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Israel", + nameTranslations: { + "sk": "Izrael", + "se": "Israel", + "pl": "Izrael", + "no": "Israel", + "ja": "イスラエル", + "it": "Israele", + "zh": "以色列", + "nl": "Israël", + "de": "Israel", + "fr": "Israël", + "es": "Israel", + "en": "Israel", + "pt_BR": "Israel", + "sr-Cyrl": "Израел", + "sr-Latn": "Izrael", + "zh_TW": "以色列", + "tr": "İsrail", + "ro": "Israel", + "ar": "إسرائيل", + "fa": "إسرائيل", + "yue": "以色列" + }, + flag: "🇮🇱", + code: "IL", + dialCode: "972", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Campione d'Italia", + nameTranslations: { + "sk": "Taliansko", + "se": "Itália", + "pl": "Włochy", + "no": "Italia", + "ja": "イタリア", + "it": "Italia", + "zh": "意大利", + "nl": "Italië", + "de": "Italien", + "fr": "Italie", + "es": "Italia", + "en": "Italy", + "pt_BR": "Itália", + "sr-Cyrl": "Италија", + "sr-Latn": "Italija", + "zh_TW": "義大利", + "tr": "İtalya", + "ro": "Italia", + "ar": "إيطاليا", + "fa": "ایتالیا", + "yue": "意大利" + }, + flag: "🇮🇹", + code: "IT", + dialCode: "39", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Jamaica", + nameTranslations: { + "sk": "Jamajka", + "se": "Jamaica", + "pl": "Jamajka", + "no": "Jamaica", + "ja": "ジャマイカ", + "it": "Giamaica", + "zh": "牙买加", + "nl": "Jamaica", + "de": "Jamaika", + "fr": "Jamaïque", + "es": "Jamaica", + "en": "Jamaica", + "pt_BR": "Jamaica", + "sr-Cyrl": "Јамајка", + "sr-Latn": "Jamajka", + "zh_TW": "牙買加", + "tr": "Jamaika", + "ro": "Jamaica", + "ar": "جامايكا", + "fa": "جامائیکا", + "yue": "牙買加" + }, + flag: "🇯🇲", + code: "JM", + dialCode: "1876", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Japan", + nameTranslations: { + "sk": "Japonsko", + "se": "Japána", + "pl": "Japonia", + "no": "Japan", + "ja": "日本", + "it": "Giappone", + "zh": "日本", + "nl": "Japan", + "de": "Japan", + "fr": "Japon", + "es": "Japón", + "en": "Japan", + "pt_BR": "Japão", + "sr-Cyrl": "Јапан", + "sr-Latn": "Japan", + "zh_TW": "日本", + "tr": "Japonya", + "ro": "Japonia", + "ar": "اليابان", + "fa": "ژاپن", + "yue": "日本" + }, + flag: "🇯🇵", + code: "JP", + dialCode: "81", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Jersey", + nameTranslations: { + "sk": "Jersey", + "se": "Jersey", + "pl": "Jersey", + "no": "Jersey", + "ja": "ジャージー", + "it": "Jersey", + "zh": "泽西岛", + "nl": "Jersey", + "de": "Jersey", + "fr": "Jersey", + "es": "Jersey", + "en": "Jersey", + "pt_BR": "Jersey", + "sr-Cyrl": "Џерзи", + "sr-Latn": "Džerzi", + "zh_TW": "澤西", + "tr": "Jersey", + "ro": "Jersey", + "ar": "جيرزي", + "fa": "جرزی", + "yue": "澤西" + }, + flag: "🇯🇪", + code: "JE", + dialCode: "44", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Jordan", + nameTranslations: { + "sk": "Jordánsko", + "se": "Jordánia", + "pl": "Jordania", + "no": "Jordan", + "ja": "ヨルダン", + "it": "Giordania", + "zh": "约旦", + "nl": "Jordanië", + "de": "Jordanien", + "fr": "Jordanie", + "es": "Jordania", + "en": "Jordan", + "pt_BR": "Jordânia", + "sr-Cyrl": "Јордан", + "sr-Latn": "Jordan", + "zh_TW": "約旦", + "tr": "Mavera-i Ürdün", + "ro": "Iordania", + "ar": "الأردن", + "fa": "اردن", + "yue": "約旦" + }, + flag: "🇯🇴", + code: "JO", + dialCode: "962", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Kazakhstan", + nameTranslations: { + "sk": "Kazachstan", + "se": "Kasakstan", + "pl": "Kazachstan", + "no": "Kasakhstan", + "ja": "カザフスタン", + "it": "Kazakistan", + "zh": "哈萨克斯坦", + "nl": "Kazachstan", + "de": "Kasachstan", + "fr": "Kazakhstan", + "es": "Kazajistán", + "en": "Kazakhstan", + "pt_BR": "Cazaquistão", + "sr-Cyrl": "Казахстан", + "sr-Latn": "Kazahstan", + "zh_TW": "哈薩克", + "tr": "Kazakistan", + "ro": "Kazahstan", + "ar": "كازاخستان", + "fa": "قزاقستان", + "yue": "哈薩克斯坦" + }, + flag: "🇰🇿", + code: "KZ", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kenya", + nameTranslations: { + "sk": "Keňa", + "se": "Kenia", + "pl": "Kenia", + "no": "Kenya", + "ja": "ケニア", + "it": "Kenya", + "zh": "肯尼亚", + "nl": "Kenia", + "de": "Kenia", + "fr": "Kenya", + "es": "Kenia", + "en": "Kenya", + "pt_BR": "Quênia", + "sr-Cyrl": "Кенија", + "sr-Latn": "Kenija", + "zh_TW": "肯亞", + "tr": "Kenya", + "ro": "Kenya", + "ar": "كينيا", + "fa": "كنيا", + "yue": "肯雅" + }, + flag: "🇰🇪", + code: "KE", + dialCode: "254", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Kiribati", + nameTranslations: { + "sk": "Kiribati", + "se": "Kiribati", + "pl": "Kiribati", + "no": "Kiribati", + "ja": "キリバス", + "it": "Kiribati", + "zh": "基里巴斯", + "nl": "Kiribati", + "de": "Kiribati", + "fr": "Kiribati", + "es": "Kiribati", + "en": "Kiribati", + "pt_BR": "Kiribati", + "sr-Cyrl": "Кирибати", + "sr-Latn": "Kiribati", + "zh_TW": "吉里巴斯", + "tr": "Kiribati", + "ro": "Kiribati", + "ar": "كيريباتي", + "fa": "کیریباتی", + "yue": "基里巴斯" + }, + flag: "🇰🇮", + code: "KI", + dialCode: "686", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Korea, Democratic People's Republic of Korea", + nameTranslations: { + "sk": "Severná Kórea", + "se": "Davvi-Korea", + "pl": "Korea Północna", + "no": "Nord-Korea", + "ja": "北朝鮮", + "it": "Corea del Nord", + "zh": "朝鲜", + "nl": "Noord-Korea", + "de": "Nordkorea", + "fr": "Corée du Nord", + "es": "Corea del Norte", + "en": "North Korea", + "pt_BR": "Coreia do Norte", + "sr-Cyrl": "Северна Кореја", + "sr-Latn": "Severna Koreja", + "zh_TW": "北韓", + "tr": "Kuzey Kore", + "ro": "Coreea de Nord", + "ar": "كوريا الشمالية", + "fa": "کره شمالی", + "yue": "朝鮮(朝鮮民主主義人民共咊囯)" + }, + flag: "🇰🇵", + code: "KP", + dialCode: "850", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Korea, Republic of South Korea", + nameTranslations: { + "sk": "Južná Kórea", + "se": "Mátta-Korea", + "pl": "Korea Południowa", + "no": "Sør-Korea", + "ja": "韓国", + "it": "Corea del Sud", + "zh": "韩国", + "nl": "Zuid-Korea", + "de": "Südkorea", + "fr": "Corée du Sud", + "es": "Corea del Sur", + "en": "South Korea", + "pt_BR": "Coreia do Sul", + "sr-Cyrl": "Јужна Кореја", + "sr-Latn": "Južna Koreja", + "zh_TW": "南韓", + "tr": "Güney Kore", + "ro": "Coreea de Sud", + "ar": "كوريا الجنوبية", + "fa": "کره جنوبی", + "yue": "韓國(大韓民國)" + }, + flag: "🇰🇷", + code: "KR", + dialCode: "82", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Kuwait", + nameTranslations: { + "sk": "Kuvajt", + "se": "Kuwait", + "pl": "Kuwejt", + "no": "Kuwait", + "ja": "クウェート", + "it": "Kuwait", + "zh": "科威特", + "nl": "Koeweit", + "de": "Kuwait", + "fr": "Koweït", + "es": "Kuwait", + "en": "Kuwait", + "pt_BR": "Kuwait", + "sr-Cyrl": "Кувајт", + "sr-Latn": "Kuvajt", + "zh_TW": "科威特", + "tr": "Kuveyt", + "ro": "Kuweit", + "ar": "الكويت", + "fa": "کویت", + "yue": "科威特" + }, + flag: "🇰🇼", + code: "KW", + dialCode: "965", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Kyrgyzstan", + nameTranslations: { + "sk": "Kirgizsko", + "se": "Kirgisistan", + "pl": "Kirgistan", + "no": "Kirgisistan", + "ja": "キルギス", + "it": "Kirghizistan", + "zh": "吉尔吉斯斯坦", + "nl": "Kirgizië", + "de": "Kirgisistan", + "fr": "Kirghizistan", + "es": "Kirguistán", + "en": "Kyrgyzstan", + "pt_BR": "Quirguistão", + "sr-Cyrl": "Киргистан", + "sr-Latn": "Kirgistan", + "zh_TW": "吉爾吉斯", + "tr": "Kırgızistan", + "ro": "Kîrgîzstan", + "ar": "قيرغيزستان", + "fa": "قرقیزستان", + "yue": "吉爾吉斯斯坦" + }, + flag: "🇰🇬", + code: "KG", + dialCode: "996", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Laos", + nameTranslations: { + "sk": "Laos", + "se": "Laos", + "pl": "Laos", + "no": "Laos", + "ja": "ラオス", + "it": "Laos", + "zh": "老挝", + "nl": "Laos", + "de": "Laos", + "fr": "Laos", + "es": "Laos", + "en": "Laos", + "pt_BR": "Laos", + "sr-Cyrl": "Лаос", + "sr-Latn": "Laos", + "zh_TW": "寮國", + "tr": "Laos", + "ro": "Laos", + "ar": "لاوس", + "fa": "لائوس", + "yue": "老撾人民民主共和國" + }, + flag: "🇱🇦", + code: "LA", + dialCode: "856", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Latvia", + nameTranslations: { + "sk": "Lotyšsko", + "se": "Látvia", + "pl": "Łotwa", + "no": "Latvia", + "ja": "ラトビア", + "it": "Lettonia", + "zh": "拉脱维亚", + "nl": "Letland", + "de": "Lettland", + "fr": "Lettonie", + "es": "Letonia", + "en": "Latvia", + "pt_BR": "Letônia", + "sr-Cyrl": "Летонија", + "sr-Latn": "Letonija", + "zh_TW": "拉托維亞", + "tr": "Letonya", + "ro": "Letonia", + "ar": "لاتفيا", + "fa": "لتونی", + "yue": "拉脫維亞" + }, + flag: "🇱🇻", + code: "LV", + dialCode: "371", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lebanon", + nameTranslations: { + "sk": "Libanon", + "se": "Libanon", + "pl": "Liban", + "no": "Libanon", + "ja": "レバノン", + "it": "Libano", + "zh": "黎巴嫩", + "nl": "Libanon", + "de": "Libanon", + "fr": "Liban", + "es": "Líbano", + "en": "Lebanon", + "pt_BR": "Líbano", + "sr-Cyrl": "Либан", + "sr-Latn": "Liban", + "zh_TW": "黎巴嫩", + "tr": "Lübnan", + "ro": "Liban", + "ar": "لبنان", + "fa": "لبنان", + "yue": "黎巴嫩" + }, + flag: "🇱🇧", + code: "LB", + dialCode: "961", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Lesotho", + nameTranslations: { + "sk": "Lesotho", + "se": "Lesotho", + "pl": "Lesotho", + "no": "Lesotho", + "ja": "レソト", + "it": "Lesotho", + "zh": "莱索托", + "nl": "Lesotho", + "de": "Lesotho", + "fr": "Lesotho", + "es": "Lesoto", + "en": "Lesotho", + "pt_BR": "Lesoto", + "sr-Cyrl": "Лесото", + "sr-Latn": "Lesoto", + "zh_TW": "賴索托", + "tr": "Lesotho", + "ro": "Lesotho", + "ar": "ليسوتو", + "fa": "لسوتو", + "yue": "萊索托" + }, + flag: "🇱🇸", + code: "LS", + dialCode: "266", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Liberia", + nameTranslations: { + "sk": "Libéria", + "se": "Liberia", + "pl": "Liberia", + "no": "Liberia", + "ja": "リベリア", + "it": "Liberia", + "zh": "利比里亚", + "nl": "Liberia", + "de": "Liberia", + "fr": "Libéria", + "es": "Liberia", + "en": "Liberia", + "pt_BR": "Libéria", + "sr-Cyrl": "Либерија", + "sr-Latn": "Liberija", + "zh_TW": "賴比瑞亞", + "tr": "Liberya", + "ro": "Liberia", + "ar": "ليبيريا", + "fa": "لیبریا", + "yue": "利比里亞" + }, + flag: "🇱🇷", + code: "LR", + dialCode: "231", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Libyan Arab Jamahiriya", + nameTranslations: { + "sk": "Líbya", + "se": "Libya", + "pl": "Libia", + "no": "Libya", + "ja": "リビア", + "it": "Libia", + "zh": "利比亚", + "nl": "Libië", + "de": "Libyen", + "fr": "Libye", + "es": "Libia", + "en": "Libya", + "pt_BR": "Líbia", + "sr-Cyrl": "Либија", + "sr-Latn": "Libija", + "zh_TW": "利比亞", + "tr": "Libya", + "ro": "Libia", + "ar": "ليبيا", + "fa": "لیبی", + "yue": "利比亞" + }, + flag: "🇱🇾", + code: "LY", + dialCode: "218", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Liechtenstein", + nameTranslations: { + "sk": "Lichtenštajnsko", + "se": "Liechtenstein", + "pl": "Liechtenstein", + "no": "Liechtenstein", + "ja": "リヒテンシュタイン", + "it": "Liechtenstein", + "zh": "列支敦士登", + "nl": "Liechtenstein", + "de": "Liechtenstein", + "fr": "Liechtenstein", + "es": "Liechtenstein", + "en": "Liechtenstein", + "pt_BR": "Liechtenstein", + "sr-Cyrl": "Лихтенштајн", + "sr-Latn": "Lihtenštajn", + "zh_TW": "列支敦斯登", + "tr": "Lihtenştayn", + "ro": "Liechtenstein", + "ar": "ليختنشتاين", + "fa": "لیختن‌اشتاین", + "yue": "列支敦士登" + }, + flag: "🇱🇮", + code: "LI", + dialCode: "423", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Lithuania", + nameTranslations: { + "sk": "Litva", + "se": "Lietuva", + "pl": "Litwa", + "no": "Litauen", + "ja": "リトアニア", + "it": "Lituania", + "zh": "立陶宛", + "nl": "Litouwen", + "de": "Litauen", + "fr": "Lituanie", + "es": "Lituania", + "en": "Lithuania", + "pt_BR": "Lituânia", + "sr-Cyrl": "Литванија", + "sr-Latn": "Litvanija", + "zh_TW": "立陶宛", + "tr": "Litvanya", + "ro": "Lituania", + "ar": "ليتوانيا", + "fa": "لیتوانی", + "yue": "立陶宛" + }, + flag: "🇱🇹", + code: "LT", + dialCode: "370", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Luxembourg", + nameTranslations: { + "sk": "Luxembursko", + "se": "Luxembourg", + "pl": "Luksemburg", + "no": "Luxemburg", + "ja": "ルクセンブルク", + "it": "Lussemburgo", + "zh": "卢森堡", + "nl": "Luxemburg", + "de": "Luxemburg", + "fr": "Luxembourg", + "es": "Luxemburgo", + "en": "Luxembourg", + "pt_BR": "Luxemburgo", + "sr-Cyrl": "Луксенбург", + "sr-Latn": "Luksenburg", + "zh_TW": "盧森堡", + "tr": "Lüksemburg", + "ro": "Luxemburg", + "ar": "لوكسمبورغ", + "fa": "لوکزامبورگ", + "yue": "盧森堡" + }, + flag: "🇱🇺", + code: "LU", + dialCode: "352", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Macao", + nameTranslations: { + "sk": "Macao – OAO Číny", + "se": "Makáo", + "pl": "SRA Makau (Chiny)", + "no": "Macao S.A.R. Kina", + "ja": "中華人民共和国マカオ特別行政区", + "it": "RAS di Macao", + "zh": "中国澳门特别行政区", + "nl": "Macau SAR van China", + "de": "Sonderverwaltungsregion Macau", + "fr": "R.A.S. chinoise de Macao", + "es": "RAE de Macao (China)", + "en": "Macao SAR China", + "pt_BR": "RAE de Macau China", + "sr-Cyrl": "Макао", + "sr-Latn": "Makao", + "zh_TW": "澳門", + "tr": "Makao", + "ro": "Macao", + "ar": "ماكاو", + "fa": "ماكائو", + "yue": "澳門" + }, + flag: "🇲🇴", + code: "MO", + dialCode: "853", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Macedonia", + nameTranslations: { + "sk": "Severné Macedónsko", + "se": "North Macedonia", + "pl": "Macedonia Północna", + "no": "Nord-Makedonia", + "ja": "北マケドニア", + "it": "Macedonia del Nord", + "zh": "北马其顿", + "nl": "Noord-Macedonië", + "de": "Nordmazedonien", + "fr": "Macédoine du Nord", + "es": "Macedonia del Norte", + "en": "North Macedonia", + "pt_BR": "Macedônia do Norte", + "sr-Cyrl": "Северна Македонија", + "sr-Latn": "Severna Makedonija", + "zh_TW": "北馬其頓", + "tr": "Kuzey Makedonya", + "ro": "Macedonia de Nord", + "ar": "مقدونيا", + "fa": "مقدونیه", + "yue": "馬其頓(前南斯拉夫共和國)" + }, + flag: "🇲🇰", + code: "MK", + dialCode: "389", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Madagascar", + nameTranslations: { + "sk": "Madagaskar", + "se": "Madagaskar", + "pl": "Madagaskar", + "no": "Madagaskar", + "ja": "マダガスカル", + "it": "Madagascar", + "zh": "马达加斯加", + "nl": "Madagaskar", + "de": "Madagaskar", + "fr": "Madagascar", + "es": "Madagascar", + "en": "Madagascar", + "pt_BR": "Madagáscar", + "sr-Cyrl": "Мадагаскар", + "sr-Latn": "Madagaskar", + "zh_TW": "馬達加斯加", + "tr": "Madagaskar", + "ro": "Madagascar", + "ar": "مدغشقر", + "fa": "ماداگاسکار", + "yue": "馬達加斯加" + }, + flag: "🇲🇬", + code: "MG", + dialCode: "261", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Malawi", + nameTranslations: { + "sk": "Malawi", + "se": "Malawi", + "pl": "Malawi", + "no": "Malawi", + "ja": "マラウイ", + "it": "Malawi", + "zh": "马拉维", + "nl": "Malawi", + "de": "Malawi", + "fr": "Malawi", + "es": "Malaui", + "en": "Malawi", + "pt_BR": "Malawi", + "sr-Cyrl": "Малави", + "sr-Latn": "Malavi", + "zh_TW": "馬拉威", + "tr": "Malavi", + "ro": "Malawi", + "ar": "مالاوي", + "fa": "مالاوی", + "yue": "馬拉維" + }, + flag: "🇲🇼", + code: "MW", + dialCode: "265", + minLength: 7, + maxLength: 9, + ), + Country( + name: "Malaysia", + nameTranslations: { + "sk": "Malajzia", + "se": "Malesia", + "pl": "Malezja", + "no": "Malaysia", + "ja": "マレーシア", + "it": "Malaysia", + "zh": "马来西亚", + "nl": "Maleisië", + "de": "Malaysia", + "fr": "Malaisie", + "es": "Malasia", + "en": "Malaysia", + "pt_BR": "Malásia", + "sr-Cyrl": "Малезија", + "sr-Latn": "Malezija", + "zh_TW": "馬來西亞", + "tr": "Malezya", + "ro": "Malaezia", + "ar": "ماليزيا", + "fa": "مالزی", + "yue": "馬來西亞" + }, + flag: "🇲🇾", + code: "MY", + dialCode: "60", + minLength: 9, + maxLength: 10, + ), + Country( + name: "Maldives", + nameTranslations: { + "sk": "Maldivy", + "se": "Malediivvat", + "pl": "Malediwy", + "no": "Maldivene", + "ja": "モルディブ", + "it": "Maldive", + "zh": "马尔代夫", + "nl": "Maldiven", + "de": "Malediven", + "fr": "Maldives", + "es": "Maldivas", + "en": "Maldives", + "pt_BR": "Maldivas", + "sr-Cyrl": "Малдиви", + "sr-Latn": "Maldivi", + "zh_TW": "馬爾地夫", + "tr": "Maldivler", + "ro": "Maldive", + "ar": "جزر المالديف", + "fa": "مالدیو", + "yue": "馬爾代夫" + }, + flag: "🇲🇻", + code: "MV", + dialCode: "960", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Mali", + nameTranslations: { + "sk": "Mali", + "se": "Mali", + "pl": "Mali", + "no": "Mali", + "ja": "マリ", + "it": "Mali", + "zh": "马里", + "nl": "Mali", + "de": "Mali", + "fr": "Mali", + "es": "Mali", + "en": "Mali", + "pt_BR": "Mali", + "sr-Cyrl": "Мали", + "sr-Latn": "Mali", + "zh_TW": "馬里", + "tr": "Mali", + "ro": "Mali", + "ar": "مالي", + "fa": "مالی", + "yue": "馬里" + }, + flag: "🇲🇱", + code: "ML", + dialCode: "223", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Malta", + nameTranslations: { + "sk": "Malta", + "se": "Málta", + "pl": "Malta", + "no": "Malta", + "ja": "マルタ", + "it": "Malta", + "zh": "马耳他", + "nl": "Malta", + "de": "Malta", + "fr": "Malte", + "es": "Malta", + "en": "Malta", + "pt_BR": "Malta", + "sr-Cyrl": "Малта", + "sr-Latn": "Malta", + "zh_TW": "馬爾他", + "tr": "Malta", + "ro": "Malta", + "ar": "مالطا", + "fa": "مالت", + "yue": "馬耳他" + }, + flag: "🇲🇹", + code: "MT", + dialCode: "356", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Marshall Islands", + nameTranslations: { + "sk": "Marshallove ostrovy", + "se": "Marshallsullot", + "pl": "Wyspy Marshalla", + "no": "Marshalløyene", + "ja": "マーシャル諸島", + "it": "Isole Marshall", + "zh": "马绍尔群岛", + "nl": "Marshalleilanden", + "de": "Marshallinseln", + "fr": "Îles Marshall", + "es": "Islas Marshall", + "en": "Marshall Islands", + "pt_BR": "Ilhas Marshall", + "sr-Cyrl": "Маршалска Острва", + "sr-Latn": "Maršalska Ostrva", + "zh_TW": "馬紹爾群島", + "tr": "Marshall Adaları", + "ro": "Insulele Marshall", + "ar": "جزر مارشال", + "fa": "جزایر مارشال", + "yue": "馬紹爾群島" + }, + flag: "🇲🇭", + code: "MH", + dialCode: "692", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Martinique", + nameTranslations: { + "sk": "Martinik", + "se": "Martinique", + "pl": "Martynika", + "no": "Martinique", + "ja": "マルティニーク", + "it": "Martinica", + "zh": "马提尼克", + "nl": "Martinique", + "de": "Martinique", + "fr": "Martinique", + "es": "Martinica", + "en": "Martinique", + "pt_BR": "Martinica", + "sr-Cyrl": "Мартиник", + "sr-Latn": "Martinik", + "zh_TW": "馬丁尼克", + "tr": "Martinique", + "ro": "Martinica", + "ar": "مارتينيك", + "fa": "مارتینیک", + "yue": "马提尼克" + }, + flag: "🇲🇶", + code: "MQ", + dialCode: "596", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Mauritania", + nameTranslations: { + "sk": "Mauritánia", + "se": "Mauretánia", + "pl": "Mauretania", + "no": "Mauritania", + "ja": "モーリタニア", + "it": "Mauritania", + "zh": "毛里塔尼亚", + "nl": "Mauritanië", + "de": "Mauretanien", + "fr": "Mauritanie", + "es": "Mauritania", + "en": "Mauritania", + "pt_BR": "Mauritânia", + "sr-Cyrl": "Мауританија", + "sr-Latn": "Mauritanija", + "zh_TW": "茅利塔尼亞", + "tr": "Moritanya", + "ro": "Mauritania", + "ar": "موريتانيا", + "fa": "موریتانی", + "yue": "毛里塔尼亞" + }, + flag: "🇲🇷", + code: "MR", + dialCode: "222", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Mauritius", + nameTranslations: { + "sk": "Maurícius", + "se": "Mauritius", + "pl": "Mauritius", + "no": "Mauritius", + "ja": "モーリシャス", + "it": "Mauritius", + "zh": "毛里求斯", + "nl": "Mauritius", + "de": "Mauritius", + "fr": "Maurice", + "es": "Mauricio", + "en": "Mauritius", + "pt_BR": "Maurício", + "sr-Cyrl": "Маурицијус", + "sr-Latn": "Mauricijus", + "zh_TW": "模里西斯", + "tr": "Mauritius", + "ro": "Mauritius", + "ar": "موريشيوس", + "fa": "موریس", + "yue": "毛里求斯" + }, + flag: "🇲🇺", + code: "MU", + dialCode: "230", + minLength: 7, + maxLength: 8, + ), + Country( + name: "Mayotte", + nameTranslations: { + "sk": "Mayotte", + "se": "Mayotte", + "pl": "Majotta", + "no": "Mayotte", + "ja": "マヨット", + "it": "Mayotte", + "zh": "马约特", + "nl": "Mayotte", + "de": "Mayotte", + "fr": "Mayotte", + "es": "Mayotte", + "en": "Mayotte", + "pt_BR": "Mayotte", + "sr-Cyrl": "Мајота", + "sr-Latn": "Majota", + "zh_TW": "馬約特", + "tr": "Mayotte", + "ro": "Mayotte", + "ar": "مايوت", + "fa": "مایوت", + "yue": "馬約特" + }, + flag: "🇾🇹", + code: "YT", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mexico", + nameTranslations: { + "sk": "Mexiko", + "se": "Meksiko", + "pl": "Meksyk", + "no": "Mexico", + "ja": "メキシコ", + "it": "Messico", + "zh": "墨西哥", + "nl": "Mexico", + "de": "Mexiko", + "fr": "Mexique", + "es": "México", + "en": "Mexico", + "pt_BR": "México", + "sr-Cyrl": "Мексико", + "sr-Latn": "Meksiko", + "zh_TW": "墨西哥", + "tr": "Meksika", + "ro": "Mexic", + "ar": "المكسيك", + "fa": "مکزیک", + "yue": "墨西哥" + }, + flag: "🇲🇽", + code: "MX", + dialCode: "52", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Micronesia, Federated States of Micronesia", + nameTranslations: { + "sk": "Mikronézia", + "se": "Mikronesia", + "pl": "Mikronezja", + "no": "Mikronesiaføderasjonen", + "ja": "ミクロネシア連邦", + "it": "Micronesia", + "zh": "密克罗尼西亚", + "nl": "Micronesia", + "de": "Mikronesien", + "fr": "États fédérés de Micronésie", + "es": "Micronesia", + "en": "Micronesia", + "pt_BR": "Micronésia", + "sr-Cyrl": "Микронезија", + "sr-Latn": "Mikronezija", + "zh_TW": "密克羅尼西亞", + "tr": "Mikronezya", + "ro": "Micronezia", + "ar": "ولايات ميكرونيسيا المتحدة", + "fa": "ایالات فدرال میکرونزی", + "yue": "密克罗尼西亚(聯邦)" + }, + flag: "🇫🇲", + code: "FM", + dialCode: "691", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Moldova", + nameTranslations: { + "sk": "Moldavsko", + "se": "Moldávia", + "pl": "Mołdawia", + "no": "Moldova", + "ja": "モルドバ", + "it": "Moldavia", + "zh": "摩尔多瓦", + "nl": "Moldavië", + "de": "Republik Moldau", + "fr": "Moldavie", + "es": "Moldavia", + "en": "Moldova", + "pt_BR": "Moldova", + "sr-Cyrl": "Молдавија", + "sr-Latn": "Moldavija", + "zh_TW": "摩爾多瓦", + "tr": "Moldova", + "ro": "Moldova", + "ar": "مولدوفا", + "fa": "مولداوی", + "yue": "摩爾多瓦(共和國)" + }, + flag: "🇲🇩", + code: "MD", + dialCode: "373", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Monaco", + nameTranslations: { + "sk": "Monako", + "se": "Monaco", + "pl": "Monako", + "no": "Monaco", + "ja": "モナコ", + "it": "Monaco", + "zh": "摩纳哥", + "nl": "Monaco", + "de": "Monaco", + "fr": "Monaco", + "es": "Mónaco", + "en": "Monaco", + "pt_BR": "Mônaco", + "sr-Cyrl": "Монако", + "sr-Latn": "Monako", + "zh_TW": "摩納哥", + "tr": "Monako", + "ro": "Monaco", + "ar": "موناكو", + "fa": "موناكو", + "yue": "摩納哥" + }, + flag: "🇲🇨", + code: "MC", + dialCode: "377", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mongolia", + nameTranslations: { + "sk": "Mongolsko", + "se": "Mongolia", + "pl": "Mongolia", + "no": "Mongolia", + "ja": "モンゴル", + "it": "Mongolia", + "zh": "蒙古", + "nl": "Mongolië", + "de": "Mongolei", + "fr": "Mongolie", + "es": "Mongolia", + "en": "Mongolia", + "pt_BR": "Mongólia", + "sr-Cyrl": "Монголија", + "sr-Latn": "Mongolija", + "zh_TW": "蒙古", + "tr": "Moğolistan", + "ro": "Mongolia", + "ar": "منغوليا", + "fa": "مغولستان", + "yue": "蒙古" + }, + flag: "🇲🇳", + code: "MN", + dialCode: "976", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Montenegro", + nameTranslations: { + "sk": "Čierna Hora", + "se": "Montenegro", + "pl": "Czarnogóra", + "no": "Montenegro", + "ja": "モンテネグロ", + "it": "Montenegro", + "zh": "黑山", + "nl": "Montenegro", + "de": "Montenegro", + "fr": "Monténégro", + "es": "Montenegro", + "en": "Montenegro", + "pt_BR": "Montenegro", + "sr-Cyrl": "Црна Гора", + "sr-Latn": "Crna Gora", + "zh_TW": "蒙特內哥羅", + "tr": "Karadağ", + "ro": "Muntenegru", + "ar": "الجبل الأسود", + "fa": "مونته‌نگرو", + "yue": "黑山" + }, + flag: "🇲🇪", + code: "ME", + dialCode: "382", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Montserrat", + nameTranslations: { + "sk": "Montserrat", + "se": "Montserrat", + "pl": "Montserrat", + "no": "Montserrat", + "ja": "モントセラト", + "it": "Montserrat", + "zh": "蒙特塞拉特", + "nl": "Montserrat", + "de": "Montserrat", + "fr": "Montserrat", + "es": "Montserrat", + "en": "Montserrat", + "pt_BR": "Montserrat", + "sr-Cyrl": "Монтсерат", + "sr-Latn": "Montserat", + "zh_TW": "蒙哲臘", + "tr": "Montserrat", + "ro": "Montserrat", + "ar": "مونتسرات", + "fa": "مونتسرات", + "yue": "蒙特塞拉特" + }, + flag: "🇲🇸", + code: "MS", + dialCode: "1664", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Morocco", + nameTranslations: { + "sk": "Maroko", + "se": "Marokko", + "pl": "Maroko", + "no": "Marokko", + "ja": "モロッコ", + "it": "Marocco", + "zh": "摩洛哥", + "nl": "Marokko", + "de": "Marokko", + "fr": "Maroc", + "es": "Marruecos", + "en": "Morocco", + "pt_BR": "Marrocos", + "sr-Cyrl": "Мароко", + "sr-Latn": "Maroko", + "zh_TW": "摩洛哥", + "tr": "Fas", + "ro": "Maroc", + "ar": "المغرب", + "fa": "مراکش", + "yue": "摩洛哥" + }, + flag: "🇲🇦", + code: "MA", + dialCode: "212", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Mozambique", + nameTranslations: { + "sk": "Mozambik", + "se": "Mosambik", + "pl": "Mozambik", + "no": "Mosambik", + "ja": "モザンビーク", + "it": "Mozambico", + "zh": "莫桑比克", + "nl": "Mozambique", + "de": "Mosambik", + "fr": "Mozambique", + "es": "Mozambique", + "en": "Mozambique", + "pt_BR": "Moçambique", + "sr-Cyrl": "Мозамбик", + "sr-Latn": "Mozambik", + "zh_TW": "莫三比克", + "tr": "Mozambik", + "ro": "Mozambic", + "ar": "موزمبيق", + "fa": "موزامبیک", + "yue": "莫桑比克" + }, + flag: "🇲🇿", + code: "MZ", + dialCode: "258", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Myanmar", + nameTranslations: { + "sk": "Mjanmarsko", + "se": "Burma", + "pl": "Mjanma (Birma)", + "no": "Myanmar (Burma)", + "ja": "ミャンマー (ビルマ)", + "it": "Myanmar (Birmania)", + "zh": "缅甸", + "nl": "Myanmar (Birma)", + "de": "Myanmar", + "fr": "Myanmar (Birmanie)", + "es": "Myanmar (Birmania)", + "en": "Myanmar (Burma)", + "pt_BR": "Mianmar (Birmânia)", + "sr-Cyrl": "Мјанмар (Бурма)", + "sr-Latn": "Mjanmar (Burma)", + "zh_TW": "緬甸", + "tr": "Myanmar", + "ro": "Myanmar", + "ar": "ميانمار", + "fa": "میانمار", + "yue": "緬甸" + }, + flag: "🇲🇲", + code: "MM", + dialCode: "95", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Namibia", + nameTranslations: { + "sk": "Namíbia", + "se": "Namibia", + "pl": "Namibia", + "no": "Namibia", + "ja": "ナミビア", + "it": "Namibia", + "zh": "纳米比亚", + "nl": "Namibië", + "de": "Namibia", + "fr": "Namibie", + "es": "Namibia", + "en": "Namibia", + "pt_BR": "Namibia", + "sr-Cyrl": "Намибија", + "sr-Latn": "Namibija", + "zh_TW": "納米比亞", + "tr": "Namibya", + "ro": "Namibia", + "ar": "ناميبيا", + "fa": "نامیبیا", + "yue": "納米比亞" + }, + flag: "🇳🇦", + code: "NA", + dialCode: "264", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nauru", + nameTranslations: { + "sk": "Nauru", + "se": "Nauru", + "pl": "Nauru", + "no": "Nauru", + "ja": "ナウル", + "it": "Nauru", + "zh": "瑙鲁", + "nl": "Nauru", + "de": "Nauru", + "fr": "Nauru", + "es": "Nauru", + "en": "Nauru", + "pt_BR": "Nauru", + "sr-Cyrl": "Науру", + "sr-Latn": "Nauru", + "zh_TW": "諾魯", + "tr": "Nauru", + "ro": "Nauru", + "ar": "ناورو", + "fa": "نائورو", + "yue": "瑙魯" + }, + flag: "🇳🇷", + code: "NR", + dialCode: "674", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Nepal", + nameTranslations: { + "sk": "Nepál", + "se": "Nepal", + "pl": "Nepal", + "no": "Nepal", + "ja": "ネパール", + "it": "Nepal", + "zh": "尼泊尔", + "nl": "Nepal", + "de": "Nepal", + "fr": "Népal", + "es": "Nepal", + "en": "Nepal", + "pt_BR": "Nepal", + "sr-Cyrl": "Непал", + "sr-Latn": "Nepal", + "zh_TW": "尼泊爾", + "tr": "Nepal", + "ro": "Nepal", + "ar": "نيبال", + "fa": "نپال", + "yue": "尼泊爾" + }, + flag: "🇳🇵", + code: "NP", + dialCode: "977", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Netherlands", + nameTranslations: { + "sk": "Holandsko", + "se": "Vuolleeatnamat", + "pl": "Holandia", + "no": "Nederland", + "ja": "オランダ", + "it": "Paesi Bassi", + "zh": "荷兰", + "nl": "Nederland", + "de": "Niederlande", + "fr": "Pays-Bas", + "es": "Países Bajos", + "en": "Netherlands", + "pt_BR": "Países Baixos", + "sr-Cyrl": "Холандија", + "sr-Latn": "Holandija", + "zh_TW": "荷蘭", + "tr": "Hollanda", + "ro": "Olanda", + "ar": "هولندا", + "fa": "هلند", + "yue": "荷蘭" + }, + flag: "🇳🇱", + code: "NL", + dialCode: "31", + minLength: 9, + maxLength: 9, + ), + Country( + name: "New Caledonia", + nameTranslations: { + "sk": "Nová Kaledónia", + "se": "Ođđa-Kaledonia", + "pl": "Nowa Kaledonia", + "no": "Ny-Caledonia", + "ja": "ニューカレドニア", + "it": "Nuova Caledonia", + "zh": "新喀里多尼亚", + "nl": "Nieuw-Caledonië", + "de": "Neukaledonien", + "fr": "Nouvelle-Calédonie", + "es": "Nueva Caledonia", + "en": "New Caledonia", + "pt_BR": "Nova Caledônia", + "sr-Cyrl": "Нова Каледонија", + "sr-Latn": "Nova Kaledonija", + "zh_TW": "新喀里多尼亞", + "tr": "Yeni Kaledonya", + "ro": "Noua Caledonie", + "ar": "كاليدونيا الجديدة", + "fa": "کالدونیای جدید", + "yue": "新喀里多尼亚" + }, + flag: "🇳🇨", + code: "NC", + dialCode: "687", + minLength: 6, + maxLength: 6, + ), + Country( + name: "New Zealand", + nameTranslations: { + "sk": "Nový Zéland", + "se": "Ođđa-Selánda", + "pl": "Nowa Zelandia", + "no": "New Zealand", + "ja": "ニュージーランド", + "it": "Nuova Zelanda", + "zh": "新西兰", + "nl": "Nieuw-Zeeland", + "de": "Neuseeland", + "fr": "Nouvelle-Zélande", + "es": "Nueva Zelanda", + "en": "New Zealand", + "pt_BR": "Nova Zelândia", + "sr-Cyrl": "Нови Зеланд", + "sr-Latn": "Novi Zeland", + "zh_TW": "紐西蘭", + "tr": "Yeni Zelanda", + "ro": "Noua Zeelandă", + "ar": "نيوزيلندا", + "fa": "نیوزلند", + "yue": "紐西蘭" + }, + flag: "🇳🇿", + code: "NZ", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Nicaragua", + nameTranslations: { + "sk": "Nikaragua", + "se": "Nicaragua", + "pl": "Nikaragua", + "no": "Nicaragua", + "ja": "ニカラグア", + "it": "Nicaragua", + "zh": "尼加拉瓜", + "nl": "Nicaragua", + "de": "Nicaragua", + "fr": "Nicaragua", + "es": "Nicaragua", + "en": "Nicaragua", + "pt_BR": "Nicarágua", + "sr-Cyrl": "Никарагва", + "sr-Latn": "Nikaragva", + "zh_TW": "尼加拉瓜", + "tr": "Nikaragua", + "ro": "Nicaragua", + "ar": "نيكاراغوا", + "fa": "نیکاراگوئه", + "yue": "尼加拉瓜" + }, + flag: "🇳🇮", + code: "NI", + dialCode: "505", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Niger", + nameTranslations: { + "sk": "Niger", + "se": "Niger", + "pl": "Niger", + "no": "Niger", + "ja": "ニジェール", + "it": "Niger", + "zh": "尼日尔", + "nl": "Niger", + "de": "Niger", + "fr": "Niger", + "es": "Níger", + "en": "Niger", + "pt_BR": "Níger", + "sr-Cyrl": "Нигер", + "sr-Latn": "Niger", + "zh_TW": "尼日爾", + "tr": "Nijer", + "ro": "Niger", + "ar": "النيجر", + "fa": "نیجر", + "yue": "尼日爾" + }, + flag: "🇳🇪", + code: "NE", + dialCode: "227", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Nigeria", + nameTranslations: { + "sk": "Nigéria", + "se": "Nigeria", + "pl": "Nigeria", + "no": "Nigeria", + "ja": "ナイジェリア", + "it": "Nigeria", + "zh": "尼日利亚", + "nl": "Nigeria", + "de": "Nigeria", + "fr": "Nigéria", + "es": "Nigeria", + "en": "Nigeria", + "pt_BR": "Nigéria", + "sr-Cyrl": "Нигерија", + "sr-Latn": "Nigerija", + "zh_TW": "奈及利亞", + "tr": "Nijerya", + "ro": "Nigeria", + "ar": "نيجيريا", + "fa": "نیجریه", + "yue": "尼日利亞" + }, + flag: "🇳🇬", + code: "NG", + dialCode: "234", + minLength: 10, + maxLength: 11, + ), + Country( + name: "Niue", + nameTranslations: { + "sk": "Niue", + "se": "Niue", + "pl": "Niue", + "no": "Niue", + "ja": "ニウエ", + "it": "Niue", + "zh": "纽埃", + "nl": "Niue", + "de": "Niue", + "fr": "Niue", + "es": "Niue", + "en": "Niue", + "pt_BR": "Niue", + "sr-Cyrl": "Нијуе", + "sr-Latn": "Nijue", + "zh_TW": "紐埃", + "tr": "Niue", + "ro": "Niue", + "ar": "نييوي", + "fa": "نیووی", + "yue": "紐埃" + }, + flag: "🇳🇺", + code: "NU", + dialCode: "683", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Norfolk Island", + nameTranslations: { + "sk": "Norfolk", + "se": "Norfolksullot", + "pl": "Norfolk", + "no": "Norfolkøya", + "ja": "ノーフォーク島", + "it": "Isola Norfolk", + "zh": "诺福克岛", + "nl": "Norfolk", + "de": "Norfolkinsel", + "fr": "Île Norfolk", + "es": "Isla Norfolk", + "en": "Norfolk Island", + "pt_BR": "Ilha Norfolk", + "sr-Cyrl": "Острво Норфок", + "sr-Latn": "Ostrvo Norfok", + "zh_TW": "諾福克島", + "tr": "Norfolk Adası", + "ro": "Insulele Norfolk", + "ar": "جزيرة نورفولك", + "fa": "جزیره نورفک", + "yue": "诺福克岛" + }, + flag: "🇳🇫", + code: "NF", + dialCode: "672", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Northern Mariana Islands", + nameTranslations: { + "sk": "Severné Mariány", + "se": "Davvi-Mariánat", + "pl": "Mariany Północne", + "no": "Nord-Marianene", + "ja": "北マリアナ諸島", + "it": "Isole Marianne settentrionali", + "zh": "北马里亚纳群岛", + "nl": "Noordelijke Marianen", + "de": "Nördliche Marianen", + "fr": "Îles Mariannes du Nord", + "es": "Islas Marianas del Norte", + "en": "Northern Mariana Islands", + "pt_BR": "Ilhas Marianas do Norte", + "sr-Cyrl": "Северна Маријанска Острва", + "sr-Latn": "Severna Marijanska Ostrva", + "zh_TW": "北馬利安納群島", + "tr": "Kuzey Mariana Adaları", + "ro": "Insulelor Mariane de Nord", + "ar": "جزر ماريانا الشمالية", + "fa": "جزایر ماریانای شمالی", + "yue": "北馬里亞納群島" + }, + flag: "🇲🇵", + code: "MP", + dialCode: "1670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Norway", + nameTranslations: { + "sk": "Nórsko", + "se": "Norga", + "pl": "Norwegia", + "no": "Norge", + "ja": "ノルウェー", + "it": "Norvegia", + "zh": "挪威", + "nl": "Noorwegen", + "de": "Norwegen", + "fr": "Norvège", + "es": "Noruega", + "en": "Norway", + "pt_BR": "Noruega", + "sr-Cyrl": "Норвешка", + "sr-Latn": "Norveška", + "zh_TW": "挪威", + "tr": "Norveç", + "ro": "Norvegia", + "ar": "النرويج", + "fa": "نروژ", + "yue": "挪威" + }, + flag: "🇳🇴", + code: "NO", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Oman", + nameTranslations: { + "sk": "Omán", + "se": "Oman", + "pl": "Oman", + "no": "Oman", + "ja": "オマーン", + "it": "Oman", + "zh": "阿曼", + "nl": "Oman", + "de": "Oman", + "fr": "Oman", + "es": "Omán", + "en": "Oman", + "pt_BR": "Omã", + "sr-Cyrl": "Оман", + "sr-Latn": "Oman", + "zh_TW": "阿曼", + "tr": "Umman", + "ro": "Oman", + "ar": "عمان", + "fa": "عمان", + "yue": "阿曼" + }, + flag: "🇴🇲", + code: "OM", + dialCode: "968", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Pakistan", + nameTranslations: { + "sk": "Pakistan", + "se": "Pakistan", + "pl": "Pakistan", + "no": "Pakistan", + "ja": "パキスタン", + "it": "Pakistan", + "zh": "巴基斯坦", + "nl": "Pakistan", + "de": "Pakistan", + "fr": "Pakistan", + "es": "Pakistán", + "en": "Pakistan", + "pt_BR": "Paquistão", + "sr-Cyrl": "Пакистан", + "sr-Latn": "Pakistan", + "zh_TW": "巴基斯坦", + "tr": "Pakistan", + "ro": "Pakistan", + "ar": "باكستان", + "fa": "پاکستان", + "yue": "巴基斯坦" + }, + flag: "🇵🇰", + code: "PK", + dialCode: "92", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Palau", + nameTranslations: { + "sk": "Palau", + "se": "Palau", + "pl": "Palau", + "no": "Palau", + "ja": "パラオ", + "it": "Palau", + "zh": "帕劳", + "nl": "Palau", + "de": "Palau", + "fr": "Palaos", + "es": "Palaos", + "en": "Palau", + "pt_BR": "Palau", + "sr-Cyrl": "Палау", + "sr-Latn": "Palau", + "zh_TW": "帛琉", + "tr": "Palau", + "ro": "Palau", + "ar": "بالاو", + "fa": "پالائو", + "yue": "帕劳" + }, + flag: "🇵🇼", + code: "PW", + dialCode: "680", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Palestinian Territory, Occupied", + nameTranslations: { + "sk": "Palestínske územia", + "se": "Palestina", + "pl": "Terytoria Palestyńskie", + "no": "Det palestinske området", + "ja": "パレスチナ自治区", + "it": "Territori palestinesi", + "zh": "巴勒斯坦领土", + "nl": "Palestijnse gebieden", + "de": "Palästinensische Autonomiegebiete", + "fr": "Territoires palestiniens", + "es": "Territorios Palestinos", + "en": "Palestinian Territories", + "pt_BR": "Territórios Palestinos", + "sr-Cyrl": "Палестина", + "sr-Latn": "Palestina", + "zh_TW": "巴勒斯坦", + "tr": "Filistin", + "ro": "Palestina", + "ar": "فلسطين", + "fa": "فلسطین", + "yue": "巴勒斯坦,国" + }, + flag: "🇵🇸", + code: "PS", + dialCode: "970", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Panama", + nameTranslations: { + "sk": "Panama", + "se": "Panama", + "pl": "Panama", + "no": "Panama", + "ja": "パナマ", + "it": "Panamá", + "zh": "巴拿马", + "nl": "Panama", + "de": "Panama", + "fr": "Panama", + "es": "Panamá", + "en": "Panama", + "pt_BR": "Panamá", + "sr-Cyrl": "Панама", + "sr-Latn": "Panama", + "zh_TW": "巴拿馬", + "tr": "Panama", + "ro": "Panama", + "ar": "بنما", + "fa": "پاناما", + "yue": "巴拿馬" + }, + flag: "🇵🇦", + code: "PA", + dialCode: "507", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Papua New Guinea", + nameTranslations: { + "sk": "Papua-Nová Guinea", + "se": "Papua-Ođđa-Guinea", + "pl": "Papua-Nowa Gwinea", + "no": "Papua Ny-Guinea", + "ja": "パプアニューギニア", + "it": "Papua Nuova Guinea", + "zh": "巴布亚新几内亚", + "nl": "Papoea-Nieuw-Guinea", + "de": "Papua-Neuguinea", + "fr": "Papouasie-Nouvelle-Guinée", + "es": "Papúa Nueva Guinea", + "en": "Papua New Guinea", + "pt_BR": "Papua Nova Guiné", + "sr-Cyrl": "Папуа Нова Гвинеја", + "sr-Latn": "Papua Nova Gvineja", + "zh_TW": "巴布亞新幾內亞", + "tr": "Papua Yeni Gine", + "ro": "Papua Noua Guinee", + "ar": "بابوا غينيا الجديدة", + "fa": "پاپوآ گینه نو", + "yue": "巴布亚新几内亚" + }, + flag: "🇵🇬", + code: "PG", + dialCode: "675", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Paraguay", + nameTranslations: { + "sk": "Paraguaj", + "se": "Paraguay", + "pl": "Paragwaj", + "no": "Paraguay", + "ja": "パラグアイ", + "it": "Paraguay", + "zh": "巴拉圭", + "nl": "Paraguay", + "de": "Paraguay", + "fr": "Paraguay", + "es": "Paraguay", + "en": "Paraguay", + "pt_BR": "Paraguai", + "sr-Cyrl": "Парагвај", + "sr-Latn": "Paragvaj", + "zh_TW": "巴拉圭", + "tr": "Paraguay", + "ro": "Paraguay", + "ar": "باراغواي", + "fa": "پاراگوئه", + "yue": "巴拉圭" + }, + flag: "🇵🇾", + code: "PY", + dialCode: "595", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Peru", + nameTranslations: { + "sk": "Peru", + "se": "Peru", + "pl": "Peru", + "no": "Peru", + "ja": "ペルー", + "it": "Perù", + "zh": "秘鲁", + "nl": "Peru", + "de": "Peru", + "fr": "Pérou", + "es": "Perú", + "en": "Peru", + "pt_BR": "Peru", + "sr-Cyrl": "Перу", + "sr-Latn": "Peru", + "zh_TW": "秘鲁", + "tr": "Peru", + "ro": "Peru", + "ar": "بيرو", + "fa": "پرو", + "yue": "秘魯" + }, + flag: "🇵🇪", + code: "PE", + dialCode: "51", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Philippines", + nameTranslations: { + "sk": "Filipíny", + "se": "Filippiinnat", + "pl": "Filipiny", + "no": "Filippinene", + "ja": "フィリピン", + "it": "Filippine", + "zh": "菲律宾", + "nl": "Filipijnen", + "de": "Philippinen", + "fr": "Philippines", + "es": "Filipinas", + "en": "Philippines", + "pt_BR": "Filipinas", + "sr-Cyrl": "Филипини", + "sr-Latn": "Filipini", + "zh_TW": "菲律賓", + "tr": "Filipinler", + "ro": "Filipine", + "ar": "الفلبين", + "fa": "فیلیپین", + "yue": "菲律賓" + }, + flag: "🇵🇭", + code: "PH", + dialCode: "63", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Pitcairn", + nameTranslations: { + "sk": "Pitcairnove ostrovy", + "se": "Pitcairn", + "pl": "Pitcairn", + "no": "Pitcairnøyene", + "ja": "ピトケアン諸島", + "it": "Isole Pitcairn", + "zh": "皮特凯恩群岛", + "nl": "Pitcairneilanden", + "de": "Pitcairninseln", + "fr": "Îles Pitcairn", + "es": "Islas Pitcairn", + "en": "Pitcairn Islands", + "pt_BR": "Ilhas Pitcairn", + "sr-Cyrl": "Острва Питкерн", + "sr-Latn": "Ostrva Pitkern", + "zh_TW": "皮特肯群島", + "tr": "Pitcairn Adaları", + "ro": "Insulele Pitcairn", + "ar": "جزر بيتكيرن", + "fa": "جزایر پیت‌کرن", + "yue": "皮特凱恩" + }, + flag: "🇵🇳", + code: "PN", + dialCode: "64", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Poland", + nameTranslations: { + "sk": "Poľsko", + "se": "Polen", + "pl": "Polska", + "no": "Polen", + "ja": "ポーランド", + "it": "Polonia", + "zh": "波兰", + "nl": "Polen", + "de": "Polen", + "fr": "Pologne", + "es": "Polonia", + "en": "Poland", + "pt_BR": "Polônia", + "sr-Cyrl": "Пољска", + "sr-Latn": "Poljska", + "zh_TW": "波蘭", + "tr": "Polonya", + "ro": "Polonia", + "ar": "بولندا", + "fa": "لهستان", + "yue": "波蘭" + }, + flag: "🇵🇱", + code: "PL", + dialCode: "48", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Portugal", + nameTranslations: { + "sk": "Portugalsko", + "se": "Portugála", + "pl": "Portugalia", + "no": "Portugal", + "ja": "ポルトガル", + "it": "Portogallo", + "zh": "葡萄牙", + "nl": "Portugal", + "de": "Portugal", + "fr": "Portugal", + "es": "Portugal", + "en": "Portugal", + "pt_BR": "Portugal", + "sr-Cyrl": "Португалија", + "sr-Latn": "Portugalija", + "zh_TW": "葡萄牙", + "tr": "Portekiz", + "ro": "Portugalia", + "ar": "البرتغال", + "fa": "پرتغال", + "yue": "葡萄牙" + }, + flag: "🇵🇹", + code: "PT", + dialCode: "351", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Puerto Rico", + nameTranslations: { + "sk": "Portoriko", + "se": "Puerto Rico", + "pl": "Portoryko", + "no": "Puerto Rico", + "ja": "プエルトリコ", + "it": "Portorico", + "zh": "波多黎各", + "nl": "Puerto Rico", + "de": "Puerto Rico", + "fr": "Porto Rico", + "es": "Puerto Rico", + "en": "Puerto Rico", + "pt_BR": "Porto Rico", + "sr-Cyrl": "Порто Рико", + "sr-Latn": "Porto Riko", + "zh_TW": "波多黎各", + "tr": "Porto Riko", + "ro": "Puerto Rico", + "ar": "بورتوريكو", + "fa": "پورتوریکو", + "yue": "波多黎各" + }, + flag: "🇵🇷", + code: "PR", + dialCode: "1939", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Qatar", + nameTranslations: { + "sk": "Katar", + "se": "Qatar", + "pl": "Katar", + "no": "Qatar", + "ja": "カタール", + "it": "Qatar", + "zh": "卡塔尔", + "nl": "Qatar", + "de": "Katar", + "fr": "Qatar", + "es": "Catar", + "en": "Qatar", + "pt_BR": "Catar", + "sr-Cyrl": "Катар", + "sr-Latn": "Katar", + "zh_TW": "卡達", + "tr": "Katar", + "ro": "Qatar", + "ar": "قطر", + "fa": "قطر", + "yue": "卡塔爾" + }, + flag: "🇶🇦", + code: "QA", + dialCode: "974", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Romania", + nameTranslations: { + "sk": "Rumunsko", + "se": "Románia", + "pl": "Rumunia", + "no": "Romania", + "ja": "ルーマニア", + "it": "Romania", + "zh": "罗马尼亚", + "nl": "Roemenië", + "de": "Rumänien", + "fr": "Roumanie", + "es": "Rumanía", + "en": "Romania", + "pt_BR": "Romênia", + "sr-Cyrl": "Румунија", + "sr-Latn": "Rumunija", + "zh_TW": "羅馬尼亞", + "tr": "Romanya", + "ro": "România", + "ar": "رومانيا", + "fa": "رومانی", + "yue": "羅馬尼亞" + }, + flag: "🇷🇴", + code: "RO", + dialCode: "40", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Russia", + nameTranslations: { + "sk": "Rusko", + "se": "Ruošša", + "pl": "Rosja", + "no": "Russland", + "ja": "ロシア", + "it": "Russia", + "zh": "俄罗斯", + "nl": "Rusland", + "de": "Russland", + "fr": "Russie", + "es": "Rusia", + "en": "Russia", + "pt_BR": "Rússia", + "sr-Cyrl": "Русија", + "sr-Latn": "Rusija", + "zh_TW": "俄羅斯", + "tr": "Rusya", + "ro": "Rusia", + "ar": "روسيا", + "fa": "روسیه", + "yue": "俄儸斯聯邦" + }, + flag: "🇷🇺", + code: "RU", + dialCode: "7", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Rwanda", + nameTranslations: { + "sk": "Rwanda", + "se": "Rwanda", + "pl": "Rwanda", + "no": "Rwanda", + "ja": "ルワンダ", + "it": "Ruanda", + "zh": "卢旺达", + "nl": "Rwanda", + "de": "Ruanda", + "fr": "Rwanda", + "es": "Ruanda", + "en": "Rwanda", + "pt_BR": "Ruanda", + "sr-Cyrl": "Руанда", + "sr-Latn": "Ruanda", + "zh_TW": "盧安達", + "tr": "Ruanda", + "ro": "Rwanda", + "ar": "رواندا", + "fa": "رواندا", + "yue": "盧旺達" + }, + flag: "🇷🇼", + code: "RW", + dialCode: "250", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Reunion", + nameTranslations: { + "sk": "Réunion", + "se": "Réunion", + "pl": "Reunion", + "no": "Réunion", + "ja": "レユニオン", + "it": "Riunione", + "zh": "留尼汪", + "nl": "Réunion", + "de": "Réunion", + "fr": "La Réunion", + "es": "Reunión", + "en": "Réunion", + "pt_BR": "Reunião", + "sr-Cyrl": "Реинион", + "sr-Latn": "Reinion", + "zh_TW": "留尼旺", + "tr": "La Réunion", + "ro": "La Réunion", + "ar": "لا ريونيون", + "fa": "رئونیون", + "yue": "留尼汪" + }, + flag: "🇷🇪", + code: "RE", + dialCode: "262", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Barthelemy", + nameTranslations: { + "sk": "Svätý Bartolomej", + "se": "Saint Barthélemy", + "pl": "Saint-Barthélemy", + "no": "Saint-Barthélemy", + "ja": "サン・バルテルミー", + "it": "Saint-Barthélemy", + "zh": "圣巴泰勒米", + "nl": "Saint-Barthélemy", + "de": "St. Barthélemy", + "fr": "Saint-Barthélemy", + "es": "San Bartolomé", + "en": "St. Barthélemy", + "pt_BR": "São Bartolomeu", + "sr-Cyrl": "Сент Бартелеми", + "sr-Latn": "Sent Bartelemi", + "zh_TW": "聖巴瑟米", + "tr": "Saint Barthélemy", + "ro": "Saint Barthélemy", + "ar": "سان بارتيلمي", + "fa": "سن بارتلمی", + "yue": "聖巴泰勒米" + }, + flag: "🇧🇱", + code: "BL", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Helena, Ascension and Tristan Da Cunha", + nameTranslations: { + "sk": "Svätá Helena", + "se": "Saint Helena", + "pl": "Wyspa Świętej Heleny", + "no": "St. Helena", + "ja": "セントヘレナ", + "it": "Sant'Elena", + "zh": "圣赫勒拿", + "nl": "Sint-Helena", + "de": "St. Helena", + "fr": "Sainte-Hélène", + "es": "Santa Elena", + "en": "St. Helena", + "pt_BR": "Santa Helena", + "sr-Cyrl": "Света Јелена, Асенсион и Тристан да Куња", + "sr-Latn": "Sveta Jelena, Asension i Tristan de Kunja", + "zh_TW": "聖凱倫拿島", + "tr": "Saint Helena", + "ro": "Sfânta Elena", + "ar": "سانت هيلانة وأسينشين وتريستان دا كونا", + "fa": "سنت هلن", + "yue": "圣赫勒拿、阿森松同特里斯坦·达库尼亚" + }, + flag: "🇸🇭", + code: "SH", + dialCode: "290", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Saint Kitts and Nevis", + nameTranslations: { + "sk": "Svätý Krištof a Nevis", + "se": "Saint Kitts ja Nevis", + "pl": "Saint Kitts i Nevis", + "no": "Saint Kitts og Nevis", + "ja": "セントクリストファー・ネーヴィス", + "it": "Saint Kitts e Nevis", + "zh": "圣基茨和尼维斯", + "nl": "Saint Kitts en Nevis", + "de": "St. Kitts und Nevis", + "fr": "Saint-Christophe-et-Niévès", + "es": "San Cristóbal y Nieves", + "en": "St. Kitts & Nevis", + "pt_BR": "São Cristóvão e Nevis", + "sr-Cyrl": "Сент Китс и Невис", + "sr-Latn": "Sent Kits i Nevis", + "zh_TW": "聖克里斯多福及尼維斯", + "tr": "Saint Kitts ve Nevis", + "ro": "Sfântul Kitts și Nevis", + "ar": "سانت كيتس ونيفيس", + "fa": "سنت کیتس و نویس", + "yue": "圣基茨同尼维斯" + }, + flag: "🇰🇳", + code: "KN", + dialCode: "1869", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Lucia", + nameTranslations: { + "sk": "Svätá Lucia", + "se": "Saint Lucia", + "pl": "Saint Lucia", + "no": "St. Lucia", + "ja": "セントルシア", + "it": "Saint Lucia", + "zh": "圣卢西亚", + "nl": "Saint Lucia", + "de": "St. Lucia", + "fr": "Sainte-Lucie", + "es": "Santa Lucía", + "en": "St. Lucia", + "pt_BR": "Santa Lúcia", + "sr-Cyrl": "Света Луција", + "sr-Latn": "Sveta Lucija", + "zh_TW": "聖露西亞", + "tr": "Saint Lucia", + "ro": "Sfânta Elena", + "ar": "سانت لوسيا", + "fa": "سنت لوسیا", + "yue": "聖盧西亞" + }, + flag: "🇱🇨", + code: "LC", + dialCode: "1758", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saint Martin", + nameTranslations: { + "sk": "Svätý Martin (fr.)", + "se": "Frankriikka Saint Martin", + "pl": "Saint-Martin", + "no": "Saint-Martin", + "ja": "サン・マルタン", + "it": "Saint Martin", + "zh": "法属圣马丁", + "nl": "Saint-Martin", + "de": "St. Martin", + "fr": "Saint-Martin", + "es": "San Martín", + "en": "St. Martin", + "pt_BR": "São Martinho", + "sr-Cyrl": "Свети Мартин", + "sr-Latn": "Sveti Martin", + "zh_TW": "聖馬丁", + "tr": "Saint Martin", + "ro": "Sfântul Martin", + "ar": "تجمع سان مارتين", + "fa": "سن مارتن", + "yue": "聖馬丁(法國部分)" + }, + flag: "🇲🇫", + code: "MF", + dialCode: "590", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Saint Pierre and Miquelon", + nameTranslations: { + "sk": "Saint Pierre a Miquelon", + "se": "Saint Pierre ja Miquelon", + "pl": "Saint-Pierre i Miquelon", + "no": "Saint-Pierre-et-Miquelon", + "ja": "サンピエール島・ミクロン島", + "it": "Saint-Pierre e Miquelon", + "zh": "圣皮埃尔和密克隆群岛", + "nl": "Saint-Pierre en Miquelon", + "de": "St. Pierre und Miquelon", + "fr": "Saint-Pierre-et-Miquelon", + "es": "San Pedro y Miquelón", + "en": "St. Pierre & Miquelon", + "pt_BR": "São Pedro e Miquelon", + "sr-Cyrl": "Сен Пјер и Микелон", + "sr-Latn": "Sen Pjer i Mikelon", + "zh_TW": "聖皮埃與密克隆群島", + "tr": "Saint Pierre ve Miquelon", + "ro": "Saint Pierre și Miquelon", + "ar": "سان بيير وميكلون", + "fa": "سن-پیر و میکلون", + "yue": "聖皮埃尔同米克隆" + }, + flag: "🇵🇲", + code: "PM", + dialCode: "508", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Saint Vincent and the Grenadines", + nameTranslations: { + "sk": "Svätý Vincent a Grenadíny", + "se": "Saint Vincent ja Grenadine", + "pl": "Saint Vincent i Grenadyny", + "no": "St. Vincent og Grenadinene", + "ja": "セントビンセント及びグレナディーン諸島", + "it": "Saint Vincent e Grenadine", + "zh": "圣文森特和格林纳丁斯", + "nl": "Saint Vincent en de Grenadines", + "de": "St. Vincent und die Grenadinen", + "fr": "Saint-Vincent-et-les-Grenadines", + "es": "San Vicente y las Granadinas", + "en": "St. Vincent & Grenadines", + "pt_BR": "São Vicente e Granadinas", + "sr-Cyrl": "Свети Винсент и Гренадини", + "sr-Latn": "Sveti Vinsent i Grenadini", + "zh_TW": "聖文森及格瑞那丁", + "tr": "Saint Vincent ve Grenadinler", + "ro": "Sfântul Vincențiu și Grenadinele", + "ar": "سانت فينسنت والغرينادين", + "fa": "سنت وینسنت و گرنادین‌ها", + "yue": "聖文森特同格林纳丁斯" + }, + flag: "🇻🇨", + code: "VC", + dialCode: "1784", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Samoa", + nameTranslations: { + "sk": "Samoa", + "se": "Samoa", + "pl": "Samoa", + "no": "Samoa", + "ja": "サモア", + "it": "Samoa", + "zh": "萨摩亚", + "nl": "Samoa", + "de": "Samoa", + "fr": "Samoa", + "es": "Samoa", + "en": "Samoa", + "pt_BR": "Samoa", + "sr-Cyrl": "Самоа", + "sr-Latn": "Samoa", + "zh_TW": "薩摩亞", + "tr": "Samoa", + "ro": "Samoa", + "ar": "ساموا", + "fa": "ساموآ", + "yue": "薩摩亞" + }, + flag: "🇼🇸", + code: "WS", + dialCode: "685", + minLength: 7, + maxLength: 7, + ), + Country( + name: "San Marino", + nameTranslations: { + "sk": "San Maríno", + "se": "San Marino", + "pl": "San Marino", + "no": "San Marino", + "ja": "サンマリノ", + "it": "San Marino", + "zh": "圣马力诺", + "nl": "San Marino", + "de": "San Marino", + "fr": "Saint-Marin", + "es": "San Marino", + "en": "San Marino", + "pt_BR": "San Marino", + "sr-Cyrl": "Сан Марино", + "sr-Latn": "San Marino", + "zh_TW": "聖馬利諾", + "tr": "San Marino", + "ro": "San Marino", + "ar": "سان مارينو", + "fa": "سان مارینو", + "yue": "聖馬力諾" + }, + flag: "🇸🇲", + code: "SM", + dialCode: "378", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Sao Tome and Principe", + nameTranslations: { + "sk": "Svätý Tomáš a Princov ostrov", + "se": "São Tomé ja Príncipe", + "pl": "Wyspy Świętego Tomasza i Książęca", + "no": "São Tomé og Príncipe", + "ja": "サントメ・プリンシペ", + "it": "São Tomé e Príncipe", + "zh": "圣多美和普林西比", + "nl": "Sao Tomé en Principe", + "de": "São Tomé und Príncipe", + "fr": "Sao Tomé-et-Principe", + "es": "Santo Tomé y Príncipe", + "en": "São Tomé & Príncipe", + "pt_BR": "São Tomé e Príncipe", + "sr-Cyrl": "Сао Томе и Принсипе", + "sr-Latn": "Sao Tome i Prinsipe", + "zh_TW": "聖多美普林西比", + "tr": "São Tomé ve Príncipe", + "ro": "Sao Tome şi Principe", + "ar": "ساو تومي وبرينسيب", + "fa": "سائوتومه و پرنسیپ", + "yue": "聖多美和普林西比" + }, + flag: "🇸🇹", + code: "ST", + dialCode: "239", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Saudi Arabia", + nameTranslations: { + "sk": "Saudská Arábia", + "se": "Saudi-Arábia", + "pl": "Arabia Saudyjska", + "no": "Saudi-Arabia", + "ja": "サウジアラビア", + "it": "Arabia Saudita", + "zh": "沙特阿拉伯", + "nl": "Saoedi-Arabië", + "de": "Saudi-Arabien", + "fr": "Arabie saoudite", + "es": "Arabia Saudí", + "en": "Saudi Arabia", + "pt_BR": "Arábia Saudita", + "sr-Cyrl": "Саудијска Арабија", + "sr-Latn": "Saudijska Arabija", + "zh_TW": "沙烏地阿拉", + "tr": "Suudi Arabistan", + "ro": "Arabia Saudită", + "ar": "السعودية", + "fa": "عربستان سعودی", + "yue": "沙地阿拉伯" + }, + flag: "🇸🇦", + code: "SA", + dialCode: "966", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Senegal", + nameTranslations: { + "sk": "Senegal", + "se": "Senegal", + "pl": "Senegal", + "no": "Senegal", + "ja": "セネガル", + "it": "Senegal", + "zh": "塞内加尔", + "nl": "Senegal", + "de": "Senegal", + "fr": "Sénégal", + "es": "Senegal", + "en": "Senegal", + "pt_BR": "Senegal", + "sr-Cyrl": "Сенегал", + "sr-Latn": "Senegal", + "zh_TW": "塞內加爾", + "tr": "Senegal", + "ro": "Senegal", + "ar": "السنغال", + "fa": "سنگال", + "yue": "塞內加爾" + }, + flag: "🇸🇳", + code: "SN", + dialCode: "221", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Serbia", + nameTranslations: { + "sk": "Srbsko", + "se": "Serbia", + "pl": "Serbia", + "no": "Serbia", + "ja": "セルビア", + "it": "Serbia", + "zh": "塞尔维亚", + "nl": "Servië", + "de": "Serbien", + "fr": "Serbie", + "es": "Serbia", + "en": "Serbia", + "pt_BR": "Sérvia", + "sr-Cyrl": "Србија", + "sr-Latn": "Srbija", + "zh_TW": "塞爾維亞", + "tr": "Sırbistan", + "ro": "Serbia", + "ar": "صربيا", + "fa": "صربستان", + "yue": "塞爾維亞" + }, + flag: "🇷🇸", + code: "RS", + dialCode: "381", + minLength: 12, + maxLength: 12, + ), + Country( + name: "Seychelles", + nameTranslations: { + "sk": "Seychely", + "se": "Seychellsullot", + "pl": "Seszele", + "no": "Seychellene", + "ja": "セーシェル", + "it": "Seychelles", + "zh": "塞舌尔", + "nl": "Seychellen", + "de": "Seychellen", + "fr": "Seychelles", + "es": "Seychelles", + "en": "Seychelles", + "pt_BR": "Seychelles", + "sr-Cyrl": "Сејшели", + "sr-Latn": "Sejšeli", + "zh_TW": "塞席爾", + "tr": "Seyşeller", + "ro": "Seychelles", + "ar": "سيشل", + "fa": "سیشل", + "yue": "塞舌爾" + }, + flag: "🇸🇨", + code: "SC", + dialCode: "248", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Sierra Leone", + nameTranslations: { + "sk": "Sierra Leone", + "se": "Sierra Leone", + "pl": "Sierra Leone", + "no": "Sierra Leone", + "ja": "シエラレオネ", + "it": "Sierra Leone", + "zh": "塞拉利昂", + "nl": "Sierra Leone", + "de": "Sierra Leone", + "fr": "Sierra Leone", + "es": "Sierra Leona", + "en": "Sierra Leone", + "pt_BR": "Serra Leoa", + "sr-Cyrl": "Сијера Леоне", + "sr-Latn": "Sijera Leone", + "zh_TW": "獅子山", + "tr": "Sierra Leone", + "ro": "Sierra Leone", + "ar": "سيراليون", + "fa": "سیرالئون", + "yue": "塞拉利昂" + }, + flag: "🇸🇱", + code: "SL", + dialCode: "232", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Singapore", + nameTranslations: { + "sk": "Singapur", + "se": "Singapore", + "pl": "Singapur", + "no": "Singapore", + "ja": "シンガポール", + "it": "Singapore", + "zh": "新加坡", + "nl": "Singapore", + "de": "Singapur", + "fr": "Singapour", + "es": "Singapur", + "en": "Singapore", + "pt_BR": "Cingapura", + "sr-Cyrl": "Сингапур", + "sr-Latn": "Singapur", + "zh_TW": "新加坡", + "tr": "Singapur", + "ro": "Singapore", + "ar": "سنغافورة", + "fa": "سنگاپور", + "yue": "星架坡" + }, + flag: "🇸🇬", + code: "SG", + dialCode: "65", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Slovakia", + nameTranslations: { + "sk": "Slovensko", + "se": "Slovákia", + "pl": "Słowacja", + "no": "Slovakia", + "ja": "スロバキア", + "it": "Slovacchia", + "zh": "斯洛伐克", + "nl": "Slowakije", + "de": "Slowakei", + "fr": "Slovaquie", + "es": "Eslovaquia", + "en": "Slovakia", + "pt_BR": "Eslováquia", + "sr-Cyrl": "Словачка", + "sr-Latn": "Slovačka", + "zh_TW": "斯洛伐克", + "tr": "Slovakya", + "ro": "Slovacia", + "ar": "سلوفاكيا", + "fa": "اسلواکی", + "yue": "斯洛伐克" + }, + flag: "🇸🇰", + code: "SK", + dialCode: "421", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Slovenia", + nameTranslations: { + "sk": "Slovinsko", + "se": "Slovenia", + "pl": "Słowenia", + "no": "Slovenia", + "ja": "スロベニア", + "it": "Slovenia", + "zh": "斯洛文尼亚", + "nl": "Slovenië", + "de": "Slowenien", + "fr": "Slovénie", + "es": "Eslovenia", + "en": "Slovenia", + "pt_BR": "Eslovênia", + "sr-Cyrl": "Словеније", + "sr-Latn": "Slovenija", + "zh_TW": "斯洛維尼亞", + "tr": "Slovenya", + "ro": "Slovenia", + "ar": "سلوفينيا", + "fa": "اسلوونی", + "yue": "斯洛文尼亞" + }, + flag: "🇸🇮", + code: "SI", + dialCode: "386", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Solomon Islands", + nameTranslations: { + "sk": "Šalamúnove ostrovy", + "se": "Salomon-sullot", + "pl": "Wyspy Salomona", + "no": "Salomonøyene", + "ja": "ソロモン諸島", + "it": "Isole Salomone", + "zh": "所罗门群岛", + "nl": "Salomonseilanden", + "de": "Salomonen", + "fr": "Îles Salomon", + "es": "Islas Salomón", + "en": "Solomon Islands", + "pt_BR": "Ilhas Salomão", + "sr-Cyrl": "Соломонска Острва", + "sr-Latn": "Solomonska Ostrva", + "zh_TW": "所羅門群島", + "tr": "Solomon Adaları", + "ro": "Insulele Solomon", + "ar": "جزر سليمان", + "fa": "جزایر سلیمان", + "yue": "所羅門群島" + }, + flag: "🇸🇧", + code: "SB", + dialCode: "677", + minLength: 5, + maxLength: 5, + ), + Country( + name: "Somalia", + nameTranslations: { + "sk": "Somálsko", + "se": "Somália", + "pl": "Somalia", + "no": "Somalia", + "ja": "ソマリア", + "it": "Somalia", + "zh": "索马里", + "nl": "Somalië", + "de": "Somalia", + "fr": "Somalie", + "es": "Somalia", + "en": "Somalia", + "pt_BR": "Somália", + "sr-Cyrl": "Сомалија", + "sr-Latn": "Somalija", + "zh_TW": "索馬利亞", + "tr": "Somali", + "ro": "Somalia", + "ar": "الصومال", + "fa": "سومالی", + "yue": "索馬里" + }, + flag: "🇸🇴", + code: "SO", + dialCode: "252", + minLength: 8, + maxLength: 8, + ), + Country( + name: "South Africa", + nameTranslations: { + "sk": "Južná Afrika", + "se": "Mátta-Afrihká", + "pl": "Republika Południowej Afryki", + "no": "Sør-Afrika", + "ja": "南アフリカ", + "it": "Sudafrica", + "zh": "南非", + "nl": "Zuid-Afrika", + "de": "Südafrika", + "fr": "Afrique du Sud", + "es": "Sudáfrica", + "en": "South Africa", + "pt_BR": "África do Sul", + "sr-Cyrl": "Јужноафричка Република", + "sr-Latn": "Južnoafrička Republika", + "zh_TW": "南非", + "tr": "Güney Afrika", + "ro": "Africa de Sud", + "ar": "جنوب أفريقيا", + "fa": "آفریقای جنوبی", + "yue": "南非" + }, + flag: "🇿🇦", + code: "ZA", + dialCode: "27", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Sudan", + nameTranslations: { + "sk": "Južný Sudán", + "se": "Máttasudan", + "pl": "Sudan Południowy", + "no": "Sør-Sudan", + "ja": "南スーダン", + "it": "Sud Sudan", + "zh": "南苏丹", + "nl": "Zuid-Soedan", + "de": "Südsudan", + "fr": "Soudan du Sud", + "es": "Sudán del Sur", + "en": "South Sudan", + "pt_BR": "Sudão do Sul", + "sr-Cyrl": "Јужни Судан", + "sr-Latn": "Južni Sudan", + "zh_TW": "南蘇丹", + "tr": "Güney Sudan", + "ro": "Sudanul de Sud", + "ar": "جنوب السودان", + "fa": "سودان جنوبی", + "yue": "南蘇丹" + }, + flag: "🇸🇸", + code: "SS", + dialCode: "211", + minLength: 9, + maxLength: 9, + ), + Country( + name: "South Georgia and the South Sandwich Islands", + nameTranslations: { + "sk": "Južná Georgia a Južné Sandwichove ostrovy", + "se": "Lulli Georgia ja Lulli Sandwich-sullot", + "pl": "Georgia Południowa i Sandwich Południowy", + "no": "Sør-Georgia og Sør-Sandwichøyene", + "ja": "サウスジョージア・サウスサンドウィッチ諸島", + "it": "Georgia del Sud e Sandwich australi", + "zh": "南乔治亚和南桑威奇群岛", + "nl": "Zuid-Georgia en Zuidelijke Sandwicheilanden", + "de": "Südgeorgien und die Südlichen Sandwichinseln", + "fr": "Géorgie du Sud et îles Sandwich du Sud", + "es": "Islas Georgia del Sur y Sandwich del Sur", + "en": "South Georgia & South Sandwich Islands", + "pt_BR": "Geórgia do Sul e Ilhas Sandwich do Sul", + "sr-Cyrl": "Јужна Џорџија и Јужна Сендвичка Острва", + "sr-Latn": "Južna Džordžija i Južna Sendvička Ostrva", + "zh_TW": "南喬治亞與南三明治群島 ", + "tr": "Güney Georgia ve Güney Sandwich Adaları", + "ro": "Georgia de Sud și Insulele Sandwich de Sud", + "ar": "جورجيا الجنوبية وجزر ساندويتش الجنوبية", + "fa": "جزایر جورجیای جنوبی و ساندویچ جنوبی", + "yue": "南喬治亞州同南桑威奇群島" + }, + flag: "🇬🇸", + code: "GS", + dialCode: "500", + minLength: 15, + maxLength: 15, + ), + Country( + name: "Spain", + nameTranslations: { + "sk": "Španielsko", + "se": "Spánia", + "pl": "Hiszpania", + "no": "Spania", + "ja": "スペイン", + "it": "Spagna", + "zh": "西班牙", + "nl": "Spanje", + "de": "Spanien", + "fr": "Espagne", + "es": "España", + "en": "Spain", + "pt_BR": "Espanha", + "sr-Cyrl": "Шпанија", + "sr-Latn": "Španija", + "zh_TW": "西班牙", + "tr": "İspanya", + "ro": "Spania", + "ar": "إسبانيا", + "fa": "اسپانیا", + "yue": "西班牙" + }, + flag: "🇪🇸", + code: "ES", + dialCode: "34", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sri Lanka", + nameTranslations: { + "sk": "Srí Lanka", + "se": "Sri Lanka", + "pl": "Sri Lanka", + "no": "Sri Lanka", + "ja": "スリランカ", + "it": "Sri Lanka", + "zh": "斯里兰卡", + "nl": "Sri Lanka", + "de": "Sri Lanka", + "fr": "Sri Lanka", + "es": "Sri Lanka", + "en": "Sri Lanka", + "pt_BR": "Sri Lanka", + "sr-Cyrl": "Шри Ланка", + "sr-Latn": "Šri Lanka", + "zh_TW": "斯里蘭卡", + "tr": "Sri Lanka", + "ro": "Sri Lanka", + "ar": "سريلانكا", + "fa": "سریلانکا", + "yue": "斯里蘭卡" + }, + flag: "🇱🇰", + code: "LK", + dialCode: "94", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Sudan", + nameTranslations: { + "sk": "Sudán", + "se": "Davvisudan", + "pl": "Sudan", + "no": "Sudan", + "ja": "スーダン", + "it": "Sudan", + "zh": "苏丹", + "nl": "Soedan", + "de": "Sudan", + "fr": "Soudan", + "es": "Sudán", + "en": "Sudan", + "pt_BR": "Sudão", + "sr-Cyrl": "Судан", + "sr-Latn": "Sudan", + "zh_TW": "蘇丹", + "tr": "Sudan", + "ro": "Sudan", + "ar": "السودان", + "fa": "سودان", + "yue": "蘇丹" + }, + flag: "🇸🇩", + code: "SD", + dialCode: "249", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Suriname", + nameTranslations: { + "sk": "Surinam", + "se": "Surinam", + "pl": "Surinam", + "no": "Surinam", + "ja": "スリナム", + "it": "Suriname", + "zh": "苏里南", + "nl": "Suriname", + "de": "Suriname", + "fr": "Suriname", + "es": "Surinam", + "en": "Suriname", + "pt_BR": "Suriname", + "sr-Cyrl": "Суринам", + "sr-Latn": "Surinam", + "zh_TW": "蘇利南", + "tr": "Surinam", + "ro": "Surinam", + "ar": "سورينام", + "fa": "سورینام", + "yue": "蘇里南" + }, + flag: "🇸🇷", + code: "SR", + dialCode: "597", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Svalbard and Jan Mayen", + nameTranslations: { + "sk": "Svalbard a Jan Mayen", + "se": "Svalbárda ja Jan Mayen", + "pl": "Svalbard i Jan Mayen", + "no": "Svalbard og Jan Mayen", + "ja": "スバールバル諸島・ヤンマイエン島", + "it": "Svalbard e Jan Mayen", + "zh": "斯瓦尔巴和扬马延", + "nl": "Spitsbergen en Jan Mayen", + "de": "Spitzbergen und Jan Mayen", + "fr": "Svalbard et Jan Mayen", + "es": "Svalbard y Jan Mayen", + "en": "Svalbard & Jan Mayen", + "pt_BR": "Svalbard e Jan Mayen", + "sr-Cyrl": "Свалбард", + "sr-Latn": "Svalbard", + "zh_TW": "斯瓦巴及尖棉", + "tr": "Svalbard ve Jan Mayen", + "ro": "Svalbard și Jan Mayen", + "ar": "سفالبارد ويان ماين", + "fa": "سوالبارد و یان ماین", + "yue": "斯瓦尔巴德同扬·马延" + }, + flag: "🇸🇯", + code: "SJ", + dialCode: "47", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Eswatini", + nameTranslations: { + "sk": "Eswatini", + "se": "Svazieana", + "pl": "Eswatini", + "no": "Eswatini", + "ja": "エスワティニ", + "it": "Swaziland", + "zh": "斯威士兰", + "nl": "eSwatini", + "de": "Eswatini", + "fr": "Eswatini", + "es": "Esuatini", + "en": "Eswatini", + "pt_BR": "Eswatini", + "sr-Cyrl": "Свазиланд", + "sr-Latn": "Svaziland", + "zh_TW": "史瓦帝尼", + "tr": "Esvatini", + "ro": "Eswatini", + "ar": "إسواتيني", + "fa": "اسواتینی", + "yue": "斯威士蘭" + }, + flag: "🇸🇿", + code: "SZ", + dialCode: "268", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Sweden", + nameTranslations: { + "sk": "Švédsko", + "se": "Ruoŧŧa", + "pl": "Szwecja", + "no": "Sverige", + "ja": "スウェーデン", + "it": "Svezia", + "zh": "瑞典", + "nl": "Zweden", + "de": "Schweden", + "fr": "Suède", + "es": "Suecia", + "en": "Sweden", + "pt_BR": "Suécia", + "sr-Cyrl": "Шведска", + "sr-Latn": "Švedska", + "zh_TW": "瑞典", + "tr": "İsveç", + "ro": "Suedia", + "ar": "السويد", + "fa": "سوئد", + "yue": "瑞典" + }, + flag: "🇸🇪", + code: "SE", + dialCode: "46", + minLength: 7, + maxLength: 13, + ), + Country( + name: "Switzerland", + nameTranslations: { + "sk": "Švajčiarsko", + "se": "Šveica", + "pl": "Szwajcaria", + "no": "Sveits", + "ja": "スイス", + "it": "Svizzera", + "zh": "瑞士", + "nl": "Zwitserland", + "de": "Schweiz", + "fr": "Suisse", + "es": "Suiza", + "en": "Switzerland", + "pt_BR": "Suíça", + "sr-Cyrl": "Швајцарска", + "sr-Latn": "Švajcarska", + "zh_TW": "瑞士", + "tr": "İsviçre", + "ro": "Elveţia", + "ar": "سويسرا", + "fa": "سوئیس", + "yue": "瑞士" + }, + flag: "🇨🇭", + code: "CH", + dialCode: "41", + minLength: 9, + maxLength: 12, + ), + Country( + name: "Syrian Arab Republic", + nameTranslations: { + "sk": "Sýria", + "se": "Syria", + "pl": "Syria", + "no": "Syria", + "ja": "シリア", + "it": "Siria", + "zh": "叙利亚", + "nl": "Syrië", + "de": "Syrien", + "fr": "Syrie", + "es": "Siria", + "en": "Syria", + "pt_BR": "Síria", + "sr-Cyrl": "Сирија", + "sr-Latn": "Sirija", + "zh_TW": "敘利亞", + "tr": "Suriye", + "ro": "Siria", + "ar": "سوريا", + "fa": "سوریه", + "yue": "阿拉伯敘利亞共和國" + }, + flag: "🇸🇾", + code: "SY", + dialCode: "963", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Taiwan", + nameTranslations: { + "sk": "Taiwan", + "se": "Taiwan", + "pl": "Tajwan", + "no": "Taiwan", + "ja": "台湾", + "it": "Taiwan", + "zh": "台湾", + "nl": "Taiwan", + "de": "Taiwan", + "fr": "Taïwan", + "es": "Taiwán", + "en": "Taiwan", + "pt_BR": "Taiwan", + "sr-Cyrl": "Тајван", + "sr-Latn": "Tajvan", + "zh_TW": "台灣", + "tr": "Tayvan", + "ro": "Taiwan", + "ar": "تايوان", + "fa": "تایوان", + "yue": "台灣" + }, + flag: "🇹🇼", + code: "TW", + dialCode: "886", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tajikistan", + nameTranslations: { + "sk": "Tadžikistan", + "se": "Tažikistan", + "pl": "Tadżykistan", + "no": "Tadsjikistan", + "ja": "タジキスタン", + "it": "Tagikistan", + "zh": "塔吉克斯坦", + "nl": "Tadzjikistan", + "de": "Tadschikistan", + "fr": "Tadjikistan", + "es": "Tayikistán", + "en": "Tajikistan", + "pt_BR": "Tajiquistão", + "sr-Cyrl": "Таџикистан", + "sr-Latn": "Tadžikistan", + "zh_TW": "塔吉克", + "tr": "Tacikistan", + "ro": "Tadiquistão", + "ar": "طاجيكستان", + "fa": "تاجیکستان", + "yue": "塔吉克斯坦" + }, + flag: "🇹🇯", + code: "TJ", + dialCode: "992", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Tanzania, United Republic of Tanzania", + nameTranslations: { + "sk": "Tanzánia", + "se": "Tanzánia", + "pl": "Tanzania", + "no": "Tanzania", + "ja": "タンザニア", + "it": "Tanzania", + "zh": "坦桑尼亚", + "nl": "Tanzania", + "de": "Tansania", + "fr": "Tanzanie", + "es": "Tanzania", + "en": "Tanzania", + "pt_BR": "Tanzânia", + "sr-Cyrl": "Танзанија", + "sr-Latn": "Tanzanija", + "zh_TW": "坦尚尼亞", + "tr": "Tanzanya", + "ro": "Tanzania", + "ar": "تنزانيا", + "fa": "تانزانیا", + "yue": "坦桑尼亞,聯合共和國" + }, + flag: "🇹🇿", + code: "TZ", + dialCode: "255", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Thailand", + nameTranslations: { + "sk": "Thajsko", + "se": "Thaieana", + "pl": "Tajlandia", + "no": "Thailand", + "ja": "タイ", + "it": "Thailandia", + "zh": "泰国", + "nl": "Thailand", + "de": "Thailand", + "fr": "Thaïlande", + "es": "Tailandia", + "en": "Thailand", + "pt_BR": "Tailândia", + "sr-Cyrl": "Тајланд", + "sr-Latn": "Tajland", + "zh_TW": "泰國", + "tr": "Tayland", + "ro": "Tailanda", + "ar": "تايلاند", + "fa": "تایلند", + "yue": "泰國" + }, + flag: "🇹🇭", + code: "TH", + dialCode: "66", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Timor-Leste", + nameTranslations: { + "sk": "Východný Timor", + "se": "Nuorta-Timor", + "pl": "Timor Wschodni", + "no": "Øst-Timor", + "ja": "東ティモール", + "it": "Timor Est", + "zh": "东帝汶", + "nl": "Oost-Timor", + "de": "Timor-Leste", + "fr": "Timor oriental", + "es": "Timor-Leste", + "en": "Timor-Leste", + "pt_BR": "Timor-Leste", + "sr-Cyrl": "Источни Тимор", + "sr-Latn": "Istočni Timor", + "zh_TW": "東帝汶", + "tr": "Doğu Timor", + "ro": "Timorul de Est", + "ar": "تيمور الشرقية", + "fa": "تیمور شرقی", + "yue": "東帝汶" + }, + flag: "🇹🇱", + code: "TL", + dialCode: "670", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Togo", + nameTranslations: { + "sk": "Togo", + "se": "Togo", + "pl": "Togo", + "no": "Togo", + "ja": "トーゴ", + "it": "Togo", + "zh": "多哥", + "nl": "Togo", + "de": "Togo", + "fr": "Togo", + "es": "Togo", + "en": "Togo", + "pt_BR": "Ir", + "sr-Cyrl": "Того", + "sr-Latn": "Togo", + "zh_TW": "多哥", + "tr": "Togo", + "ro": "Togo", + "ar": "توغو", + "fa": "توگو", + "yue": "多哥" + }, + flag: "🇹🇬", + code: "TG", + dialCode: "228", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Tokelau", + nameTranslations: { + "sk": "Tokelau", + "se": "Tokelau", + "pl": "Tokelau", + "no": "Tokelau", + "ja": "トケラウ", + "it": "Tokelau", + "zh": "托克劳", + "nl": "Tokelau", + "de": "Tokelau", + "fr": "Tokelau", + "es": "Tokelau", + "en": "Tokelau", + "pt_BR": "Tokelau", + "sr-Cyrl": "Токелау", + "sr-Latn": "Tokelau", + "zh_TW": "托克勞", + "tr": "Tokelau", + "ro": "Tokelau", + "ar": "توكيلاو", + "fa": "توکلائو", + "yue": "托克劳" + }, + flag: "🇹🇰", + code: "TK", + dialCode: "690", + minLength: 4, + maxLength: 4, + ), + Country( + name: "Tonga", + nameTranslations: { + "sk": "Tonga", + "se": "Tonga", + "pl": "Tonga", + "no": "Tonga", + "ja": "トンガ", + "it": "Tonga", + "zh": "汤加", + "nl": "Tonga", + "de": "Tonga", + "fr": "Tonga", + "es": "Tonga", + "en": "Tonga", + "pt_BR": "Tonga", + "sr-Cyrl": "Тонга", + "sr-Latn": "Tonga", + "zh_TW": "東加", + "tr": "Tonga", + "ro": "Tonga", + "ar": "تونغا", + "fa": "تونگا", + "yue": "湯加" + }, + flag: "🇹🇴", + code: "TO", + dialCode: "676", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Trinidad and Tobago", + nameTranslations: { + "sk": "Trinidad a Tobago", + "se": "Trinidad ja Tobago", + "pl": "Trynidad i Tobago", + "no": "Trinidad og Tobago", + "ja": "トリニダード・トバゴ", + "it": "Trinidad e Tobago", + "zh": "特立尼达和多巴哥", + "nl": "Trinidad en Tobago", + "de": "Trinidad und Tobago", + "fr": "Trinité-et-Tobago", + "es": "Trinidad y Tobago", + "en": "Trinidad & Tobago", + "pt_BR": "Trinidad e Tobago", + "sr-Cyrl": "Тринидад и Тобаго", + "sr-Latn": "Trinidad i Tobago", + "zh_TW": "千里達及托巴哥", + "tr": "Trinidad ve Tobago", + "ro": "Trinidad şi Tobago", + "ar": "ترينيداد وتوباغو", + "fa": "ترینیداد و توباگو", + "yue": "特立尼達和多巴哥" + }, + flag: "🇹🇹", + code: "TT", + dialCode: "1868", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tunisia", + nameTranslations: { + "sk": "Tunisko", + "se": "Tunisia", + "pl": "Tunezja", + "no": "Tunisia", + "ja": "チュニジア", + "it": "Tunisia", + "zh": "突尼斯", + "nl": "Tunesië", + "de": "Tunesien", + "fr": "Tunisie", + "es": "Túnez", + "en": "Tunisia", + "pt_BR": "Tunísia", + "sr-Cyrl": "Тунис", + "sr-Latn": "Tunis", + "zh_TW": "突尼西亞", + "tr": "Tunus", + "ro": "Tunisia", + "ar": "تونس", + "fa": "تونس", + "yue": "突尼斯" + }, + flag: "🇹🇳", + code: "TN", + dialCode: "216", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turkey", + nameTranslations: { + "sk": "Turecko", + "se": "Durka", + "pl": "Turcja", + "no": "Tyrkia", + "ja": "トルコ", + "it": "Turchia", + "zh": "土耳其", + "nl": "Turkije", + "de": "Türkei", + "fr": "Turquie", + "es": "Turquía", + "en": "Turkey", + "pt_BR": "Peru", + "sr-Cyrl": "Турска", + "sr-Latn": "Turska", + "zh_TW": "土耳其", + "tr": "Türkiye", + "ro": "Turcia", + "ar": "تركيا", + "fa": "ترکیه", + "yue": "土耳其" + }, + flag: "🇹🇷", + code: "TR", + dialCode: "90", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Turkmenistan", + nameTranslations: { + "sk": "Turkménsko", + "se": "Turkmenistan", + "pl": "Turkmenistan", + "no": "Turkmenistan", + "ja": "トルクメニスタン", + "it": "Turkmenistan", + "zh": "土库曼斯坦", + "nl": "Turkmenistan", + "de": "Turkmenistan", + "fr": "Turkménistan", + "es": "Turkmenistán", + "en": "Turkmenistan", + "pt_BR": "Turcomenistão", + "sr-Cyrl": "Туркменистан", + "sr-Latn": "Turkmenistan", + "zh_TW": "土庫曼", + "tr": "Türkmenistan", + "ro": "Turkmenistan", + "ar": "تركمانستان", + "fa": "ترکمنستان", + "yue": "土庫曼斯坦" + }, + flag: "🇹🇲", + code: "TM", + dialCode: "993", + minLength: 8, + maxLength: 8, + ), + Country( + name: "Turks and Caicos Islands", + nameTranslations: { + "sk": "Turks a Caicos", + "se": "Turks ja Caicos-sullot", + "pl": "Turks i Caicos", + "no": "Turks- og Caicosøyene", + "ja": "タークス・カイコス諸島", + "it": "Isole Turks e Caicos", + "zh": "特克斯和凯科斯群岛", + "nl": "Turks- en Caicoseilanden", + "de": "Turks- und Caicosinseln", + "fr": "Îles Turques-et-Caïques", + "es": "Islas Turcas y Caicos", + "en": "Turks & Caicos Islands", + "pt_BR": "Ilhas Turks e Caicos", + "sr-Cyrl": "Туркс и Кајкос", + "sr-Latn": "Turks i Kajkos", + "zh_TW": "土克斯及開科斯群島", + "tr": "Turks ve Caicos Adaları", + "ro": "Insulele Turks și Caicos", + "ar": "جزر توركس وكايكوس", + "fa": "جزایر تورکس و کایکوس", + "yue": "特克斯同凯科斯群岛" + }, + flag: "🇹🇨", + code: "TC", + dialCode: "1649", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Tuvalu", + nameTranslations: { + "sk": "Tuvalu", + "se": "Tuvalu", + "pl": "Tuvalu", + "no": "Tuvalu", + "ja": "ツバル", + "it": "Tuvalu", + "zh": "图瓦卢", + "nl": "Tuvalu", + "de": "Tuvalu", + "fr": "Tuvalu", + "es": "Tuvalu", + "en": "Tuvalu", + "pt_BR": "Tuvalu", + "sr-Cyrl": "Тувалу", + "sr-Latn": "Tuvalu", + "zh_TW": "圖瓦盧", + "tr": "Tuvalu", + "ro": "Tuvalu", + "ar": "توفالو", + "fa": "تووالو", + "yue": "圖瓦盧" + }, + flag: "🇹🇻", + code: "TV", + dialCode: "688", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Uganda", + nameTranslations: { + "sk": "Uganda", + "se": "Uganda", + "pl": "Uganda", + "no": "Uganda", + "ja": "ウガンダ", + "it": "Uganda", + "zh": "乌干达", + "nl": "Oeganda", + "de": "Uganda", + "fr": "Ouganda", + "es": "Uganda", + "en": "Uganda", + "pt_BR": "Uganda", + "sr-Cyrl": "Уганда", + "sr-Latn": "Uganda", + "zh_TW": "烏干達", + "tr": "Uganda", + "ro": "Uganda", + "ar": "أوغندا", + "fa": "اوگاندا", + "yue": "烏干達" + }, + flag: "🇺🇬", + code: "UG", + dialCode: "256", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Ukraine", + nameTranslations: { + "sk": "Ukrajina", + "se": "Ukraina", + "pl": "Ukraina", + "no": "Ukraina", + "ja": "ウクライナ", + "it": "Ucraina", + "zh": "乌克兰", + "nl": "Oekraïne", + "de": "Ukraine", + "fr": "Ukraine", + "es": "Ucrania", + "en": "Ukraine", + "pt_BR": "Ucrânia", + "sr-Cyrl": "Украјина", + "sr-Latn": "Ukrajina", + "zh_TW": "烏克蘭", + "tr": "Ukrayna", + "ro": "Ucraína", + "ar": "أوكرانيا", + "fa": "اوکراین", + "yue": "烏克蘭" + }, + flag: "🇺🇦", + code: "UA", + dialCode: "380", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Arab Emirates", + nameTranslations: { + "sk": "Spojené arabské emiráty", + "se": "Ovttastuvvan Arábaemiráhtat", + "pl": "Zjednoczone Emiraty Arabskie", + "no": "De forente arabiske emirater", + "ja": "アラブ首長国連邦", + "it": "Emirati Arabi Uniti", + "zh": "阿拉伯联合酋长国", + "nl": "Verenigde Arabische Emiraten", + "de": "Vereinigte Arabische Emirate", + "fr": "Émirats arabes unis", + "es": "Emiratos Árabes Unidos", + "en": "United Arab Emirates", + "pt_BR": "Emirados Árabes Unidos", + "sr-Cyrl": "Уједињени Арапски Емирати", + "sr-Latn": "Ujedinjeni Arapski Emirati", + "zh_TW": "阿拉伯聯合大公國", + "tr": "Birleşik Arap Emirlikleri", + "ro": "Emiratele Arabe Unite", + "ar": "الإمارات العربية المتحدة", + "fa": "امارات متحده عربی", + "yue": "阿拉伯聯合酋長國" + }, + flag: "🇦🇪", + code: "AE", + dialCode: "971", + minLength: 9, + maxLength: 9, + ), + Country( + name: "United Kingdom", + nameTranslations: { + "sk": "Spojené kráľovstvo", + "se": "Stuorra-Británnia", + "pl": "Wielka Brytania", + "no": "Storbritannia", + "ja": "イギリス", + "it": "Regno Unito", + "zh": "英国", + "nl": "Verenigd Koninkrijk", + "de": "Vereinigtes Königreich", + "fr": "Royaume-Uni", + "es": "Reino Unido", + "en": "United Kingdom", + "pt_BR": "Reino Unido", + "sr-Cyrl": "Уједињено Краљевство", + "sr-Latn": "Ujedinjeno Kraljevstvo", + "zh_TW": "英國", + "tr": "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığ", + "ro": "Regatul Unit al Marii Britanii și Irlandei de Nord", + "ar": "المملكة المتحدة", + "fa": "بریتانیا", + "yue": "大不列顛及北愛爾蘭聯合王國" + }, + flag: "🇬🇧", + code: "GB", + dialCode: "44", + minLength: 10, + maxLength: 10, + ), + Country( + name: "United States", + nameTranslations: { + "sk": "Spojené štáty", + "se": "Amerihká ovttastuvvan stáhtat", + "pl": "Stany Zjednoczone", + "no": "USA", + "ja": "アメリカ合衆国", + "it": "Stati Uniti", + "zh": "美国", + "nl": "Verenigde Staten", + "de": "Vereinigte Staaten", + "fr": "États-Unis", + "es": "Estados Unidos", + "en": "United States", + "pt_BR": "Estados Unidos", + "sr-Cyrl": "Сједињене Америчке Државе", + "sr-Latn": "Sjedinjene Američke Države", + "zh_TW": "美國", + "tr": "Amerika Birleşik Devletleri", + "ro": "Statele Unite ale Americii", + "ar": "الولايات المتحدة", + "fa": "ایالات متحده آمریکا", + "yue": "美利堅郃眾囯" + }, + flag: "🇺🇸", + code: "US", + dialCode: "1", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Uruguay", + nameTranslations: { + "sk": "Uruguaj", + "se": "Uruguay", + "pl": "Urugwaj", + "no": "Uruguay", + "ja": "ウルグアイ", + "it": "Uruguay", + "zh": "乌拉圭", + "nl": "Uruguay", + "de": "Uruguay", + "fr": "Uruguay", + "es": "Uruguay", + "en": "Uruguay", + "pt_BR": "Uruguai", + "sr-Cyrl": "Уругвај", + "sr-Latn": "Urugvaj", + "zh_TW": "烏拉圭", + "tr": "Uruguay", + "ro": "Uruguay", + "ar": "الأوروغواي", + "fa": "اروگوئه", + "yue": "烏拉圭" + }, + flag: "🇺🇾", + code: "UY", + dialCode: "598", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Uzbekistan", + nameTranslations: { + "sk": "Uzbekistan", + "se": "Usbekistan", + "pl": "Uzbekistan", + "no": "Usbekistan", + "ja": "ウズベキスタン", + "it": "Uzbekistan", + "zh": "乌兹别克斯坦", + "nl": "Oezbekistan", + "de": "Usbekistan", + "fr": "Ouzbékistan", + "es": "Uzbekistán", + "en": "Uzbekistan", + "pt_BR": "Uzbequistão", + "sr-Cyrl": "Узбекистан", + "sr-Latn": "Uzbekistan", + "zh_TW": "烏玆別克", + "tr": "Özbekistan", + "ro": "Uzbekistan", + "ar": "أوزبكستان", + "fa": "ازبکستان", + "yue": "月即別" + }, + flag: "🇺🇿", + code: "UZ", + dialCode: "998", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Vanuatu", + nameTranslations: { + "sk": "Vanuatu", + "se": "Vanuatu", + "pl": "Vanuatu", + "no": "Vanuatu", + "ja": "バヌアツ", + "it": "Vanuatu", + "zh": "瓦努阿图", + "nl": "Vanuatu", + "de": "Vanuatu", + "fr": "Vanuatu", + "es": "Vanuatu", + "en": "Vanuatu", + "pt_BR": "Vanuatu", + "sr-Cyrl": "Вануату", + "sr-Latn": "Vanuatu", + "zh_TW": "瓦努阿圖", + "tr": "Vanuatu", + "ro": "Vanuatu", + "ar": "فانواتو", + "fa": "وانواتو", + "yue": "瓦努阿圖" + }, + flag: "🇻🇺", + code: "VU", + dialCode: "678", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Venezuela, Bolivarian Republic of Venezuela", + nameTranslations: { + "sk": "Venezuela", + "se": "Venezuela", + "pl": "Wenezuela", + "no": "Venezuela", + "ja": "ベネズエラ", + "it": "Venezuela", + "zh": "委内瑞拉", + "nl": "Venezuela", + "de": "Venezuela", + "fr": "Venezuela", + "es": "Venezuela", + "en": "Venezuela", + "pt_BR": "Venezuela", + "sr-Cyrl": "Венецуела", + "sr-Latn": "Venecuela", + "zh_TW": "委內瑞拉", + "tr": "Venezuela", + "ro": "Venezuela", + "ar": "فنزويلا", + "fa": "ونزوئلا", + "yue": "委內瑞拉(玻利瓦爾共和國)" + }, + flag: "🇻🇪", + code: "VE", + dialCode: "58", + minLength: 10, + maxLength: 10, + ), + Country( + name: "Vietnam", + nameTranslations: { + "sk": "Vietnam", + "se": "Vietnam", + "pl": "Wietnam", + "no": "Vietnam", + "ja": "ベトナム", + "it": "Vietnam", + "zh": "越南", + "nl": "Vietnam", + "de": "Vietnam", + "fr": "Vietnam", + "es": "Vietnam", + "en": "Vietnam", + "pt_BR": "Vietnã", + "sr-Cyrl": "Вијетнам", + "sr-Latn": "Vijetnam", + "zh_TW": "越南", + "tr": "Vietnam", + "ro": "Vietnam", + "ar": "فيتنام", + "fa": "ویتنام", + "yue": "越南" + }, + flag: "🇻🇳", + code: "VN", + dialCode: "84", + minLength: 11, + maxLength: 11, + ), + Country( + name: "Virgin Islands, British", + nameTranslations: { + "sk": "Britské Panenské ostrovy", + "se": "Brittania Virgin-sullot", + "pl": "Brytyjskie Wyspy Dziewicze", + "no": "De britiske jomfruøyene", + "ja": "英領ヴァージン諸島", + "it": "Isole Vergini Britanniche", + "zh": "英属维尔京群岛", + "nl": "Britse Maagdeneilanden", + "de": "Britische Jungferninseln", + "fr": "Îles Vierges britanniques", + "es": "Islas Vírgenes Británicas", + "en": "British Virgin Islands", + "pt_BR": "Ilhas Virgens Britânicas", + "sr-Cyrl": "Британска Девичанска Острва", + "sr-Latn": "Britanska Devičanska Ostrva", + "zh_TW": "英屬維京群島", + "tr": "Britanya Virjin Adaları", + "ro": "Insulele Virgine Britanice", + "ar": "جزر العذراء البريطانية", + "fa": "جزایر ویرجین بریتانیا", + "yue": "維爾京群島(英國)" + }, + flag: "🇻🇬", + code: "VG", + dialCode: "1284", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Virgin Islands, U.S.", + nameTranslations: { + "sk": "Americké Panenské ostrovy", + "se": "AOS Virgin-sullot", + "pl": "Wyspy Dziewicze Stanów Zjednoczonych", + "no": "De amerikanske jomfruøyene", + "ja": "米領ヴァージン諸島", + "it": "Isole Vergini Americane", + "zh": "美属维尔京群岛", + "nl": "Amerikaanse Maagdeneilanden", + "de": "Amerikanische Jungferninseln", + "fr": "Îles Vierges des États-Unis", + "es": "Islas Vírgenes de EE. UU.", + "en": "U.S. Virgin Islands", + "pt_BR": "Ilhas Virgens Americanas", + "sr-Cyrl": "Амепичка Девичанска Острва", + "sr-Latn": "Američka Devičanska Ostrva", + "zh_TW": "美屬維京群島", + "tr": "Amerika Birleşik Devletleri Virjin Adaları", + "ro": "Insulele Virgine Americane", + "ar": "جزر العذراء الأمريكية", + "fa": "جزایر ویرجین ایالات متحده آمریکا", + "yue": "維爾京群島(美國)" + }, + flag: "🇻🇮", + code: "VI", + dialCode: "1340", + minLength: 7, + maxLength: 7, + ), + Country( + name: "Wallis and Futuna", + nameTranslations: { + "sk": "Wallis a Futuna", + "se": "Wallis ja Futuna", + "pl": "Wallis i Futuna", + "no": "Wallis og Futuna", + "ja": "ウォリス・フツナ", + "it": "Wallis e Futuna", + "zh": "瓦利斯和富图纳", + "nl": "Wallis en Futuna", + "de": "Wallis und Futuna", + "fr": "Wallis-et-Futuna", + "es": "Wallis y Futuna", + "en": "Wallis & Futuna", + "pt_BR": "Wallis e Futuna", + "sr-Cyrl": "Валис и Футуна", + "sr-Latn": "Valis i Futuna", + "zh_TW": "瓦利斯和富圖那", + "tr": "Wallis ve Futuna", + "ro": "Wallis și Futuna", + "ar": "والس وفوتونا", + "fa": "والیس و فوتونا", + "yue": "瓦利斯同富图纳" + }, + flag: "🇼🇫", + code: "WF", + dialCode: "681", + minLength: 6, + maxLength: 6, + ), + Country( + name: "Yemen", + nameTranslations: { + "sk": "Jemen", + "se": "Jemen", + "pl": "Jemen", + "no": "Jemen", + "ja": "イエメン", + "it": "Yemen", + "zh": "也门", + "nl": "Jemen", + "de": "Jemen", + "fr": "Yémen", + "es": "Yemen", + "en": "Yemen", + "pt_BR": "Iémen", + "sr-Cyrl": "Јемен", + "sr-Latn": "Jemen", + "zh_TW": "葉門", + "tr": "Yemen", + "ro": "Yemen", + "ar": "اليمن", + "fa": "یمن", + "yue": "也門" + }, + flag: "🇾🇪", + code: "YE", + dialCode: "967", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zambia", + nameTranslations: { + "sk": "Zambia", + "se": "Zambia", + "pl": "Zambia", + "no": "Zambia", + "ja": "ザンビア", + "it": "Zambia", + "zh": "赞比亚", + "nl": "Zambia", + "de": "Sambia", + "fr": "Zambie", + "es": "Zambia", + "en": "Zambia", + "pt_BR": "Zâmbia", + "sr-Cyrl": "Замбија", + "sr-Latn": "Zambija", + "zh_TW": "贊比亞", + "tr": "Zambiya", + "ro": "Zambia", + "ar": "زامبيا", + "fa": "زامبیا", + "yue": "贊比亞" + }, + flag: "🇿🇲", + code: "ZM", + dialCode: "260", + minLength: 9, + maxLength: 9, + ), + Country( + name: "Zimbabwe", + nameTranslations: { + "sk": "Zimbabwe", + "se": "Zimbabwe", + "pl": "Zimbabwe", + "no": "Zimbabwe", + "ja": "ジンバブエ", + "it": "Zimbabwe", + "zh": "津巴布韦", + "nl": "Zimbabwe", + "de": "Simbabwe", + "fr": "Zimbabwe", + "es": "Zimbabue", + "en": "Zimbabwe", + "pt_BR": "Zimbábue", + "sr-Cyrl": "Зимбабве", + "sr-Latn": "Zimbabve", + "zh_TW": "辛巴威", + "tr": "Zimbabve", + "ro": "Zimbabwe", + "ar": "زيمبابوي", + "fa": "زیمبابوه", + "yue": "津巴布韋" + }, + flag: "🇿🇼", + code: "ZW", + dialCode: "263", + minLength: 9, + maxLength: 9) +]; + +class Country { + final String name; + final Map nameTranslations; + final String flag; + final String code; + final String dialCode; + final String regionCode; + final int minLength; + final int maxLength; + + const Country({ + required this.name, + required this.flag, + required this.code, + required this.dialCode, + required this.nameTranslations, + required this.minLength, + required this.maxLength, + this.regionCode = "", + }); + + String get fullCountryCode { + return dialCode + regionCode; + } + + String get displayCC { + if (regionCode != "") { + return "$dialCode $regionCode"; + } + return dialCode; + } + + String localizedName(String languageCode) { + return nameTranslations[languageCode] ?? name; + } +} diff --git a/lib/controller/local/phone_intel/country_picker_dialog.dart b/lib/controller/local/phone_intel/country_picker_dialog.dart new file mode 100644 index 0000000..e6d2523 --- /dev/null +++ b/lib/controller/local/phone_intel/country_picker_dialog.dart @@ -0,0 +1,168 @@ +import 'package:SEFER/controller/local/phone_intel/helpers.dart'; +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; + +import 'countries.dart'; + +class PickerDialogStyle { + final Color? backgroundColor; + + final TextStyle? countryCodeStyle; + + final TextStyle? countryNameStyle; + + final Widget? listTileDivider; + + final EdgeInsets? listTilePadding; + + final EdgeInsets? padding; + + final Color? searchFieldCursorColor; + + final InputDecoration? searchFieldInputDecoration; + + final EdgeInsets? searchFieldPadding; + + final double? width; + + PickerDialogStyle({ + this.backgroundColor, + this.countryCodeStyle, + this.countryNameStyle, + this.listTileDivider, + this.listTilePadding, + this.padding, + this.searchFieldCursorColor, + this.searchFieldInputDecoration, + this.searchFieldPadding, + this.width, + }); +} + +class CountryPickerDialog extends StatefulWidget { + final List countryList; + final Country selectedCountry; + final ValueChanged onCountryChanged; + final String searchText; + final List filteredCountries; + final PickerDialogStyle? style; + final String languageCode; + + const CountryPickerDialog({ + Key? key, + required this.searchText, + required this.languageCode, + required this.countryList, + required this.onCountryChanged, + required this.selectedCountry, + required this.filteredCountries, + this.style, + }) : super(key: key); + + @override + State createState() => _CountryPickerDialogState(); +} + +class _CountryPickerDialogState extends State { + late List _filteredCountries; + late Country _selectedCountry; + + @override + void initState() { + _selectedCountry = widget.selectedCountry; + _filteredCountries = widget.filteredCountries.toList() + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + final mediaWidth = MediaQuery.of(context).size.width; + final width = widget.style?.width ?? mediaWidth; + const defaultHorizontalPadding = 40.0; + const defaultVerticalPadding = 24.0; + return Dialog( + insetPadding: EdgeInsets.symmetric( + vertical: defaultVerticalPadding, + horizontal: mediaWidth > (width + defaultHorizontalPadding * 2) + ? (mediaWidth - width) / 2 + : defaultHorizontalPadding), + backgroundColor: widget.style?.backgroundColor, + child: Container( + padding: widget.style?.padding ?? const EdgeInsets.all(10), + child: Column( + children: [ + Padding( + padding: + widget.style?.searchFieldPadding ?? const EdgeInsets.all(0), + child: TextField( + cursorColor: widget.style?.searchFieldCursorColor, + decoration: widget.style?.searchFieldInputDecoration ?? + InputDecoration( + suffixIcon: const Icon(Icons.search), + labelText: widget.searchText, + ), + onChanged: (value) { + _filteredCountries = widget.countryList.stringSearch(value) + ..sort( + (a, b) => a + .localizedName(widget.languageCode) + .compareTo(b.localizedName(widget.languageCode)), + ); + if (mounted) setState(() {}); + }, + ), + ), + const SizedBox(height: 20), + Expanded( + child: ListView.builder( + shrinkWrap: true, + itemCount: _filteredCountries.length, + itemBuilder: (ctx, index) => Column( + children: [ + ListTile( + leading: kIsWeb + ? Image.asset( + 'assets/flags/${_filteredCountries[index].code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _filteredCountries[index].flag, + style: const TextStyle(fontSize: 18), + ), + contentPadding: widget.style?.listTilePadding, + title: Text( + _filteredCountries[index] + .localizedName(widget.languageCode), + style: widget.style?.countryNameStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + trailing: Text( + '+${_filteredCountries[index].dialCode}', + style: widget.style?.countryCodeStyle ?? + const TextStyle(fontWeight: FontWeight.w700), + ), + onTap: () { + _selectedCountry = _filteredCountries[index]; + widget.onCountryChanged(_selectedCountry); + Navigator.of(context).pop(); + }, + ), + widget.style?.listTileDivider ?? + const Divider(thickness: 1), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/controller/local/phone_intel/helpers.dart b/lib/controller/local/phone_intel/helpers.dart new file mode 100644 index 0000000..c2b3957 --- /dev/null +++ b/lib/controller/local/phone_intel/helpers.dart @@ -0,0 +1,31 @@ +import 'countries.dart'; + +bool isNumeric(String s) => + s.isNotEmpty && int.tryParse(s.replaceAll("+", "")) != null; + +String removeDiacritics(String str) { + var withDia = + 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'; + var withoutDia = + 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz'; + + for (int i = 0; i < withDia.length; i++) { + str = str.replaceAll(withDia[i], withoutDia[i]); + } + + return str; +} + +extension CountryExtensions on List { + List stringSearch(String search) { + search = removeDiacritics(search.toLowerCase()); + return where( + (country) => isNumeric(search) || search.startsWith("+") + ? country.dialCode.contains(search) + : removeDiacritics(country.name.replaceAll("+", "").toLowerCase()) + .contains(search) || + country.nameTranslations.values.any((element) => + removeDiacritics(element.toLowerCase()).contains(search)), + ).toList(); + } +} diff --git a/lib/controller/local/phone_intel/intl_phone_field.dart b/lib/controller/local/phone_intel/intl_phone_field.dart new file mode 100644 index 0000000..b918bc6 --- /dev/null +++ b/lib/controller/local/phone_intel/intl_phone_field.dart @@ -0,0 +1,521 @@ +library intl_phone_field; + +import 'dart:async'; +import 'package:flutter/foundation.dart' show kIsWeb; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import './countries.dart'; +import './phone_number.dart'; +import 'country_picker_dialog.dart'; +import 'helpers.dart'; + +class IntlPhoneField extends StatefulWidget { + /// The TextFormField key. + final GlobalKey? formFieldKey; + + /// Whether to hide the text being edited (e.g., for passwords). + final bool obscureText; + + /// How the text should be aligned horizontally. + final TextAlign textAlign; + + /// How the text should be aligned vertically. + final TextAlignVertical? textAlignVertical; + final VoidCallback? onTap; + + /// {@macro flutter.widgets.editableText.readOnly} + final bool readOnly; + final FormFieldSetter? onSaved; + + /// {@macro flutter.widgets.editableText.onChanged} + /// + /// See also: + /// + /// * [inputFormatters], which are called before [onChanged] + /// runs and can validate and change ("format") the input value. + /// * [onEditingComplete], [onSubmitted], [onSelectionChanged]: + /// which are more specialized input change notifications. + final ValueChanged? onChanged; + + final ValueChanged? onCountryChanged; + + /// An optional method that validates an input. Returns an error string to display if the input is invalid, or null otherwise. + /// + /// A [PhoneNumber] is passed to the validator as argument. + /// The validator can handle asynchronous validation when declared as a [Future]. + /// Or run synchronously when declared as a [Function]. + /// + /// By default, the validator checks whether the input number length is between selected country's phone numbers min and max length. + /// If `disableLengthCheck` is not set to `true`, your validator returned value will be overwritten by the default validator. + /// But, if `disableLengthCheck` is set to `true`, your validator will have to check phone number length itself. + final FutureOr Function(PhoneNumber?)? validator; + + /// {@macro flutter.widgets.editableText.keyboardType} + final TextInputType keyboardType; + + /// Controls the text being edited. + /// + /// If null, this widget will create its own [TextEditingController]. + final TextEditingController? controller; + + /// Defines the keyboard focus for this widget. + /// + /// The [focusNode] is a long-lived object that's typically managed by a + /// [StatefulWidget] parent. See [FocusNode] for more information. + /// + /// To give the keyboard focus to this widget, provide a [focusNode] and then + /// use the current [FocusScope] to request the focus: + /// + /// ```dart + /// FocusScope.of(context).requestFocus(myFocusNode); + /// ``` + /// + /// This happens automatically when the widget is tapped. + /// + /// To be notified when the widget gains or loses the focus, add a listener + /// to the [focusNode]: + /// + /// ```dart + /// focusNode.addListener(() { print(myFocusNode.hasFocus); }); + /// ``` + /// + /// If null, this widget will create its own [FocusNode]. + /// + /// ## Keyboard + /// + /// Requesting the focus will typically cause the keyboard to be shown + /// if it's not showing already. + /// + /// On Android, the user can hide the keyboard - without changing the focus - + /// with the system back button. They can restore the keyboard's visibility + /// by tapping on a text field. The user might hide the keyboard and + /// switch to a physical keyboard, or they might just need to get it + /// out of the way for a moment, to expose something it's + /// obscuring. In this case requesting the focus again will not + /// cause the focus to change, and will not make the keyboard visible. + /// + /// This widget builds an [EditableText] and will ensure that the keyboard is + /// showing when it is tapped by calling [EditableTextState.requestKeyboard()]. + final FocusNode? focusNode; + + /// {@macro flutter.widgets.editableText.onSubmitted} + /// + /// See also: + /// + /// * [EditableText.onSubmitted] for an example of how to handle moving to + /// the next/previous field when using [TextInputAction.next] and + /// [TextInputAction.previous] for [textInputAction]. + final void Function(String)? onSubmitted; + + /// If false the widget is "disabled": it ignores taps, the [TextFormField]'s + /// [decoration] is rendered in grey, + /// [decoration]'s [InputDecoration.counterText] is set to `""`, + /// and the drop down icon is hidden no matter [showDropdownIcon] value. + /// + /// If non-null this property overrides the [decoration]'s + /// [Decoration.enabled] property. + final bool enabled; + + /// The appearance of the keyboard. + /// + /// This setting is only honored on iOS devices. + /// + /// If unset, defaults to the brightness of [ThemeData.brightness]. + final Brightness? keyboardAppearance; + + /// Initial Value for the field. + /// This property can be used to pre-fill the field. + final String? initialValue; + + final String languageCode; + + /// 2 letter ISO Code or country dial code. + /// + /// ```dart + /// initialCountryCode: 'IN', // India + /// initialCountryCode: '+225', // Côte d'Ivoire + /// ``` + final String? initialCountryCode; + + /// List of Country to display see countries.dart for format + final List? countries; + + /// The decoration to show around the text field. + /// + /// By default, draws a horizontal line under the text field but can be + /// configured to show an icon, label, hint text, and error text. + /// + /// Specify null to remove the decoration entirely (including the + /// extra padding introduced by the decoration to save space for the labels). + final InputDecoration decoration; + + /// The style to use for the text being edited. + /// + /// This text style is also used as the base style for the [decoration]. + /// + /// If null, defaults to the `subtitle1` text style from the current [Theme]. + final TextStyle? style; + + /// Disable view Min/Max Length check + final bool disableLengthCheck; + + /// Won't work if [enabled] is set to `false`. + final bool showDropdownIcon; + + final BoxDecoration dropdownDecoration; + + /// The style use for the country dial code. + final TextStyle? dropdownTextStyle; + + /// {@macro flutter.widgets.editableText.inputFormatters} + final List? inputFormatters; + + /// The text that describes the search input field. + /// + /// When the input field is empty and unfocused, the label is displayed on top of the input field (i.e., at the same location on the screen where text may be entered in the input field). + /// When the input field receives focus (or if the field is non-empty), the label moves above (i.e., vertically adjacent to) the input field. + final String searchText; + + /// Position of an icon [leading, trailing] + final IconPosition dropdownIconPosition; + + /// Icon of the drop down button. + /// + /// Default is [Icon(Icons.arrow_drop_down)] + final Icon dropdownIcon; + + /// Whether this text field should focus itself if nothing else is already focused. + final bool autofocus; + + /// Autovalidate mode for text form field. + /// + /// If [AutovalidateMode.onUserInteraction], this FormField will only auto-validate after its content changes. + /// If [AutovalidateMode.always], it will auto-validate even without user interaction. + /// If [AutovalidateMode.disabled], auto-validation will be disabled. + /// + /// Defaults to [AutovalidateMode.onUserInteraction]. + final AutovalidateMode? autovalidateMode; + + /// Whether to show or hide country flag. + /// + /// Default value is `true`. + final bool showCountryFlag; + + /// Message to be displayed on autoValidate error + /// + /// Default value is `Invalid Mobile Number`. + final String? invalidNumberMessage; + + /// The color of the cursor. + final Color? cursorColor; + + /// How tall the cursor will be. + final double? cursorHeight; + + /// How rounded the corners of the cursor should be. + final Radius? cursorRadius; + + /// How thick the cursor will be. + final double cursorWidth; + + /// Whether to show cursor. + final bool? showCursor; + + /// The padding of the Flags Button. + /// + /// The amount of insets that are applied to the Flags Button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsetsGeometry flagsButtonPadding; + + /// The type of action button to use for the keyboard. + final TextInputAction? textInputAction; + + /// Optional set of styles to allow for customizing the country search + /// & pick dialog + final PickerDialogStyle? pickerDialogStyle; + + /// The margin of the country selector button. + /// + /// The amount of space to surround the country selector button. + /// + /// If unset, defaults to [EdgeInsets.zero]. + final EdgeInsets flagsButtonMargin; + + /// Enable the autofill hint for phone number. + final bool disableAutoFillHints; + + /// If null, default magnification configuration will be used. + final TextMagnifierConfiguration? magnifierConfiguration; + + const IntlPhoneField({ + Key? key, + this.formFieldKey, + this.initialCountryCode, + this.languageCode = 'en', + this.disableAutoFillHints = false, + this.obscureText = false, + this.textAlign = TextAlign.left, + this.textAlignVertical, + this.onTap, + this.readOnly = false, + this.initialValue, + this.keyboardType = TextInputType.phone, + this.controller, + this.focusNode, + this.decoration = const InputDecoration(), + this.style, + this.dropdownTextStyle, + this.onSubmitted, + this.validator, + this.onChanged, + this.countries, + this.onCountryChanged, + this.onSaved, + this.showDropdownIcon = true, + this.dropdownDecoration = const BoxDecoration(), + this.inputFormatters, + this.enabled = true, + this.keyboardAppearance, + @Deprecated('Use searchFieldInputDecoration of PickerDialogStyle instead') + this.searchText = 'Search country', + this.dropdownIconPosition = IconPosition.leading, + this.dropdownIcon = const Icon(Icons.arrow_drop_down), + this.autofocus = false, + this.textInputAction, + this.autovalidateMode = AutovalidateMode.onUserInteraction, + this.showCountryFlag = true, + this.cursorColor, + this.disableLengthCheck = false, + this.flagsButtonPadding = EdgeInsets.zero, + this.invalidNumberMessage = 'Invalid Mobile Number', + this.cursorHeight, + this.cursorRadius = Radius.zero, + this.cursorWidth = 2.0, + this.showCursor = true, + this.pickerDialogStyle, + this.flagsButtonMargin = EdgeInsets.zero, + this.magnifierConfiguration, + }) : super(key: key); + + @override + State createState() => _IntlPhoneFieldState(); +} + +class _IntlPhoneFieldState extends State { + late List _countryList; + late Country _selectedCountry; + late List filteredCountries; + late String number; + + String? validatorMessage; + + @override + void initState() { + super.initState(); + _countryList = widget.countries ?? countries; + filteredCountries = _countryList; + number = widget.initialValue ?? ''; + if (widget.initialCountryCode == null && number.startsWith('+')) { + number = number.substring(1); + // parse initial value + _selectedCountry = countries.firstWhere( + (country) => number.startsWith(country.fullCountryCode), + orElse: () => _countryList.first); + + // remove country code from the initial number value + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } else { + _selectedCountry = _countryList.firstWhere( + (item) => item.code == (widget.initialCountryCode ?? 'US'), + orElse: () => _countryList.first); + + // remove country code from the initial number value + if (number.startsWith('+')) { + number = number.replaceFirst( + RegExp("^\\+${_selectedCountry.fullCountryCode}"), ""); + } else { + number = number.replaceFirst( + RegExp("^${_selectedCountry.fullCountryCode}"), ""); + } + } + + if (widget.autovalidateMode == AutovalidateMode.always) { + final initialPhoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.dialCode}', + number: widget.initialValue ?? '', + ); + + final value = widget.validator?.call(initialPhoneNumber); + + if (value is String) { + validatorMessage = value; + } else { + (value as Future).then((msg) { + validatorMessage = msg; + }); + } + } + } + + Future _changeCountry() async { + filteredCountries = _countryList; + await showDialog( + context: context, + useRootNavigator: false, + builder: (context) => StatefulBuilder( + builder: (ctx, setState) => CountryPickerDialog( + languageCode: widget.languageCode.toLowerCase(), + style: widget.pickerDialogStyle, + filteredCountries: filteredCountries, + searchText: widget.searchText, + countryList: _countryList, + selectedCountry: _selectedCountry, + onCountryChanged: (Country country) { + _selectedCountry = country; + widget.onCountryChanged?.call(country); + setState(() {}); + }, + ), + ), + ); + if (mounted) setState(() {}); + } + + @override + Widget build(BuildContext context) { + return TextFormField( + key: widget.formFieldKey, + initialValue: (widget.controller == null) ? number : null, + autofillHints: widget.disableAutoFillHints + ? null + : [AutofillHints.telephoneNumberNational], + readOnly: widget.readOnly, + obscureText: widget.obscureText, + textAlign: widget.textAlign, + textAlignVertical: widget.textAlignVertical, + cursorColor: widget.cursorColor, + onTap: widget.onTap, + controller: widget.controller, + focusNode: widget.focusNode, + cursorHeight: widget.cursorHeight, + cursorRadius: widget.cursorRadius, + cursorWidth: widget.cursorWidth, + showCursor: widget.showCursor, + onFieldSubmitted: widget.onSubmitted, + magnifierConfiguration: widget.magnifierConfiguration, + decoration: widget.decoration.copyWith( + prefixIcon: _buildFlagsButton(), + counterText: !widget.enabled ? '' : null, + ), + style: widget.style, + onSaved: (value) { + widget.onSaved?.call( + PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: + '+${_selectedCountry.dialCode}${_selectedCountry.regionCode}', + number: value!, + ), + ); + }, + onChanged: (value) async { + final phoneNumber = PhoneNumber( + countryISOCode: _selectedCountry.code, + countryCode: '+${_selectedCountry.fullCountryCode}', + number: value, + ); + + if (widget.autovalidateMode != AutovalidateMode.disabled) { + validatorMessage = await widget.validator?.call(phoneNumber); + } + + widget.onChanged?.call(phoneNumber); + }, + validator: (value) { + if (value == null || !isNumeric(value)) return validatorMessage; + if (!widget.disableLengthCheck) { + return value.length >= _selectedCountry.minLength && + value.length <= _selectedCountry.maxLength + ? null + : widget.invalidNumberMessage; + } + + return validatorMessage; + }, + maxLength: widget.disableLengthCheck ? null : _selectedCountry.maxLength, + keyboardType: widget.keyboardType, + inputFormatters: widget.inputFormatters, + enabled: widget.enabled, + keyboardAppearance: widget.keyboardAppearance, + autofocus: widget.autofocus, + textInputAction: widget.textInputAction, + autovalidateMode: widget.autovalidateMode, + ); + } + + Container _buildFlagsButton() { + return Container( + margin: widget.flagsButtonMargin, + child: DecoratedBox( + decoration: widget.dropdownDecoration, + child: InkWell( + borderRadius: widget.dropdownDecoration.borderRadius as BorderRadius?, + onTap: widget.enabled ? _changeCountry : null, + child: Padding( + padding: widget.flagsButtonPadding, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + width: 4, + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.leading) ...[ + widget.dropdownIcon, + const SizedBox(width: 4), + ], + if (widget.showCountryFlag) ...[ + kIsWeb + ? Image.asset( + 'assets/flags/${_selectedCountry.code.toLowerCase()}.png', + package: 'intl_phone_field', + width: 32, + ) + : Text( + _selectedCountry.flag, + style: const TextStyle(fontSize: 18), + ), + const SizedBox(width: 8), + ], + FittedBox( + child: Text( + '+${_selectedCountry.dialCode}', + style: widget.dropdownTextStyle, + ), + ), + if (widget.enabled && + widget.showDropdownIcon && + widget.dropdownIconPosition == IconPosition.trailing) ...[ + const SizedBox(width: 4), + widget.dropdownIcon, + ], + const SizedBox(width: 8), + ], + ), + ), + ), + ), + ); + } +} + +enum IconPosition { + leading, + trailing, +} diff --git a/lib/controller/local/phone_intel/phone_number.dart b/lib/controller/local/phone_intel/phone_number.dart new file mode 100644 index 0000000..912cb07 --- /dev/null +++ b/lib/controller/local/phone_intel/phone_number.dart @@ -0,0 +1,79 @@ +import 'countries.dart'; + +class NumberTooLongException implements Exception {} + +class NumberTooShortException implements Exception {} + +class InvalidCharactersException implements Exception {} + +class PhoneNumber { + String countryISOCode; + String countryCode; + String number; + + PhoneNumber({ + required this.countryISOCode, + required this.countryCode, + required this.number, + }); + + factory PhoneNumber.fromCompleteNumber({required String completeNumber}) { + if (completeNumber == "") { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + + try { + Country country = getCountry(completeNumber); + String number; + if (completeNumber.startsWith('+')) { + number = completeNumber.substring(1 + country.dialCode.length + country.regionCode.length); + } else { + number = completeNumber.substring(country.dialCode.length + country.regionCode.length); + } + return PhoneNumber( + countryISOCode: country.code, countryCode: country.dialCode + country.regionCode, number: number); + } on InvalidCharactersException { + rethrow; + // ignore: unused_catch_clause + } on Exception catch (e) { + return PhoneNumber(countryISOCode: "", countryCode: "", number: ""); + } + } + + bool isValidNumber() { + Country country = getCountry(completeNumber); + if (number.length < country.minLength) { + throw NumberTooShortException(); + } + + if (number.length > country.maxLength) { + throw NumberTooLongException(); + } + return true; + } + + String get completeNumber { + return countryCode + number; + } + + static Country getCountry(String phoneNumber) { + if (phoneNumber == "") { + throw NumberTooShortException(); + } + + final validPhoneNumber = RegExp(r'^[+0-9]*[0-9]*$'); + + if (!validPhoneNumber.hasMatch(phoneNumber)) { + throw InvalidCharactersException(); + } + + if (phoneNumber.startsWith('+')) { + return countries + .firstWhere((country) => phoneNumber.substring(1).startsWith(country.dialCode + country.regionCode)); + } + return countries.firstWhere((country) => phoneNumber.startsWith(country.dialCode + country.regionCode)); + } + + @override + String toString() => 'PhoneNumber(countryISOCode: $countryISOCode, countryCode: $countryCode, number: $number)'; +} diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index bb92c9e..5d406ad 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -5,6 +5,10 @@ class MyTranslation extends Translations { Map> get keys => { "ar": { "Update Available": "تحديث متوفر", + 'Phone number must be exactly 11 digits long': + "رقم الهاتف يجب أن يكون بطول 11 رقماً", + "Phone number isn't an Egyptian phone number": + "رقم الهاتف ليس رقم هاتف مصري", "A new version of the app is available. Please update to the latest version.": "تتوفر نسخة جديدة من التطبيق. يرجى التحديث إلى أحدث إصدار.", "We use location to get accurate and nearest passengers for you": @@ -154,11 +158,15 @@ iOS [https://getapp.cc/app/6458734951] "You have call from driver": " لديك مكالمة من السائق", "Comfort": "كمفورت", "Speed": "سبيد", + "Driver already has 2 trips within the specified period.": + 'السائق لديه بالفعل رحلتان خلال الفترة المحددة.', "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", "Lady": "ليدي", "You should select your country": "يجب عليك اختيار بلدك", - "Delivery": "توصيل", - "Mashwari": "‏مشواري", + "Scooter": "سكوتر", + 'A trip with a prior reservation, allowing you to choose the best captains and cars.': + 'مشوار بحجز مسبق مع إمكانية اختيارك لأفضل الكباتن والسيارات', + "Mishwar Vip": "‏مشوار VIP", 'The driver waiting you in picked location .': "السائق ينتظرك في موقع الركوب.", 'About Us': "نبذة عنا", @@ -592,7 +600,7 @@ iOS [https://getapp.cc/app/6458734951] 'الرَّجَاء التَّحَرُّك إِلَى السَّيَّارَة الآن', 'You will receive a code in WhatsApp Messenger': "سوف تتلقى رمزًا في واتساب ماسنجر", - 'Balash': 'أوفر كار', + 'Awfar Car': 'أوفر كار', "Old and affordable, perfect for budget rides.": "سيارة ميسورة التكلفة، مثالية للرحلات الاقتصادية.", " If you need to reach me, please contact the driver directly at": @@ -740,7 +748,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": 'وَقْتُ الْوُصُولِ ', "arrival time to reach your point": 'الْوَقْتُ المُتَوَقَّعُ لِلْوُصُولِ إِلَى وَجْهَتِكَ ', - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": 'بِالنِّسْبَةِ لِرِحْلَاتِ السُّرْعَةِ وَالتَّوْصِيلِ، يَتِمُّ حِسَابُ السِّعْرِ بِشَكْلٍ دِينَامِيكِيٍّ. أَمَّا بِالنِّسْبَةِ لِرِحْلَاتِ الرَّاحَةِ، فَيَتِمُّ حِسَابُ السِّعْرِ بِنَاءً عَلَى الْوَقْتِ وَالْمَسَافَةِ.', "Hello this is Driver": "مَرْحَبًا هَذَا السَّائِقُ", "Is the Passenger in your Car ?": "هَلِ الرَّاكِبُ فِي سَيَّارَتِكَ؟", @@ -762,7 +770,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "رحلة مكيفة ومسار متغير لرغبة العميل ونقاط توقف", "Insert": "إِدْرَاجُ", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "هَذَا لِلتَّسْلِيمِ أَوِ الدَّرَّاجَةِ النَّارِيَّةِ", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": '‏رحلة محددة السعر والشريك السائق ملتزم بالمسار المحدد من خلال التطبيق', @@ -801,6 +809,7 @@ iOS [https://getapp.cc/app/6458734951] "الرَّجَاء الْمُسَاعَدَة! اِتَّصِل بِي فِي أَقْرَب وَقْت مُمْكِن", "Share Trip Details": "مُشَارَكَة تَفَاصِيل الرِّحْلَة", "Car Plate is ": "‏رَقْم اللَّوْحَة", + "VIP Order": "طلب VIP", "the 300 points equal 300 L.E for you \nSo go and gain your money": "اِرْبَح ٣٠٠ جُنَيه! كُلّ ٣٠٠ نُقْطَة تُمْنِحُك ٣٠٠ جُنَيه. اِذْهَب وَاِسْتَفِد مِن نُقَاطِك!", "the 300 points equal 300 L.E": @@ -809,6 +818,7 @@ iOS [https://getapp.cc/app/6458734951] 'لم يتم الموافقة على الدفع. الرجاء المحاولة مرة أخرى.', "Payment Failed": 'فشل الدفع', "Error": 'خطأ', + 'This is a scheduled notification.': "هذا إشعار مجدول.", "An error occurred during the payment process.": 'حدث خطأ أثناء عملية الدفع.', "The payment was approved.": 'تمت الموافقة على الدفع.', @@ -923,10 +933,17 @@ iOS [https://getapp.cc/app/6458734951] "Payment History": "تاريخ المدفوعات", "Show Promos to Charge": "إظهار العروض للشحن", "Point": "نقطة", + 'How many hours would you like to wait?': + "كم عدد الساعات التي تود الانتظار؟", "Driver Wallet": "محفظة السائق", + "Choose between those Type Cars": + 'اختر من بين أنواع السيارات التالية', + "hour": ' ساعه', + 'Select Waiting Hours': "• اختر ساعات الانتظار", "Total Points is": "إجمالي النقاط هو", "You will receive a code in SMS message": "سوف تتلقى رمزًا في رسالة SMS", + "Done": 'تم', "Total Budget from trips is ": "إجمالي الميزانية من الرحلات هو ", "Total Amount:": "المبلغ الإجمالي:", "Total Budget from trips by\nCredit card is ": @@ -1558,7 +1575,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Varış zamanı", "arrival time to reach your point": "varış noktanıza ulaşmak için varış zamanı", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "Hızlı ve Teslimat seferlerinde fiyat dinamik olarak hesaplanır. Konfor gezileri için fiyat, zamana ve mesafeye bağlıdır", "Hello this is Driver": "Merhaba ben Sürücü", "Is the Passenger in your Car ?": "Yolcu Arabanızda mı?", @@ -1579,7 +1596,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "Konforlu araç ve esnek rota ve durak noktaları için en iyi seçim", "Insert": "Sokmak", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Bu teslimat veya motosiklet içindir.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Bu yolculuk, sabit bir ücret karşılığında doğrudan başlangıç ​​noktanızdan varış noktanıza gider. Sürücü planlanan rotayı takip etmelidir", @@ -2388,8 +2405,8 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Heure d'arrivée", "arrival time to reach your point": "heure d'arrivée pour atteindre votre point", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Pour les courses Speed ​​et Delivery, le prix est calculé dynamiquement. Pour les trajets Confort, le prix est fonction du temps et de la distance", + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Pour les courses Speed ​​et scooter, le prix est calculé dynamiquement. Pour les trajets Confort, le prix est fonction du temps et de la distance", "Hello this is Driver": "Bonjour, c'est Driver", "Is the Passenger in your Car ?": "Le passager est-il dans votre voiture ?", @@ -2410,7 +2427,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "Meilleur choix pour une voiture de confort et un itinéraire et un point d'arrêt flexibles", "Insert": "Insérer", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "C'est pour une livraison ou une moto.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Ce voyage va directement de votre point de départ à votre destination pour un prix fixe. Le chauffeur doit suivre l'itinéraire prévu", @@ -3230,8 +3247,8 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Ankunftszeit", "arrival time to reach your point": "Ankunftszeit, um Ihren Punkt zu erreichen", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Für Speed- und Delivery-Fahrten wird der Preis dynamisch berechnet. Bei Komfortfahrten richtet sich der Preis nach Zeit und Entfernung", + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Für Speed- und scooter-Fahrten wird der Preis dynamisch berechnet. Bei Komfortfahrten richtet sich der Preis nach Zeit und Entfernung", "Hello this is Driver": "Hallo, hier ist Driver", "Is the Passenger in your Car ?": "Befindet sich der Beifahrer in Ihrem Auto?", @@ -3252,7 +3269,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "Beste Wahl für ein komfortables Auto und eine flexible Route und Haltestellen", "Insert": "Einfügen", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Dies ist für die Lieferung oder ein Motorrad.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Diese Reise führt zum Festpreis direkt von Ihrem Startpunkt zu Ihrem Ziel. Der Fahrer muss der geplanten Route folgen", @@ -4063,7 +4080,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Hora de llegada", "arrival time to reach your point": "Hora de llegada para llegar a tu punto.", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "Para viajes de Velocidad y Entrega, el precio se calcula dinámicamente. Para viajes Comfort, el precio se basa en tiempo y distancia.", "Hello this is Driver": "Hola, este es el conductor.", "Is the Passenger in your Car ?": @@ -4085,7 +4102,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "La mejor opción para un vehículo cómodo y una ruta y un punto de parada flexibles", "Insert": "Insertar", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Esto es para entrega o una motocicleta.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Este viaje va directamente desde su punto de partida a su destino por un precio fijo. El conductor debe seguir la ruta planificada.", @@ -4881,7 +4898,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "زمان رسیدن", "arrival time to reach your point": "زمان رسیدن برای رسیدن به نقطه خود", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "برای سفرهای سرعت و تحویل، قیمت به صورت پویا محاسبه می شود. برای سفرهای Comfort، قیمت بر اساس زمان و مسافت است", "Hello this is Driver": "سلام این راننده است", "Is the Passenger in your Car ?": "آیا مسافر در ماشین شماست؟", @@ -4902,7 +4919,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "بهترین انتخاب برای ماشین راحت و مسیر انعطاف پذیر و نقطه توقف", "Insert": "درج کنید", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "این برای تحویل یا موتور سیکلت است.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "این سفر مستقیماً از نقطه شروع شما به مقصد شما با قیمت ثابت می رود. راننده باید مسیر برنامه ریزی شده را دنبال کند", @@ -5708,7 +5725,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Ωρα άφιξης", "arrival time to reach your point": "ώρα άφιξης για να φτάσετε στο σημείο σας", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "Για ταξίδια Ταχύτητας και Παράδοσης, η τιμή υπολογίζεται δυναμικά. Για Comfort ταξίδια, η τιμή βασίζεται σε χρόνο και απόσταση", "Hello this is Driver": "Γεια σας, αυτός είναι ο οδηγός", "Is the Passenger in your Car ?": @@ -5730,7 +5747,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "Η καλύτερη επιλογή για αυτοκίνητο άνεσης και ευέλικτη διαδρομή και σημείο στάσεων", "Insert": "Εισάγετε", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Αυτό είναι για παράδοση ή μοτοσυκλέτα.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Αυτό το ταξίδι πηγαίνει απευθείας από το σημείο εκκίνησης στον προορισμό σας για μια σταθερή τιμή. Ο οδηγός πρέπει να ακολουθήσει την προγραμματισμένη διαδρομή", @@ -6539,7 +6556,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "آمد کے وقت", "arrival time to reach your point": "آپ کے نقطہ تک پہنچنے کے لئے آمد کا وقت", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "سپیڈ اور ڈیلیوری ٹرپس کے لیے، قیمت کا حساب متحرک طور پر کیا جاتا ہے۔ آرام دہ دوروں کے لیے، قیمت وقت اور فاصلے پر مبنی ہے۔", "Hello this is Driver": "ہیلو یہ ڈرائیور ہے۔", "Is the Passenger in your Car ?": "کیا مسافر آپ کی گاڑی میں ہے؟", @@ -6560,7 +6577,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "آرام دہ کار اور لچکدار روٹ اور اسٹاپ پوائنٹ کے لیے بہترین انتخاب", "Insert": "داخل کریں", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "یہ ڈیلیوری یا موٹرسائیکل کے لیے ہے۔", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "یہ سفر ایک مقررہ قیمت پر آپ کے نقطہ آغاز سے براہ راست آپ کی منزل تک جاتا ہے۔ ڈرائیور کو منصوبہ بند راستے پر چلنا چاہیے۔", @@ -7357,7 +7374,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "आगमन का समय", "arrival time to reach your point": "अपनी बात तक पहुंचने के लिए आगमन का समय", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "स्पीड और डिलीवरी ट्रिप के लिए, कीमत की गणना गतिशील रूप से की जाती है। आरामदायक यात्राओं के लिए, कीमत समय और दूरी पर आधारित होती है", "Hello this is Driver": "नमस्ते, मैं ड्राइवर हूं", "Is the Passenger in your Car ?": "क्या यात्री आपकी कार में है?", @@ -7379,7 +7396,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "आरामदायक कार और लचीले मार्ग और स्टॉप पॉइंट के लिए सर्वोत्तम विकल्प", "Insert": "डालना", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "यह डिलीवरी या मोटरसाइकिल के लिए है।", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "यह यात्रा एक निश्चित कीमत पर आपके शुरुआती बिंदु से सीधे आपके गंतव्य तक जाती है। चालक को नियोजित मार्ग का पालन करना होगा", @@ -8183,7 +8200,7 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Время прибытия", "arrival time to reach your point": "время прибытия, чтобы добраться до вашей точки", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "Для поездок «Скорость» и «Доставка» цена рассчитывается динамически. Для поездок Комфорт цена зависит от времени и расстояния.", "Hello this is Driver": "Привет, это Драйвер", "Is the Passenger in your Car ?": "Пассажир в вашей машине?", @@ -8204,7 +8221,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "Лучший выбор для комфортного автомобиля, гибкого маршрута и остановок.", "Insert": "Вставлять", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Это на доставку или мотоцикл.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Эта поездка идет прямо от отправной точки до пункта назначения по фиксированной цене. Водитель должен следовать запланированному маршруту", @@ -9014,8 +9031,8 @@ iOS [https://getapp.cc/app/6458734951] "Arrival time": "Orario di arrivo", "arrival time to reach your point": "orario di arrivo per raggiungere il tuo punto", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "Per i viaggi Speed ​​e Delivery il prezzo viene calcolato dinamicamente. Per i viaggi Comfort il prezzo dipende dal tempo e dalla distanza", + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "Per i viaggi Speed ​​e scooter il prezzo viene calcolato dinamicamente. Per i viaggi Comfort il prezzo dipende dal tempo e dalla distanza", "Hello this is Driver": "Ciao, sono Driver", "Is the Passenger in your Car ?": "Il passeggero è nella tua auto?", "Please wait for the passenger to enter the car before starting the trip.": @@ -9035,7 +9052,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "La scelta migliore per un'auto confortevole e un percorso flessibile e punti di sosta", "Insert": "Inserire", - "This is for delivery or a motorcycle.": + "This is for scooter or a motorcycle.": "Questo è per la consegna o una moto.", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "Questo viaggio va direttamente dal tuo punto di partenza alla tua destinazione a un prezzo fisso. L'autista deve seguire il percorso previsto", @@ -9776,7 +9793,7 @@ iOS [https://getapp.cc/app/6458734951] "Cost Of Trip IS": "旅行费用是", "Arrival time": "到达时间", "arrival time to reach your point": "到达目的地的到达时间", - "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": + "For Speed and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "对于速度和送货行程,价格是动态计算的。对于舒适旅行,价格根据时间和距离而定", "Hello this is Driver": "你好,这是司机", "Is the Passenger in your Car ?": "乘客在你的车里吗?", @@ -9794,7 +9811,7 @@ iOS [https://getapp.cc/app/6458734951] "Best choice for comfort car and flexible route and stops point": "舒适用车、灵活路线和停靠点的最佳选择", "Insert": "插入", - "This is for delivery or a motorcycle.": "这是用于送货或摩托车。", + "This is for scooter or a motorcycle.": "这是用于送货或摩托车。", "This trip goes directly from your starting point to your destination for a fixed price. The driver must follow the planned route": "此行程以固定价格直接从您的出发地前往目的地。司机必须按照计划的路线行驶", "You can decline a request without any cost": "您可以拒绝请求,无需支付任何费用", diff --git a/lib/views/auth/sms_verfy_page.dart b/lib/views/auth/sms_verfy_page.dart index f2428b5..1889d03 100644 --- a/lib/views/auth/sms_verfy_page.dart +++ b/lib/views/auth/sms_verfy_page.dart @@ -1,11 +1,16 @@ import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/auth/register_controller.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/my_textField.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import '../../controller/local/phone_intel/intl_phone_field.dart'; +import '../../print.dart'; +// import 'package:intl_phone_field/intl_phone_field.dart'; + class SmsSignupEgypt extends StatelessWidget { SmsSignupEgypt({super.key}); @@ -17,7 +22,6 @@ class SmsSignupEgypt extends StatelessWidget { body: [ GetBuilder(builder: (registerController) { return ListView( - // mainAxisAlignment: MainAxisAlignment.center, children: [ // Logo at the top Padding( @@ -38,54 +42,59 @@ class SmsSignupEgypt extends StatelessWidget { style: AppStyle.title, ), ), - // Enter phone number text + // Phone number input field with country code dropdown Padding( - padding: - const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), - child: Text( - 'Enter your phone number'.tr, - textAlign: TextAlign.center, - style: AppStyle.title, + padding: const EdgeInsets.all(16.0), + child: IntlPhoneField( + decoration: InputDecoration( + labelText: 'Phone Number'.tr, + border: const OutlineInputBorder( + borderSide: BorderSide(), + ), + ), + initialCountryCode: 'EG', + onChanged: (phone) { + // Properly concatenate country code and number + registerController.phoneController.text = + phone.completeNumber.toString(); + Log.print(' phone.number: ${phone.number}'); + print( + "Formatted phone number: ${registerController.phoneController.text}"); + }, + validator: (phone) { + // Check if the phone number is not null and is valid + if (phone == null || phone.completeNumber.isEmpty) { + return 'Please enter your phone number'; + } + + // Extract the phone number (excluding the country code) + final number = phone.completeNumber.toString(); + + // Check if the number length is exactly 11 digits + if (number.length != 13) { + return 'Phone number must be exactly 11 digits long'; + } + + // If all validations pass, return null + return null; + }, ), ), - // Phone number input field - Padding( - padding: const EdgeInsets.all(16.0), - child: !registerController.isSent - ? Form( - key: registerController.formKey3, - child: MyTextForm( - controller: registerController.phoneController, - label: 'Enter your phone number'.tr, - hint: 'Enter your phone number'.tr, - type: TextInputType.phone), - ) - : Container( - decoration: AppStyle.boxDecoration1, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - registerController.phoneController.text, - style: AppStyle.title, - ), - ), - )), const SizedBox( height: 10, ), if (registerController.isSent) Padding( - padding: const EdgeInsets.all(16.0), - child: registerController.isSent - ? Form( - key: registerController.formKey3, - child: MyTextForm( - controller: registerController.verifyCode, - label: '5 digit'.tr, - hint: '5 digit'.tr, - type: TextInputType.number), - ) - : const SizedBox()), + padding: const EdgeInsets.all(16.0), + child: Form( + key: registerController.formKey3, + child: MyTextForm( + controller: registerController.verifyCode, + label: '5 digit'.tr, + hint: '5 digit'.tr, + type: TextInputType.number), + ), + ), // Submit button MyElevatedButton( onPressed: () async { diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart index 6f22a58..118c54f 100644 --- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart +++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart @@ -35,7 +35,7 @@ List carTypes = [ image: 'assets/images/carspeed.png', ), CarType( - carType: 'Balash', + carType: 'Awfar Car', carDetail: "Old and affordable, perfect for budget rides.".tr, image: 'assets/images/balash.png', ), @@ -45,15 +45,20 @@ List carTypes = [ image: 'assets/images/lady.png', ), CarType( - carType: 'Delivery', + carType: 'Scooter', carDetail: 'Delivery service'.tr, image: 'assets/images/moto.png', ), CarType( - carType: 'Mashwari', + carType: 'Mishwar Vip', carDetail: 'Mashwari without end point'.tr, image: 'assets/images/freeRide.png', ), + CarType( + carType: 'Pink Bike', + carDetail: "Best choice for cities".tr, + image: 'assets/images/pinkBike.png', + ), CarType( carType: 'Rayeh Gai', carDetail: "Best choice for cities".tr, @@ -68,6 +73,26 @@ class CarDetailsTypeToChoose extends StatelessWidget { Widget build(BuildContext context) { return GetBuilder( builder: (mapPassengerController) { + if (mapPassengerController.distance > 40) { + carTypes.add( + CarType( + carType: 'Rayeh Gai', + carDetail: "Best choice for cities".tr, + image: 'assets/images/roundtrip.png', + ), + ); + if (carTypes.length > 8) { + carTypes.removeRange(8, carTypes.length); + } + } // Create a Set to remove duplicates based on the `carType` field + else if (carTypes.length > 7) { + carTypes.removeRange(7, carTypes.length); + } + Set uniqueCarTypes = {}; + uniqueCarTypes.addAll(carTypes); + +// Convert the Set back to a List + carTypes = uniqueCarTypes.toList(); return mapPassengerController.data.isNotEmpty && mapPassengerController.isBottomSheetShown && mapPassengerController.rideConfirm == false @@ -138,25 +163,31 @@ class CarDetailsTypeToChoose extends StatelessWidget { ? mapPassengerController .totalPassengerSpeed .toStringAsFixed(2) - : carType.carType == 'Balash' + : carType.carType == 'Awfar Car' ? mapPassengerController .totalPassengerBalash .toStringAsFixed(2) - : carType.carType == 'Delivery' + : carType.carType == 'Scooter' ? mapPassengerController - .totalPassengerMotoDelivery + .totalPassengerScooter .toStringAsFixed(2) : carType.carType == 'Lady' ? mapPassengerController .totalPassengerLady .toStringAsFixed(2) : carType.carType == - 'Rayeh Gai' + 'Pink Bike' ? mapPassengerController - .totalPassengerRayehGai + .totalPassengerScooter .toStringAsFixed( 2) - : '50', + : carType.carType == + 'Rayeh Gai' + ? mapPassengerController + .totalPassengerRayehGai + .toStringAsFixed( + 2) + : '50', style: AppStyle.title.copyWith(fontSize: 20), ), @@ -228,7 +259,8 @@ class CarDetailsTypeToChoose extends StatelessWidget { ) ], ) - : carType.carType == 'Balash' && + : carType.carType == + 'Awfar Car' && (mapPassengerController .totalPassengerBalash > 15) @@ -400,12 +432,12 @@ class CarDetailsTypeToChoose extends StatelessWidget { } else if (mapPassengerController .selectedIndex == 4) { - box.write(BoxName.carType, 'Delivery'); + box.write(BoxName.carType, 'Scooter'); mapPassengerController.totalPassenger = mapPassengerController - .totalPassengerMotoDelivery; + .totalPassengerScooter; Get.defaultDialog( - title: 'Delivery'.tr, + title: 'Scooter'.tr, titleStyle: AppStyle.title, content: CarDialogue( textToSpeechController: @@ -431,13 +463,47 @@ class CarDetailsTypeToChoose extends StatelessWidget { onPressed: () { Get.back(); })); + } else if (mapPassengerController + .selectedIndex == + 6) { + box.write(BoxName.carType, 'Pink Bike'); + mapPassengerController.totalPassenger = + mapPassengerController + .totalPassengerScooter; + Get.defaultDialog( + title: 'Pink Bike'.tr, + titleStyle: AppStyle.title, + content: CarDialogue( + textToSpeechController: + textToSpeechController, + image: 'assets/images/pinkBike.png', + text: + 'This is for delivery or a motorcycle.' + .tr), + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Next'.tr, + onPressed: () { + Get.back(); + mapPassengerController + .isBottomSheetShown = false; + mapPassengerController.update(); + mapPassengerController + .changeCashConfirmPageShown(); + }), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); + })); } else if (mapPassengerController .selectedIndex == 5) { - box.write(BoxName.carType, 'Mashwari'); + box.write(BoxName.carType, 'Mishwar Vip'); mapPassengerController.totalPassenger = 50; Get.defaultDialog( - title: 'Mashwari'.tr, + title: 'Mishwar Vip'.tr, titleStyle: AppStyle.title, content: CarDialogue( textToSpeechController: @@ -463,12 +529,12 @@ class CarDetailsTypeToChoose extends StatelessWidget { } else if (mapPassengerController .selectedIndex == 2) { - box.write(BoxName.carType, 'Balash'); + box.write(BoxName.carType, 'Awfar Car'); mapPassengerController.totalPassenger = mapPassengerController .totalPassengerBalash; Get.defaultDialog( - title: 'Balash'.tr, + title: 'Awfar Car'.tr, titleStyle: AppStyle.title, content: CarDialogue( textToSpeechController: @@ -539,7 +605,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { })); } else if (mapPassengerController .selectedIndex == - 6) { + 7) { box.write(BoxName.carType, 'Rayeh Gai'); mapPassengerController.totalPassenger = mapPassengerController.totalPassengerLady; 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 f8eb189..d004ed5 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 @@ -112,23 +112,23 @@ GetBuilder leftMainMenuIcons() { // ), // ), // ), - AnimatedContainer( - duration: const Duration(microseconds: 200), - width: controller.widthMapTypeAndTraffic, - decoration: BoxDecoration( - color: AppColor.secondaryColor, - border: Border.all(), - borderRadius: BorderRadius.circular(15)), - child: IconButton( - onPressed: () async { - Get.to(SmsSignupEgypt()); - }, - icon: const Icon( - Icons.chat, - size: 29, - ), - ), - ), + // AnimatedContainer( + // duration: const Duration(microseconds: 200), + // width: controller.widthMapTypeAndTraffic, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // border: Border.all(), + // borderRadius: BorderRadius.circular(15)), + // child: IconButton( + // onPressed: () async { + // Get.to(SmsSignupEgypt()); + // }, + // icon: const Icon( + // Icons.chat, + // size: 29, + // ), + // ), + // ), // AnimatedContainer( // duration: const Duration(microseconds: 200), // width: controller.widthMapTypeAndTraffic, diff --git a/pubspec.lock b/pubspec.lock index ef5874b..ee69585 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1132,18 +1132,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.4" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: @@ -1244,18 +1244,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" mime: dependency: transitive description: @@ -1728,10 +1728,10 @@ packages: dependency: transitive description: name: test_api - sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.7.0" + version: "0.7.2" timezone: dependency: transitive description: @@ -1944,10 +1944,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "14.2.1" + version: "14.2.5" wakelock_plus: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index c393816..893a32d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,6 +61,7 @@ dependencies: package_info_plus: ^8.0.0 uni_links: ^0.5.1 googleapis_auth: ^1.6.0 + # intl_phone_field: ^3.1.0 dev_dependencies: flutter_test: From ad7083f93a2fc77f2909d3f7af910ca555773999 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 15 Sep 2024 12:53:55 +0300 Subject: [PATCH 02/16] 9/15/2 --- android/app/build.gradle | 3 +- android/app/proguard-rules.pro | 30 ++ ios/Podfile.lock | 250 ++++++------ lib/controller/auth/register_controller.dart | 233 +++++------ lib/controller/functions/sms_controller.dart | 2 +- lib/views/auth/sms_verfy_page.dart | 19 +- macos/Flutter/GeneratedPluginRegistrant.swift | 4 + pubspec.lock | 373 +++++++++--------- pubspec.yaml | 6 +- 9 files changed, 491 insertions(+), 429 deletions(-) create mode 100644 android/app/proguard-rules.pro diff --git a/android/app/build.gradle b/android/app/build.gradle index 0b1138a..45a617c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -183,7 +183,8 @@ dependencies { implementation "com.stripe:stripe-android:20.47.0" implementation 'com.stripe:paymentsheet:20.47.0' + // If push provisioning is needed, make sure you have the correct version: - implementation "com.stripe:stripe-android-pushprovisioning:VERSION" // Replace VERSION with the correct one. +// implementation "com.stripe:stripe-android-pushprovisioning:VERSION" // Replace VERSION with the correct one. } \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..ef62132 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,30 @@ +# Suppress warnings for specific Google ML Kit and Stripe classes +-dontwarn com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions +-dontwarn com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions$Builder +-dontwarn com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivity$g +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Args +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Error +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter +-dontwarn com.stripe.android.pushProvisioning.PushProvisioningEphemeralKeyProvider + +# Keep rules for Google ML Kit +-keep class com.google.mlkit.vision.** { *; } +-keep class com.google.mlkit.vision.text.** { *; } +-keep class com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.chinese.ChineseTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.devanagari.DevanagariTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.japanese.JapaneseTextRecognizerOptions$Builder { *; } +-keep class com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions { *; } +-keep class com.google.mlkit.vision.text.korean.KoreanTextRecognizerOptions$Builder { *; } + +# Keep rules for Stripe +-keep class com.stripe.android.** { *; } +-keep class com.stripe.android.pushProvisioning.** { *; } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2de2cf2..5626f3a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -9,53 +9,58 @@ PODS: - Flutter - device_info_plus (0.0.1): - Flutter - - Firebase/Auth (10.28.0): + - Firebase/Auth (11.0.0): - Firebase/CoreOnly - - FirebaseAuth (~> 10.28.0) - - Firebase/CoreOnly (10.28.0): - - FirebaseCore (= 10.28.0) - - Firebase/Messaging (10.28.0): + - FirebaseAuth (~> 11.0.0) + - Firebase/CoreOnly (11.0.0): + - FirebaseCore (= 11.0.0) + - Firebase/Messaging (11.0.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.28.0) - - firebase_auth (5.1.2): - - Firebase/Auth (= 10.28.0) + - FirebaseMessaging (~> 11.0.0) + - firebase_auth (5.2.0): + - Firebase/Auth (= 11.0.0) - firebase_core - Flutter - - firebase_core (3.2.0): - - Firebase/CoreOnly (= 10.28.0) + - firebase_core (3.4.0): + - Firebase/CoreOnly (= 11.0.0) - Flutter - - firebase_messaging (15.0.3): - - Firebase/Messaging (= 10.28.0) + - firebase_messaging (15.1.0): + - Firebase/Messaging (= 11.0.0) - firebase_core - Flutter - - FirebaseAppCheckInterop (10.29.0) - - FirebaseAuth (10.28.0): - - FirebaseAppCheckInterop (~> 10.17) - - FirebaseCore (~> 10.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - FirebaseAppCheckInterop (11.2.0) + - FirebaseAuth (11.0.0): + - FirebaseAppCheckInterop (~> 11.0) + - FirebaseAuthInterop (~> 11.0) + - FirebaseCore (~> 11.0) + - FirebaseCoreExtension (~> 11.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GTMSessionFetcher/Core (~> 3.4) - RecaptchaInterop (~> 100.0) - - FirebaseCore (10.28.0): - - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.12) - - GoogleUtilities/Logger (~> 7.12) - - FirebaseCoreInternal (10.29.0): - - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.29.0): - - FirebaseCore (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.28.0): - - FirebaseCore (~> 10.0) - - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.3) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Reachability (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - nanopb (< 2.30911.0, >= 2.30908.0) + - FirebaseAuthInterop (11.2.0) + - FirebaseCore (11.0.0): + - FirebaseCoreInternal (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Logger (~> 8.0) + - FirebaseCoreExtension (11.2.0): + - FirebaseCore (~> 11.0) + - FirebaseCoreInternal (11.2.0): + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - FirebaseInstallations (11.2.0): + - FirebaseCore (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (11.0.0): + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Reachability (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) - Flutter (1.0.0) - flutter_local_notifications (0.0.1): - Flutter @@ -65,8 +70,11 @@ PODS: - Flutter - geolocator_apple (1.2.0): - Flutter + - Google-Maps-iOS-Utils (5.0.0): + - GoogleMaps (~> 8.0) - google_maps_flutter_ios (0.0.1): - Flutter + - Google-Maps-iOS-Utils (< 7.0, >= 5.0) - GoogleMaps (< 10.0, >= 8.4) - google_sign_in_ios (0.0.1): - AppAuth (>= 1.7.4) @@ -74,10 +82,9 @@ PODS: - FlutterMacOS - GoogleSignIn (~> 7.1) - GTMSessionFetcher (>= 3.4.0) - - GoogleDataTransport (9.4.1): - - GoogleUtilities/Environment (~> 7.7) - - nanopb (< 2.30911.0, >= 2.30908.0) - - PromisesObjC (< 3.0, >= 1.2) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) - GoogleMaps (8.4.0): - GoogleMaps/Maps (= 8.4.0) - GoogleMaps/Base (8.4.0) @@ -87,29 +94,28 @@ PODS: - AppAuth (< 2.0, >= 1.7.3) - GTMAppAuth (< 5.0, >= 4.1.1) - GTMSessionFetcher/Core (~> 3.3) - - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - GoogleUtilities/AppDelegateSwizzler (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Environment (8.0.2): - GoogleUtilities/Privacy - - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.13.3): + - GoogleUtilities/Logger (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/Network (8.0.2): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.13.3)": + - "GoogleUtilities/NSData+zlib (8.0.2)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (7.13.3) - - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Privacy (8.0.2) + - GoogleUtilities/Reachability (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (7.13.3): + - GoogleUtilities/UserDefaults (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GTMAppAuth (4.1.1): @@ -129,13 +135,14 @@ PODS: - Flutter - local_auth_darwin (0.0.1): - Flutter + - FlutterMacOS - location (0.0.1): - Flutter - - nanopb (2.30910.0): - - nanopb/decode (= 2.30910.0) - - nanopb/encode (= 2.30910.0) - - nanopb/decode (2.30910.0) - - nanopb/encode (2.30910.0) + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) - package_info_plus (0.4.5): - Flutter - path_provider_foundation (0.0.1): @@ -155,42 +162,42 @@ PODS: - sqflite (0.0.3): - Flutter - FlutterMacOS - - Stripe (23.27.6): - - StripeApplePay (= 23.27.6) - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripePaymentsUI (= 23.27.6) - - StripeUICore (= 23.27.6) + - Stripe (23.28.3): + - StripeApplePay (= 23.28.3) + - StripeCore (= 23.28.3) + - StripePayments (= 23.28.3) + - StripePaymentsUI (= 23.28.3) + - StripeUICore (= 23.28.3) - stripe_ios (0.0.1): - Flutter - - Stripe (~> 23.27.0) - - StripeApplePay (~> 23.27.0) - - StripeFinancialConnections (~> 23.27.0) - - StripePayments (~> 23.27.0) - - StripePaymentSheet (~> 23.27.0) - - StripePaymentsUI (~> 23.27.0) - - StripeApplePay (23.27.6): - - StripeCore (= 23.27.6) - - StripeCore (23.27.6) - - StripeFinancialConnections (23.27.6): - - StripeCore (= 23.27.6) - - StripeUICore (= 23.27.6) - - StripePayments (23.27.6): - - StripeCore (= 23.27.6) - - StripePayments/Stripe3DS2 (= 23.27.6) - - StripePayments/Stripe3DS2 (23.27.6): - - StripeCore (= 23.27.6) - - StripePaymentSheet (23.27.6): - - StripeApplePay (= 23.27.6) - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripePaymentsUI (= 23.27.6) - - StripePaymentsUI (23.27.6): - - StripeCore (= 23.27.6) - - StripePayments (= 23.27.6) - - StripeUICore (= 23.27.6) - - StripeUICore (23.27.6): - - StripeCore (= 23.27.6) + - Stripe (~> 23.28.0) + - StripeApplePay (~> 23.28.0) + - StripeFinancialConnections (~> 23.28.0) + - StripePayments (~> 23.28.0) + - StripePaymentSheet (~> 23.28.0) + - StripePaymentsUI (~> 23.28.0) + - StripeApplePay (23.28.3): + - StripeCore (= 23.28.3) + - StripeCore (23.28.3) + - StripeFinancialConnections (23.28.3): + - StripeCore (= 23.28.3) + - StripeUICore (= 23.28.3) + - StripePayments (23.28.3): + - StripeCore (= 23.28.3) + - StripePayments/Stripe3DS2 (= 23.28.3) + - StripePayments/Stripe3DS2 (23.28.3): + - StripeCore (= 23.28.3) + - StripePaymentSheet (23.28.3): + - StripeApplePay (= 23.28.3) + - StripeCore (= 23.28.3) + - StripePayments (= 23.28.3) + - StripePaymentsUI (= 23.28.3) + - StripePaymentsUI (23.28.3): + - StripeCore (= 23.28.3) + - StripePayments (= 23.28.3) + - StripeUICore (= 23.28.3) + - StripeUICore (23.28.3): + - StripeCore (= 23.28.3) - TOCropViewController (2.7.4) - uni_links (0.0.1): - Flutter @@ -205,6 +212,7 @@ PODS: - Flutter - webview_flutter_wkwebview (0.0.1): - Flutter + - FlutterMacOS DEPENDENCIES: - audio_session (from `.symlinks/plugins/audio_session/ios`) @@ -237,7 +245,7 @@ DEPENDENCIES: - vibration (from `.symlinks/plugins/vibration/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) + - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) SPEC REPOS: trunk: @@ -245,10 +253,13 @@ SPEC REPOS: - Firebase - FirebaseAppCheckInterop - FirebaseAuth + - FirebaseAuthInterop - FirebaseCore + - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseInstallations - FirebaseMessaging + - Google-Maps-iOS-Utils - GoogleDataTransport - GoogleMaps - GoogleSignIn @@ -330,41 +341,44 @@ EXTERNAL SOURCES: wakelock_plus: :path: ".symlinks/plugins/wakelock_plus/ios" webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/ios" + :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" SPEC CHECKSUMS: AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d - Firebase: 5121c624121af81cbc81df3bda414b3c28c4f3c3 - firebase_auth: e778ee89483b86fe4200d1f8e9a1c52aa5fb64a8 - firebase_core: a9d0180d5285527884d07a41eb4a9ec9ed12cdb6 - firebase_messaging: ccc82a143a74de75f440a4e413dbbb37ec3fddbc - FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07 - FirebaseAuth: 3d872fbbfc4223edeb72769e488f325fa8b0a4a9 - FirebaseCore: 857dc1c6dd1255675047404d8466f7dfaac5d779 - FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323 + Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9 + firebase_auth: 16ac5db3d064db837ecd845080d7e18e4be7c66d + firebase_core: ceec591a66629daaee82d3321551692c4a871493 + firebase_messaging: 15d8b557010f3bb7b98d0302e1c7c8fbcd244425 + FirebaseAppCheckInterop: ea21450529cf0ebd132788dd8916a0269abc684f + FirebaseAuth: d5cf28be74d7e82257f6a3f717509eff70d3cf4a + FirebaseAuthInterop: 47c09558af5d1b31f16fb352387c72d4804f4a24 + FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383 + FirebaseCoreExtension: cda74ddfb001224bd8fd1d6e74698b4ed07803de + FirebaseCoreInternal: 0c569513412da9f3b31bd0b340013bbee8f295c5 + FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a + FirebaseMessaging: d2d1d9c62c46dd2db49a952f7deb5b16ad2c9742 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450 - google_maps_flutter_ios: 5bc2be60ad012e79b182ce0fb0ef5030a50fb03e + Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 + google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3 google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 - GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db - GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa - local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab + local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3 location: d5cf8598915965547c3f36761ae9cc4f4e87d22e - nanopb: 438bc412db1928dac798aa6fd75726007be04262 + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 @@ -374,22 +388,22 @@ SPEC CHECKSUMS: share: 0b2c3e82132f5888bccca3351c504d0003b3b410 sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - Stripe: 9fec845645e39f371e6898926d096fd9c2feb5a5 - stripe_ios: 03c617acee72e48a2d055d096a4b0ed2afebb256 - StripeApplePay: 5f017e8dfe259fafbab70137776189deef754bb2 - StripeCore: 01ec57f0dddfe742054dc6a322f811426c25313d - StripeFinancialConnections: 56698cb6274bf89fb8c76b934f6156f368e97765 - StripePayments: 6adf11faf1b7038e77aa97019410305c6adca79d - StripePaymentSheet: 3eaf870c4388e44b0cc37e4c69d00b6957fd8bd7 - StripePaymentsUI: 59ccddeacad592b09fa67e8d641340820ddb4751 - StripeUICore: 879bbf5889265db13f52fac8aad7a176ba62481f + Stripe: cdf416cf2efe286f532a6306de0fcaa0ecc8c71a + stripe_ios: 91946e5c07e0a0dc0e1484ee6659e1f90a302cf3 + StripeApplePay: efb62ffc08e6cd4f161d77ddb45de2451075c54e + StripeCore: 9731f05e327c3dcaf7d7abd116840ceaa9482bbe + StripeFinancialConnections: 46c0049aaab3a179193502bce4a8096eb7b73f55 + StripePayments: dd1867a620b0b8b5e294e9ff2f1f7b7770765f47 + StripePaymentSheet: d155dfde74e90784d054deffb4f561a1f6dd638f + StripePaymentsUI: c24f990b03a68a7f6fe704b15dd487e7bb6b603e + StripeUICore: f2d514e900c37436dc5427fdf2c29d68ab1c2935 TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241 video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1 - webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1 + webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 PODFILE CHECKSUM: d9271c147dd54ffd9ca5d77bf00ca21a1c9a5961 diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index cf76827..6560a59 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'dart:math'; import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/controller/local/phone_intel/phone_number.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:flutter/material.dart'; @@ -116,7 +117,8 @@ class RegisterController extends GetxController { sendOtpMessage() async { SmsEgyptController smsEgyptController; - + isLoading = true; + update(); try { // Initialize SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); @@ -156,27 +158,27 @@ class RegisterController extends GetxController { } else { // If the phone number is not verified, send OTP if (isEgyptianNumber) { - if (isValidEgyptianPhoneNumber( - phoneNumber.toString().split('+2')[1])) { - await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, - smsEgyptController); - } + // if (isValidEgyptianPhoneNumber( + // phoneNumber.toString().split('+2')[1])) { + await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, + smsEgyptController); + // } } } } else { // If verification check fails, still send OTP if (isEgyptianNumber) { - if (isValidEgyptianPhoneNumber( - phoneNumber.toString().split('+2')[1])) { - await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, - smsEgyptController); - } else { - MyDialog().getDialog( - 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, - () { - Get.back(); - }); - } + // if (isValidEgyptianPhoneNumber( + // phoneNumber.toString().split('+2')[1])) { + await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, + smsEgyptController); + // } else { + // MyDialog().getDialog( + // 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, + // () { + // Get.back(); + // }); + // } } } } else { @@ -205,30 +207,32 @@ class RegisterController extends GetxController { Log.print('phoneNumber: ${phoneNumber}'); if (isEgyptian) { - // Check if the phone number has exactly 11 digits - if (phoneNumber.length == 11 && - RegExp(r'^\d{11}$').hasMatch(phoneNumber)) { - // Send SMS for Egyptian phone numbers - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': phoneNumber, - 'token': otp.toString(), - }); + // // Check if the phone number has exactly 11 digits + // if (phoneNumber.length == 11 && + // RegExp(r'^\d{11}$').hasMatch(phoneNumber)) { + // Send SMS for Egyptian phone numbers + await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': phoneNumber, + 'token': otp.toString(), + }); - await controller.sendSmsEgypt(phoneNumber, otp.toString()); - print('SMS sent to Egyptian phone number: $phoneNumber'); - } else { - // Show error dialog if phone number is invalid - MyDialog().getDialog('Invalid Phone Number', - 'The phone number must be exactly 11 digits long.', () { - Get.back(); - }); - } + await controller.sendSmsEgypt(phoneNumber, otp.toString()); + print('SMS sent to Egyptian phone number: $phoneNumber'); } else { + // // Show error dialog if phone number is invalid + // MyDialog().getDialog('Invalid Phone Number', + // 'The phone number must be exactly 11 digits long.', () { + // Get.back(); + // }); + // } + + // else { // Send WhatsApp message for non-Egyptian phone numbers await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString()); print('WhatsApp message sent to non-Egyptian phone number: $phoneNumber'); } - + isLoading = false; + update(); isSent = true; remainingTime = 300; // Reset to 5 minutes startTimer(); @@ -236,91 +240,92 @@ class RegisterController extends GetxController { verifySMSCode() async { // if (formKey3.currentState!.validate()) { - if (isValidEgyptianPhoneNumber(phoneController.text)) { - var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { - 'phone_number': '+2${phoneController.text}', - 'token': verifyCode.text.toString(), - }); - if (res != 'failure') { - // var dec = jsonDecode(res); - box.write(BoxName.phoneDriver, '+2${phoneController.text}'); - var payload = { - 'id': box.read(BoxName.passengerID), - 'phone': '+2${phoneController.text}', - 'email': box.read(BoxName.email), - 'password': 'unknown', - 'gender': 'unknown', - 'birthdate': '2002-01-01', - 'site': 'unknown', - 'first_name': box.read(BoxName.name).toString().split(' ')[0], - 'last_name': box.read(BoxName.name).toString().split(' ')[1], - }; + Log.print('phoneController.text: ${phoneController.text}'); + // if (isValidEgyptianPhoneNumber(phoneController.text)) { + var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { + 'phone_number': phoneController.text, + 'token': verifyCode.text.toString(), + }); + if (res != 'failure') { + // var dec = jsonDecode(res); + box.write(BoxName.phoneDriver, phoneController.text); + var payload = { + 'id': box.read(BoxName.passengerID), + 'phone': phoneController.text, + 'email': box.read(BoxName.email), + 'password': 'unknown', + 'gender': 'unknown', + 'birthdate': '2002-01-01', + 'site': 'unknown', + 'first_name': box.read(BoxName.name).toString().split(' ')[0], + 'last_name': box.read(BoxName.name).toString().split(' ')[1], + }; - var res1 = await CRUD().post( - link: AppLink.signUp, + var res1 = await CRUD().post( + link: AppLink.signUp, + payload: payload, + ); + if (res1 != 'failure') { + CRUD().post( + link: '${AppLink.seferAlexandriaServer}/auth/signup.php', payload: payload, ); - if (res1 != 'failure') { - CRUD().post( - link: '${AppLink.seferAlexandriaServer}/auth/signup.php', - payload: payload, - ); - CRUD().post( - link: '${AppLink.seferGizaServer}/auth/signup.php', - payload: payload, - ); - box.write(BoxName.isVerified, '1'); - box.write(BoxName.phone, '+2${phoneController.text}'); - Get.offAll(const MapPagePassenger()); - } - } else { - Get.snackbar( - 'Error'.tr, "The email or phone number is already registered.".tr, - backgroundColor: Colors.redAccent); + CRUD().post( + link: '${AppLink.seferGizaServer}/auth/signup.php', + payload: payload, + ); + box.write(BoxName.isVerified, '1'); + box.write(BoxName.phone, '+2${phoneController.text}'); + Get.offAll(const MapPagePassenger()); } } else { - var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { - 'phone_number': '+${phoneController.text}', - 'token': verifyCode.text.toString(), - }); - if (res != 'failure') { - // var dec = jsonDecode(res); - box.write(BoxName.phoneDriver, '+${phoneController.text}'); - var payload = { - 'id': box.read(BoxName.passengerID), - 'phone': '+${phoneController.text}', - 'email': box.read(BoxName.email), - 'password': 'unknown', - 'gender': 'unknown', - 'birthdate': '2002-01-01', - 'site': 'unknown', - 'first_name': box.read(BoxName.name).toString().split(' ')[0], - 'last_name': box.read(BoxName.name).toString().split(' ')[1], - }; - - var res1 = await CRUD().post( - link: AppLink.signUp, - payload: payload, - ); - if (res1 != 'failure') { - CRUD().post( - link: '${AppLink.seferAlexandriaServer}/auth/signup.php', - payload: payload, - ); - CRUD().post( - link: '${AppLink.seferGizaServer}/auth/signup.php', - payload: payload, - ); - box.write(BoxName.isVerified, '1'); - box.write(BoxName.phone, '+${phoneController.text}'); - Get.offAll(const MapPagePassenger()); - } - } else { - Get.snackbar( - 'Error'.tr, "The email or phone number is already registered.".tr, - backgroundColor: Colors.redAccent); - } + Get.snackbar( + 'Error'.tr, "The email or phone number is already registered.".tr, + backgroundColor: Colors.redAccent); } + // } else { + // var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { + // 'phone_number': phoneController.text, + // 'token': verifyCode.text.toString(), + // }); + // if (res != 'failure') { + // // var dec = jsonDecode(res); + // box.write(BoxName.phoneDriver, '+${phoneController.text}'); + // var payload = { + // 'id': box.read(BoxName.passengerID), + // 'phone': phoneController.text, + // 'email': box.read(BoxName.email), + // 'password': 'unknown', + // 'gender': 'unknown', + // 'birthdate': '2002-01-01', + // 'site': 'unknown', + // 'first_name': box.read(BoxName.name).toString().split(' ')[0], + // 'last_name': box.read(BoxName.name).toString().split(' ')[1], + // }; + + // var res1 = await CRUD().post( + // link: AppLink.signUp, + // payload: payload, + // ); + // if (res1 != 'failure') { + // CRUD().post( + // link: '${AppLink.seferAlexandriaServer}/auth/signup.php', + // payload: payload, + // ); + // CRUD().post( + // link: '${AppLink.seferGizaServer}/auth/signup.php', + // payload: payload, + // ); + // box.write(BoxName.isVerified, '1'); + // box.write(BoxName.phone, '+${phoneController.text}'); + // Get.offAll(const MapPagePassenger()); + // } + // } else { + // Get.snackbar( + // 'Error'.tr, "The email or phone number is already registered.".tr, + // backgroundColor: Colors.redAccent); + // } + // } } sendVerifications() async { diff --git a/lib/controller/functions/sms_controller.dart b/lib/controller/functions/sms_controller.dart index d63defe..fc0ec9c 100644 --- a/lib/controller/functions/sms_controller.dart +++ b/lib/controller/functions/sms_controller.dart @@ -34,7 +34,7 @@ class SmsEgyptController extends GetxController { "message": "${AppInformation.appName} app code is $otp\ncopy it to app", "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', "sender": sender, //"Sefer Egy", - "receiver": "2$phone" + "receiver": phone }); var res = await http.post( diff --git a/lib/views/auth/sms_verfy_page.dart b/lib/views/auth/sms_verfy_page.dart index 1889d03..352b8b4 100644 --- a/lib/views/auth/sms_verfy_page.dart +++ b/lib/views/auth/sms_verfy_page.dart @@ -9,6 +9,7 @@ import 'package:get/get.dart'; import '../../controller/local/phone_intel/intl_phone_field.dart'; import '../../print.dart'; +import '../widgets/mycircular.dart'; // import 'package:intl_phone_field/intl_phone_field.dart'; class SmsSignupEgypt extends StatelessWidget { @@ -96,14 +97,16 @@ class SmsSignupEgypt extends StatelessWidget { ), ), // Submit button - MyElevatedButton( - onPressed: () async { - !registerController.isSent - ? await registerController.sendOtpMessage() - : await registerController.verifySMSCode(); - }, - title: 'Submit'.tr, - ), + registerController.isLoading + ? const MyCircularProgressIndicator() + : MyElevatedButton( + onPressed: () async { + !registerController.isSent + ? await registerController.sendOtpMessage() + : await registerController.verifySMSCode(); + }, + title: 'Submit'.tr, + ), ], ); }), diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 51d85d2..b54e01e 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -17,6 +17,7 @@ import flutter_tts import geolocator_apple import google_sign_in_ios import just_audio +import local_auth_darwin import location import package_info_plus import path_provider_foundation @@ -26,6 +27,7 @@ import sqflite import url_launcher_macos import video_player_avfoundation import wakelock_plus +import webview_flutter_wkwebview func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) @@ -40,6 +42,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) + FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) LocationPlugin.register(with: registry.registrar(forPlugin: "LocationPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) @@ -49,4 +52,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin")) + FLTWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "FLTWebViewFlutterPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index ee69585..7633e1c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,31 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "72.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d + sha256: "9371d13b8ee442e3bfc08a24e3a1b3742c839abbfaf5eef11b79c4b862c89bf7" url: "https://pub.dev" source: hosted - version: "1.3.39" + version: "1.3.41" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.7.0" animated_text_kit: dependency: "direct main" description: @@ -109,18 +114,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" + sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04 url: "https://pub.dev" source: hosted - version: "2.4.11" + version: "2.4.12" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 url: "https://pub.dev" source: hosted - version: "7.3.1" + version: "7.3.2" built_collection: dependency: transitive description: @@ -141,26 +146,26 @@ packages: dependency: transitive description: name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + sha256: "4a5d8d2c728b0f3d0245f69f921d7be90cae4c2fd5288f773088672c0893f819" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.0" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.1" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" + sha256: "6322dde7a5ad92202e64df659241104a43db20ed594c41ca18de1014598d7996" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" calendar_builder: dependency: "direct main" description: @@ -189,10 +194,10 @@ packages: dependency: transitive description: name: chewie - sha256: e53da939709efb9aad0f3d72a69a8d05f889168b7a138af60ce78bab5c94b135 + sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd" url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.8.5" cli_util: dependency: transitive description: @@ -237,18 +242,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" + sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" url: "https://pub.dev" source: hosted - version: "0.3.4+1" + version: "0.3.4+2" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" csslib: dependency: transitive description: @@ -269,10 +274,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.7" dbus: dependency: transitive description: @@ -285,34 +290,34 @@ packages: dependency: transitive description: name: device_info_plus - sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 + sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 url: "https://pub.dev" source: hosted - version: "10.1.0" + version: "10.1.2" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" dio: dependency: "direct main" description: name: dio - sha256: e17f6b3097b8c51b72c74c9f071a605c47bcc8893839bd66732457a5ebe73714 + sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" url: "https://pub.dev" source: hosted - version: "5.5.0+1" + version: "5.7.0" dio_web_adapter: dependency: transitive description: name: dio_web_adapter - sha256: "36c5b2d79eb17cdae41e974b7a8284fec631651d2a6f39a8a2ff22327e90aeac" + sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "2.0.0" envied: dependency: "direct main" description: @@ -349,10 +354,10 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: @@ -397,74 +402,74 @@ packages: dependency: "direct main" description: name: firebase_auth - sha256: a41b56878fa6aef3ea52962329b47eee333672d4b0ecc406e071b9fc729f242c + sha256: "6f5792bdc208416bfdfbfe3363b78ce01667b6ebc4c5cb47cfa891f2fca45ab7" url: "https://pub.dev" source: hosted - version: "5.1.2" + version: "5.2.0" firebase_auth_platform_interface: dependency: transitive description: name: firebase_auth_platform_interface - sha256: d1c68097588f3b75ef79a22102ff96c311735c254353bccf6824d19f1a7e86b9 + sha256: "80237bb8a92bb0a5e3b40de1c8dbc80254e49ac9e3907b4b47b8e95ac3dd3fad" url: "https://pub.dev" source: hosted - version: "7.4.2" + version: "7.4.4" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: e66ec0ae5697ee39ccd4865d6887cb0df220dd4ea0b21404910c68ca4c1a731a + sha256: "9d315491a6be65ea83511cb0e078544a309c39dd54c0ee355c51dbd6d8c03cc8" url: "https://pub.dev" source: hosted - version: "5.12.4" + version: "5.12.6" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" + sha256: "06537da27db981947fa535bb91ca120b4e9cb59cb87278dbdde718558cafc9ff" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.4.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" + sha256: f7d7180c7f99babd4b4c517754d41a09a4943a0f7a69b65c894ca5c68ba66315 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.1" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" + sha256: "362e52457ed2b7b180964769c1e04d1e0ea0259fdf7025fdfedd019d4ae2bd88" url: "https://pub.dev" source: hosted - version: "2.17.3" + version: "2.17.5" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "156c4292aa63a6a7d508c68ded984cb38730d2823c3265e573cb1e94983e2025" + sha256: "29941ba5a3204d80656c0e52103369aa9a53edfd9ceae05a2bb3376f24fda453" url: "https://pub.dev" source: hosted - version: "15.0.3" + version: "15.1.0" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "10408c5ca242b7fc632dd5eab4caf8fdf18ebe88db6052980fa71a18d88bd200" + sha256: "26c5370d3a79b15c8032724a68a4741e28f63e1f1a45699c4f0a8ae740aadd72" url: "https://pub.dev" source: hosted - version: "4.5.41" + version: "4.5.43" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: c7a756e3750679407948de665735e69a368cb902940466e5d68a00ea7aba1aaa + sha256: "58276cd5d9e22a9320ef9e5bc358628920f770f93c91221f8b638e8346ed5df4" url: "https://pub.dev" source: hosted - version: "3.8.11" + version: "3.8.13" fixnum: dependency: transitive description: @@ -482,10 +487,10 @@ packages: dependency: transitive description: name: flutter_cache_manager - sha256: ceff65d74d907b1b772e22cf04daad60fb472461638977d9fae8b00a63e01e3d + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" url: "https://pub.dev" source: hosted - version: "3.3.3" + version: "3.4.1" flutter_font_icons: dependency: "direct main" description: @@ -514,10 +519,10 @@ packages: dependency: "direct main" description: name: flutter_local_notifications - sha256: dd6676d8c2926537eccdf9f72128bbb2a9d0814689527b17f92c248ff192eaf3 + sha256: c500d5d9e7e553f06b61877ca6b9c8b92c570a4c8db371038702e8ce57f8a50f url: "https://pub.dev" source: hosted - version: "17.2.1+2" + version: "17.2.2" flutter_local_notifications_linux: dependency: transitive description: @@ -546,10 +551,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e + sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.0.22" flutter_rating_bar: dependency: "direct main" description: @@ -618,10 +623,10 @@ packages: dependency: "direct main" description: name: flutter_stripe - sha256: "6c10f839e2623a336de79023a95a49c8d177032d5fd54b1f7ee9755fc577e227" + sha256: "28527923373720fcd39eade306f4acc007df8a3f2c0aeea545f1521dec9399c2" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.0.0" flutter_svg: dependency: transitive description: @@ -652,18 +657,18 @@ packages: dependency: "direct main" description: name: flutter_widget_from_html - sha256: e79144d8a37b7d1075fc1fdebc32708bd142ad9fdf1c7d9444f5e964cc03158b + sha256: "9e2a6201c4d2eb910b6b3ebb2a9f5c490fc61c9a1aa35eafdde38f0fc659cf4c" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" flutter_widget_from_html_core: dependency: transitive description: name: flutter_widget_from_html_core - sha256: df7c7c9e5ea144f7ab0adfbad733b4d4f7d408ab733c94e6e9fdcb327af92aa1 + sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" freezed_annotation: dependency: transitive description: @@ -700,18 +705,18 @@ packages: dependency: transitive description: name: fwfh_just_audio - sha256: "4ff7927619ff4855567a61e126269e1fef985a9fe7e78682592da17bf658aabb" + sha256: "38dc2c55803bd3cef33042c473e0c40b891ad4548078424641a32032f6a1245f" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" fwfh_svg: dependency: transitive description: name: fwfh_svg - sha256: c6bb6b513f7ce2766aba76d7276caf9a96b6fee729ac3a492c366a42f82ef02e + sha256: "550b1014d12b5528d8bdb6e3b44b58721f3fb1f65d7a852d1623a817008bdfc4" url: "https://pub.dev" source: hosted - version: "0.8.2" + version: "0.8.3" fwfh_url_launcher: dependency: transitive description: @@ -724,10 +729,10 @@ packages: dependency: transitive description: name: fwfh_webview - sha256: "2cd2b1e463ddaf26b7d4f74e1a855126c4a836fdaff9551636693e07a07422b6" + sha256: f67890bc0d6278da98bd197469ae9511c859f7db327e92299fe0ea0cf46c4057 url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.2" geolocator: dependency: "direct main" description: @@ -740,10 +745,10 @@ packages: dependency: transitive description: name: geolocator_android - sha256: "00c7177a95823dd3ee35ef42fd8666cd27d219ae14cea472ac76a21dff43000b" + sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47" url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.6.1" geolocator_apple: dependency: transitive description: @@ -812,58 +817,58 @@ packages: dependency: transitive description: name: google_identity_services_web - sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6" url: "https://pub.dev" source: hosted - version: "0.3.1+1" + version: "0.3.1+4" google_maps: dependency: transitive description: name: google_maps - sha256: "47eef3836b49bb030d5cb3afc60b8451408bf34cf753e571b645d6529eb4251a" + sha256: "463b38e5a92a05cde41220a11fd5eef3847031fef3e8cf295ac76ec453246907" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "8.0.0" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter - sha256: acf0ec482d86b2ac55ade80597ce7f797a47971f5210ebfd030f0d58130e0a94 + sha256: "2e302fa3aaf4e2a297f0342d83ebc5e8e9f826e9a716aef473fe7f404ec630a7" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.9.0" google_maps_flutter_android: dependency: transitive description: name: google_maps_flutter_android - sha256: f6306d83edddba7aa017ca6f547d6f36a1443f90ed49d91d48ef70d7aa86e2e1 + sha256: "36e75af1d0bd4c7391eacdaedf9ca7632c5b9709c5ec618b04489b79ea2b3f82" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.14.6" google_maps_flutter_ios: dependency: transitive description: name: google_maps_flutter_ios - sha256: a6e3c6ecdda6c985053f944be13a0645ebb919da2ef0f5bc579c5e1670a5b2a8 + sha256: "3a484846fc56f15e47e3de1f5ea80a7ff2b31721d2faa88f390f3b3cf580c953" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.13.0" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: bd60ca330e3c7763b95b477054adec338a522d982af73ecc520b232474063ac5 + sha256: "099874463dc4c9bff04fe4b2b8cf7284d2455c2deead8f9a59a87e1b9f028c69" url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.9.2" google_maps_flutter_web: dependency: transitive description: name: google_maps_flutter_web - sha256: f3155c12119d8a5c2732fdf39ceb5cc095bc662059a03b4ea23294ecebe1d199 + sha256: ff39211bd25d7fad125d19f757eba85bd154460907cd4d135e07e3d0f98a4130 url: "https://pub.dev" source: hosted - version: "0.5.8" + version: "0.5.10" google_polyline_algorithm: dependency: "direct main" description: @@ -884,18 +889,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: d30fb34b659679ea74397e9748b4ab5d720720d57dcc79538f1b3c4a68654cb3 + sha256: "0608de03fc541ece4f91ba3e01a68b17cce7a6cf42bd59e40bbe5c55cc3a49d8" url: "https://pub.dev" source: hosted - version: "6.1.27" + version: "6.1.30" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + sha256: "4898410f55440049e1ba8f15411612d9f89299d89c61cd9baf7e02d56ff81ac7" url: "https://pub.dev" source: hosted - version: "5.7.6" + version: "5.7.7" google_sign_in_platform_interface: dependency: transitive description: @@ -908,10 +913,10 @@ packages: dependency: transitive description: name: google_sign_in_web - sha256: d606264c7a1a526a3aa79d938b85a601d8589731a478bd4a3dcbdeb14a572228 + sha256: "042805a21127a85b0dc46bba98a37926f17d2439720e8a459d27045d8ef68055" url: "https://pub.dev" source: hosted - version: "0.12.4+1" + version: "0.12.4+2" googleapis_auth: dependency: "direct main" description: @@ -980,26 +985,26 @@ packages: dependency: "direct main" description: name: image_cropper - sha256: d31be025c744ac1bf52d1f49cfdd92fd421e7e45ddadaaac0b39901f67c2a7e3 + sha256: fe37d9a129411486e0d93089b61bd326d05b89e78ad4981de54b560725bf5bd5 url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "8.0.2" image_cropper_for_web: dependency: transitive description: name: image_cropper_for_web - sha256: "6386e64908ce5d5df404e01c750a99b633dfcea88da69b3efcd3b3811d639760" + sha256: "34256c8fb7fcb233251787c876bb37271744459b593a948a2db73caa323034d0" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "6.0.2" image_cropper_platform_interface: dependency: transitive description: name: image_cropper_platform_interface - sha256: "39c6539571bda7ce666e0a2f450246a5d42187406eef8f486a3d64f1d9381637" + sha256: e8e9d2ca36360387aee39295ce49029362ae4df3071f23e8e71f2b81e40b7531 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "7.0.0" image_picker: dependency: "direct main" description: @@ -1012,18 +1017,18 @@ packages: dependency: transitive description: name: image_picker_android - sha256: a26dc9a03fe042440c1e4be554fb0fceae2bf6d887d7467fc48c688fa4a81889 + sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85 url: "https://pub.dev" source: hosted - version: "0.8.12+7" + version: "0.8.12+13" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3" + sha256: "65d94623e15372c5c51bebbcb820848d7bcb323836e12dfdba60b5d3a8b39e50" url: "https://pub.dev" source: hosted - version: "3.0.4" + version: "3.0.5" image_picker_ios: dependency: transitive description: @@ -1088,14 +1093,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" - js_wrapping: - dependency: transitive - description: - name: js_wrapping - sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c - url: "https://pub.dev" - source: hosted - version: "0.7.4" json_annotation: dependency: transitive description: @@ -1108,10 +1105,10 @@ packages: dependency: "direct main" description: name: just_audio - sha256: ee50602364ba83fa6308f5512dd560c713ec3e1f2bc75f0db43618f0d82ef71a + sha256: d8e8aaf417d33e345299c17f6457f72bd4ba0c549dc34607abb5183a354edc4d url: "https://pub.dev" source: hosted - version: "0.9.39" + version: "0.9.40" just_audio_platform_interface: dependency: transitive description: @@ -1124,10 +1121,10 @@ packages: dependency: transitive description: name: just_audio_web - sha256: "0edb481ad4aa1ff38f8c40f1a3576013c3420bf6669b686fe661627d49bc606c" + sha256: b163878529d9b028c53a6972fcd58cae2405bcd11cbfcea620b6fb9f151429d6 url: "https://pub.dev" source: hosted - version: "0.4.11" + version: "0.4.12" leak_tracker: dependency: transitive description: @@ -1164,26 +1161,26 @@ packages: dependency: "direct main" description: name: local_auth - sha256: "280421b416b32de31405b0a25c3bd42dfcef2538dfbb20c03019e02a5ed55ed0" + sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" local_auth_android: dependency: transitive description: name: local_auth_android - sha256: "33fcebe9c3cf1bb0033bc85caed354c1e75ff7f7670918a571bd3152a2b65bf4" + sha256: e9a3c321e94359a552b1bdd0f98f79885f2b3e27234d270f9bef5cd82b29340c url: "https://pub.dev" source: hosted - version: "1.0.42" + version: "1.0.44" local_auth_darwin: dependency: transitive description: name: local_auth_darwin - sha256: e424ebf90d5233452be146d4a7da4bcd7a70278b67791592f3fde1bda8eef9e2 + sha256: "7ba5738c874ca2b910d72385d00d2bebad9d4e807612936cf5e32bc01a048c71" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.4.0" local_auth_platform_interface: dependency: transitive description: @@ -1232,6 +1229,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" matcher: dependency: transitive description: @@ -1260,10 +1265,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" nested: dependency: transitive description: @@ -1276,10 +1281,10 @@ packages: dependency: transitive description: name: octo_image - sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" + sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" package_config: dependency: transitive description: @@ -1292,18 +1297,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 + sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918 url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.2" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e + sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" path: dependency: "direct main" description: @@ -1324,18 +1329,18 @@ packages: dependency: transitive description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e" + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" url: "https://pub.dev" source: hosted - version: "2.2.7" + version: "2.2.10" path_provider_foundation: dependency: transitive description: @@ -1380,10 +1385,10 @@ packages: dependency: transitive description: name: permission_handler_android - sha256: b29a799ca03be9f999aa6c39f7de5209482d638e6f857f6b93b0875c618b7e54 + sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa" url: "https://pub.dev" source: hosted - version: "12.0.7" + version: "12.0.12" permission_handler_apple: dependency: transitive description: @@ -1396,18 +1401,18 @@ packages: dependency: transitive description: name: permission_handler_html - sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" + sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851 url: "https://pub.dev" source: hosted - version: "0.1.1" + version: "0.1.3+2" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20" + sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9 url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.2.3" permission_handler_windows: dependency: transitive description: @@ -1492,18 +1497,18 @@ packages: dependency: transitive description: name: record_android - sha256: "9ccf6a206dc72b486cf37893690e70c17610e8f05dba8da1a808e73dc2f49a04" + sha256: d7af0b3119725a0f561817c72b5f5eca4d7a76d441deef519ae04e4824c0734c url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "1.2.6" record_darwin: dependency: transitive description: name: record_darwin - sha256: b038c26d1066eb81f4e7433bfb85f0d450ca3fac0002a7216b83a21b775ecf21 + sha256: fe90d302acb1f3cee1ade5df9c150ca5cee33b48d8cdf1cf433bf577d7f00134 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" record_linux: dependency: transitive description: @@ -1524,10 +1529,10 @@ packages: dependency: transitive description: name: record_web - sha256: "703adb626d31e2dd86a8f6b34e306e03cd323e0c5e16e11bbc0385b07a8df97e" + sha256: "656b7a865f90651fab997c2a563364f5fd60a0b527d5dadbb915d62d84fc3867" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.3" record_windows: dependency: transitive description: @@ -1587,10 +1592,10 @@ packages: dependency: "direct main" description: name: sign_in_with_apple - sha256: "5c34c601d6910d7db0077063001ccd9d9329ee58b9038ee07153ffcdd76e91bd" + sha256: "3c9dc9dcd5c42a17c6d4b912556198e8bd8e731ab67ac30f4a655974f95e7260" url: "https://pub.dev" source: hosted - version: "6.1.1" + version: "6.1.2" sign_in_with_apple_platform_interface: dependency: transitive description: @@ -1648,10 +1653,10 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" + sha256: "7b41b6c3507854a159e24ae90a8e3e9cc01eb26a477c118d6dca065b5f55453e" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.4+2" stack_trace: dependency: transitive description: @@ -1688,34 +1693,34 @@ packages: dependency: transitive description: name: stripe_android - sha256: "74c977ae0a918949e84796a8a3524a68610f4719c66170f01592b4bc5196f049" + sha256: "189b8d5c79dfb363540a77e813ba350c9058559673f3df80a2cb87e0983a316e" url: "https://pub.dev" source: hosted - version: "10.2.1" + version: "11.0.0" stripe_ios: dependency: transitive description: name: stripe_ios - sha256: eb91cb9b971e22f865937309b0e5e4e0f5bcbfc39e671bd41c0fdaddbb5ad948 + sha256: "680d442b2bb920dd91bec4aba9286de050a76a789e9bc128044f2b3732369be6" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.0.0" stripe_platform_interface: dependency: transitive description: name: stripe_platform_interface - sha256: "1a2e3fe106bc723c0c0cda2f97f15bfef16944507621639c636041845a96ff57" + sha256: "3a4e22f0ad461dc47147601d1215f2a72715c6c67f56fb4b8a3cab4b857b9a41" url: "https://pub.dev" source: hosted - version: "10.2.0" + version: "11.0.0" synchronized: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: a824e842b8a054f91a728b783c177c1e4731f6b124f9192468457a8913371255 url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.2.0" term_glyph: dependency: transitive description: @@ -1792,10 +1797,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "95d8027db36a0e52caf55680f91e33ea6aa12a3ce608c90b06f4e429a21067ac" + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab url: "https://pub.dev" source: hosted - version: "6.3.5" + version: "6.3.10" url_launcher_ios: dependency: transitive description: @@ -1808,10 +1813,10 @@ packages: dependency: transitive description: name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.2.0" url_launcher_macos: dependency: transitive description: @@ -1832,10 +1837,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" + sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" url_launcher_windows: dependency: transitive description: @@ -1848,10 +1853,10 @@ packages: dependency: transitive description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: f33d6bb662f0e4f79dcd7ada2e6170f3b3a2530c28fc41f49a411ddedd576a77 url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.0" vector_graphics: dependency: transitive description: @@ -1888,10 +1893,10 @@ packages: dependency: "direct main" description: name: vibration - sha256: "06588a845a4ebc73ab7ff7da555c2b3dbcd9676164b5856a38bf0b2287f1045d" + sha256: fe8f90e1827f86a4f722b819799ecac8a24789a39c6d562ea316bcaeb8b1ec61 url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "2.0.0" vibration_platform_interface: dependency: transitive description: @@ -1912,10 +1917,10 @@ packages: dependency: transitive description: name: video_player_android - sha256: fdc0331ce9f808cc2714014cb8126bd6369943affefd54f8fdab0ea0bb617b7f + sha256: "38d8fe136c427abdce68b5e8c3c08ea29d7a794b453c7a51b12ecfad4aad9437" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.7.3" video_player_avfoundation: dependency: transitive description: @@ -1936,10 +1941,10 @@ packages: dependency: transitive description: name: video_player_web - sha256: ff4d69a6614b03f055397c27a71c9d3ddea2b2a23d71b2ba0164f59ca32b8fe2 + sha256: "6dcdd298136523eaf7dfc31abaf0dfba9aa8a8dbc96670e87e9d42b6f2caf774" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" vm_service: dependency: transitive description: @@ -1952,10 +1957,10 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68" + sha256: bf4ee6f17a2fa373ed3753ad0e602b7603f8c75af006d5b9bdade263928c0484 url: "https://pub.dev" source: hosted - version: "1.2.5" + version: "1.2.8" wakelock_plus_platform_interface: dependency: transitive description: @@ -2000,18 +2005,18 @@ packages: dependency: "direct main" description: name: webview_flutter - sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522" + sha256: ec81f57aa1611f8ebecf1d2259da4ef052281cb5ad624131c93546c79ccc7736 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.9.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: f42447ca49523f11d8f70abea55ea211b3cafe172dd7a0e7ac007bb35dd356dc + sha256: "6e64fcb1c19d92024da8f33503aaeeda35825d77142c01d0ea2aa32edc79fdc8" url: "https://pub.dev" source: hosted - version: "3.16.4" + version: "3.16.7" webview_flutter_platform_interface: dependency: transitive description: @@ -2024,26 +2029,26 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "9c62cc46fa4f2d41e10ab81014c1de470a6c6f26051a2de32111b2ee55287feb" + sha256: "1942a12224ab31e9508cf00c0c6347b931b023b8a4f0811e5dec3b06f94f117d" url: "https://pub.dev" source: hosted - version: "3.14.0" + version: "3.15.0" win32: dependency: transitive description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.5.4" win32_registry: dependency: transitive description: name: win32_registry - sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" + sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.5" xdg_directories: dependency: transitive description: @@ -2069,5 +2074,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 893a32d..392b1fb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,12 +35,12 @@ dependencies: flutter_rating_bar: ^4.0.1 flutter_font_icons: ^2.2.5 image_picker: ^1.0.4 - flutter_stripe: ^10.2.0 + flutter_stripe: ^11.0.0 # camera: ^0.10.5+5 #to be remove flutter_widget_from_html: ^0.15.1 local_auth: ^2.1.7 # image: ^4.1.3 #to be remove - image_cropper: ^7.1.0 + image_cropper: ^8.0.2 envied: ^0.5.2 # cached_network_image: ^3.3.0 calendar_builder: ^0.0.6 @@ -48,7 +48,7 @@ dependencies: flutter_tts: ^4.0.2 permission_handler: ^11.3.0 # google_generative_ai: ^0.0.1-dev - vibration: ^1.8.4 + vibration: ^2.0.0 wakelock_plus: record: ^5.0.5 dio: ^5.4.3+1 From c24eee9e1dd9d8e717ade78441c5fc96fbe8dcc8 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 15 Sep 2024 16:20:41 +0300 Subject: [PATCH 03/16] 9/15/4 --- android/app/build.gradle | 4 +-- lib/controller/auth/register_controller.dart | 36 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 45a617c..701a177 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 = 68 - versionName = '1.5.68' + versionCode = 70 + versionName = '1.5.70' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index 6560a59..d728a5e 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -157,29 +157,29 @@ class RegisterController extends GetxController { Get.offAll(const MapPagePassenger()); } else { // If the phone number is not verified, send OTP - if (isEgyptianNumber) { - // if (isValidEgyptianPhoneNumber( - // phoneNumber.toString().split('+2')[1])) { - await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, - smsEgyptController); - // } - } - } - } else { - // If verification check fails, still send OTP - if (isEgyptianNumber) { + // if (isEgyptianNumber) { // if (isValidEgyptianPhoneNumber( // phoneNumber.toString().split('+2')[1])) { await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); - // } else { - // MyDialog().getDialog( - // 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, - // () { - // Get.back(); - // }); + // } // } } + } else { + // If verification check fails, still send OTP + // if (isEgyptianNumber) { + // if (isValidEgyptianPhoneNumber( + // phoneNumber.toString().split('+2')[1])) { + await sendOtp( + phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); + // } else { + // MyDialog().getDialog( + // 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, + // () { + // Get.back(); + // }); + // } + // } } } else { // MyDialog().getDialog( @@ -275,7 +275,7 @@ class RegisterController extends GetxController { payload: payload, ); box.write(BoxName.isVerified, '1'); - box.write(BoxName.phone, '+2${phoneController.text}'); + box.write(BoxName.phone, phoneController.text); Get.offAll(const MapPagePassenger()); } } else { From 1b50de9a7c3d07a5a34596b723ef7748980b4ad2 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 17 Sep 2024 00:31:50 +0300 Subject: [PATCH 04/16] 9/16/2 --- android/app/src/main/AndroidManifest.xml | 1 + ios/Runner/Info.plist | 184 +++++++++--------- lib/constant/box_name.dart | 1 + lib/controller/auth/login_controller.dart | 8 +- lib/controller/auth/register_controller.dart | 5 +- lib/controller/firebase/firbase_messge.dart | 66 +++++-- .../home/map_passenger_controller.dart | 2 +- lib/controller/local/translations.dart | 1 + .../payment/payment_controller.dart | 78 ++++---- .../payment/paymob/paymob_wallet.dart | 4 +- lib/main.dart | 4 +- lib/views/widgets/my_textField.dart | 2 +- 12 files changed, 199 insertions(+), 157 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fedcf91..6759204 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -25,6 +25,7 @@ android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" + android:enableOnBackInvokedCallback="true" android:windowSoftInputMode="adjustResize"> - - 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 + 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 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 - - - + 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 diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index 450d1ba..c6dced8 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -25,6 +25,7 @@ class BoxName { static const String sosPhoneDriver = "sosPhoneDriver"; static const String passengerID = "pasengerID"; static const String phone = "phone"; + static const String phoneWallet = "phoneWallet"; static const String phoneDriver = "phoneDriver"; static const String dobDriver = "dobDriver"; static const String sexDriver = "sexDriver"; diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index eca3c09..b74a538 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -246,10 +246,10 @@ class LoginController extends GetxController { void onInit() async { // permissionLocation = await Permission.locationWhenInUse.isGranted; await getAppTester(AppInformation.appName); - if (isTest == 0 && box.read(BoxName.passengerID) != null) { - await loginUsingCredentials( - box.read(BoxName.passengerID), box.read(BoxName.email)); - } + // if (isTest == 0 && box.read(BoxName.passengerID) != null) { + // await loginUsingCredentials( + // box.read(BoxName.passengerID), box.read(BoxName.email)); + // } super.onInit(); } } diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index d728a5e..7ff0d90 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -232,9 +232,10 @@ class RegisterController extends GetxController { print('WhatsApp message sent to non-Egyptian phone number: $phoneNumber'); } isLoading = false; - update(); + isSent = true; - remainingTime = 300; // Reset to 5 minutes + remainingTime = 300; + update(); // Reset to 5 minutes startTimer(); } diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index cc46326..adaead2 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -495,34 +495,70 @@ class FirebaseMessagesController extends GetxController { void sendNotificationToPassengerToken( String title, body, token, List map, String tone) async { try { + String serviceAccountKeyJson = '''{ + "type": "service_account", + "project_id": "ride-b1bd8", + "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249", + "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n", + "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com", + "client_id": "111210077025005706623", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} +'''; // As defined above + + // Initialize AccessTokenManager + final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); + + // Obtain an OAuth 2.0 access token + final accessToken = await accessTokenManager.getAccessToken(); + // Log.print('accessToken: ${accessToken}'); + + // Send the notification final response = await http.post( - Uri.parse('https://fcm.googleapis.com/fcm/send'), + Uri.parse( + 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), headers: { 'Content-Type': 'application/json', - 'Authorization': 'key=${AK.serverAPI}' + 'Authorization': 'Bearer $accessToken', }, body: jsonEncode({ - 'notification': { - 'title': title, - 'body': body, - 'sound': tone + 'message': { + 'token': token, + 'notification': { + 'title': title, + 'body': body, + }, + 'android': { + 'notification': { + 'sound': tone, + }, + }, + 'apns': { + 'payload': { + 'aps': { + 'sound': tone, + }, + }, + }, }, - 'data': { - 'passengerList': map, - }, - 'priority': 'high', - 'to': token, }), ); if (response.statusCode == 200) { - // Notification sent successfully + print( + 'Notification sent successfully. Status code: ${response.statusCode}'); + print('Response body: ${response.body}'); } else { - // Handle error response - 'Failed to send notification. Status code: ${response.statusCode}'; + print( + 'Failed to send notification. Status code: ${response.statusCode}'); + print('Response body: ${response.body}'); } } catch (e) { - // Handle other exceptions + print('Error sending notification: $e'); } } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index deb6e0b..3eb764e 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1769,7 +1769,7 @@ class MapPassengerController extends GetxController { 'northeastLon': bounds.northeast.longitude.toString(), }); break; - case 'Balash': + case 'Awfar Car': res = await CRUD() .get(link: AppLink.getCarsLocationByPassengerBalash, payload: { 'southwestLat': bounds.southwest.latitude.toString(), diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 5d406ad..527f840 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -7,6 +7,7 @@ class MyTranslation extends Translations { "Update Available": "تحديث متوفر", 'Phone number must be exactly 11 digits long': "رقم الهاتف يجب أن يكون بطول 11 رقماً", + 'Insert Wallet phone number': 'أدخل رقم هاتف المحفظة', "Phone number isn't an Egyptian phone number": "رقم الهاتف ليس رقم هاتف مصري", "A new version of the app is available. Please update to the latest version.": diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index 4eb96d4..6d39df7 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -31,6 +31,7 @@ class PaymentController extends GetxController { bool isPromoSheetDialogue = false; final formKey = GlobalKey(); final promo = TextEditingController(); + final walletphoneController = TextEditingController(); double totalPassenger = Get.find().totalPassenger; int? selectedAmount = 0; List totalPassengerWalletDetails = []; @@ -762,44 +763,45 @@ class PaymentController extends GetxController { billingData: PaymobBillingData(), onPayment: (PaymobResponse response) {}, ); - - if (response!.responseCode == 'APPROVED') { - Get.defaultDialog( - barrierDismissible: false, - title: 'Payment Successful'.tr, - titleStyle: AppStyle.title, - // backgroundColor: AppColor.greenColor, - content: Text( - 'The payment was approved.'.tr, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - kolor: AppColor.greenColor, - title: 'OK'.tr, - onPressed: () async { - Get.back(); - method(); - }, - ), - ); - } else { - Get.defaultDialog( - barrierDismissible: false, - // backgroundColor: AppColor.redColor, - title: 'Payment Failed'.tr, - content: Text( - 'The payment was not approved. Please try again.'.tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - title: 'OK'.tr, - kolor: AppColor.redColor, - onPressed: () async { - Get.back(); - }, - ), - ); + if (response!.success == true && response.responseCode == '200') { + if (response!.responseCode == 'APPROVED') { + Get.defaultDialog( + barrierDismissible: false, + title: 'Payment Successful'.tr, + titleStyle: AppStyle.title, + // backgroundColor: AppColor.greenColor, + content: Text( + 'The payment was approved.'.tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'OK'.tr, + onPressed: () async { + Get.back(); + method(); + }, + ), + ); + } else { + Get.defaultDialog( + barrierDismissible: false, + // backgroundColor: AppColor.redColor, + title: 'Payment Failed'.tr, + content: Text( + 'The payment was not approved. Please try again.'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + kolor: AppColor.redColor, + onPressed: () async { + Get.back(); + }, + ), + ); + } } } } catch (e) { diff --git a/lib/controller/payment/paymob/paymob_wallet.dart b/lib/controller/payment/paymob/paymob_wallet.dart index 3e8c3c7..e743bee 100644 --- a/lib/controller/payment/paymob/paymob_wallet.dart +++ b/lib/controller/payment/paymob/paymob_wallet.dart @@ -144,7 +144,7 @@ class PaymobPaymentWallet { }) async { final Map data = { "source": { - "identifier": box.read(BoxName.phone).toString(), + "identifier": box.read(BoxName.phoneWallet).toString(), "subtype": "WALLET", }, "payment_token": paymentToken, @@ -269,7 +269,7 @@ class PaymobBillingDataWallet { "email": box.read(BoxName.email) ?? box.read(BoxName.emailDriver), "first_name": box.read(BoxName.name) ?? box.read(BoxName.nameDriver), "last_name": box.read(BoxName.name) ?? box.read(BoxName.nameDriver), - "phone_number": box.read(BoxName.phone) ?? box.read(BoxName.phoneDriver), + "phone_number": box.read(BoxName.phoneWallet), "apartment": apartment ?? "NA", "floor": floor ?? "NA", "building": building ?? "NA", diff --git a/lib/main.dart b/lib/main.dart index 095fe52..028dc86 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -77,9 +77,9 @@ void main() async { userTokenExpiration: 200, iFrameID: 837992, ); + PaymobPaymentWallet.instance.initialize( - apiKey: AK - .payMobApikey, // from dashboard Select Settings -> Account Info -> API Key + apiKey: AK.payMobApikey, integrationID: int.parse(AK.integrationIdPayMobWallet), userTokenExpiration: 200, iFrameID: 837992, diff --git a/lib/views/widgets/my_textField.dart b/lib/views/widgets/my_textField.dart index 2e4f060..15fc4c0 100644 --- a/lib/views/widgets/my_textField.dart +++ b/lib/views/widgets/my_textField.dart @@ -27,7 +27,7 @@ class MyTextForm extends StatelessWidget { children: [ Text( label.tr, - style: TextStyle( + style: const TextStyle( color: CupertinoColors.label, fontSize: 16, fontWeight: FontWeight.w600, From a65e7e55621bf4310680fdd683aefba784ab7e5a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 17 Sep 2024 00:57:13 +0300 Subject: [PATCH 05/16] 9/17/1 --- lib/controller/local/translations.dart | 1 + .../home/my_wallet/passenger_wallet.dart | 49 +++++++++++++++++-- .../my_wallet/passenger_wallet_dialoge.dart | 12 ++--- 3 files changed, 51 insertions(+), 11 deletions(-) diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 527f840..a5a8b93 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,7 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Add wallet phone you use": "أضف محفظة الهاتف التي تستخدمها", "Update Available": "تحديث متوفر", 'Phone number must be exactly 11 digits long': "رقم الهاتف يجب أن يكون بطول 11 رقماً", diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index d3e9f3c..29c5794 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -11,6 +11,7 @@ import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; import '../../widgets/elevated_btn.dart'; import '../../widgets/my_scafold.dart'; +import '../../widgets/my_textField.dart'; import 'passenger_wallet_dialoge.dart'; class PassengerWallet extends StatelessWidget { @@ -62,11 +63,49 @@ class PassengerWallet extends StatelessWidget { bottom: Get.height * .2, left: Get.width * .2, right: Get.width * .2, - child: MyElevatedButton( - title: 'Show Promos to Charge'.tr, - onPressed: () { - controller.changePromoSheetDialogue(); - }, + child: Column( + children: [ + MyElevatedButton( + title: 'Show Promos to Charge'.tr, + onPressed: () { + controller.changePromoSheetDialogue(); + }, + ), + const SizedBox( + height: 20, + ), + MyElevatedButton( + kolor: AppColor.deepPurpleAccent, + title: "Add wallet phone you use".tr, + onPressed: () { + 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); + }, + ), + cancel: MyElevatedButton( + title: 'Cancel'.tr, + kolor: AppColor.redColor, + onPressed: () { + Get.back(); + })); + }) + ], ), )), const PassengerWalletDialog(), diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index bb11e11..d9ae68d 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -79,7 +79,7 @@ class PassengerWalletDialog extends StatelessWidget { Radio( value: box.read(BoxName.countryCode) == 'Egypt' - ? 200 + ? 210 : 20, groupValue: controller.selectedAmount, onChanged: (value) { @@ -89,7 +89,7 @@ class PassengerWalletDialog extends StatelessWidget { ), Text( box.read(BoxName.countryCode) == 'Egypt' - ? '200 ${'LE'.tr} '.tr + ? '${'200 ${'LE'.tr} '.tr} = 205 ${'LE'.tr}' : '20 ${'JOD'.tr}'.tr, style: AppStyle.title, ), @@ -104,7 +104,7 @@ class PassengerWalletDialog extends StatelessWidget { Radio( value: box.read(BoxName.countryCode) == 'Egypt' - ? 400 + ? 415 : 40, groupValue: controller.selectedAmount, onChanged: (value) { @@ -114,7 +114,7 @@ class PassengerWalletDialog extends StatelessWidget { ), Text( box.read(BoxName.countryCode) == 'Egypt' - ? '400 ${'LE'.tr} '.tr + ? '${'400 ${'LE'.tr} '.tr} = 415 ${'LE'.tr}' : '40 ${'JOD'.tr}'.tr, style: AppStyle.title, ), @@ -129,7 +129,7 @@ class PassengerWalletDialog extends StatelessWidget { Radio( value: box.read(BoxName.countryCode) == 'Egypt' - ? 1000 + ? 1100 : 50, groupValue: controller.selectedAmount, onChanged: (value) { @@ -139,7 +139,7 @@ class PassengerWalletDialog extends StatelessWidget { ), Text( box.read(BoxName.countryCode) == 'Egypt' - ? '1000 ${'LE'.tr} '.tr + ? '${'1000 ${'LE'.tr} '.tr} = 1100 ${'LE'.tr}' : '50 ${'JOD'.tr}'.tr, style: AppStyle.title, ), From 2e3ce78fe8b639e081d78487a757fd21063c5f3a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Thu, 19 Sep 2024 07:05:19 +0300 Subject: [PATCH 06/16] 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, From aca697578d21902acc7419ce3b42893980f53a62 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 12 Oct 2024 19:19:26 +0300 Subject: [PATCH 07/16] Initial commit --- android/app/build.gradle | 4 +- android/app/src/main/res/values/strings.xml | 3 +- ios/Runner/Info.plist | 6 +- lib/constant/box_name.dart | 11 +- lib/constant/links.dart | 41 +- lib/constant/univeries_polygon.dart | 83 ++ lib/controller/auth/google_sign.dart | 105 +- lib/controller/auth/login_controller.dart | 93 +- lib/controller/auth/register_controller.dart | 12 +- lib/controller/firebase/firbase_messge.dart | 137 +- .../firebase/local_notification.dart | 2 +- lib/controller/functions/crud.dart | 2 +- lib/controller/functions/package_info.dart | 27 +- .../home/blinking_promo_controller.dart.dart | 91 ++ .../home/contact_us_controller.dart | 78 ++ .../home/map_passenger_controller.dart | 1183 ++++++++++++----- lib/controller/local/translations.dart | 39 + .../passenger_notification_controller.dart | 26 +- .../passenger_wallet_history_controller.dart | 16 +- .../payment/payment_controller.dart | 123 +- lib/controller/rate/rate_conroller.dart | 34 +- lib/models/model/painter_copoun.dart | 275 ++++ lib/views/auth/login_page.dart | 11 +- lib/views/home/HomePage/contact_us.dart | 102 ++ lib/views/home/map_page_passenger.dart | 1 + .../map_widget.dart/apply_order_widget.dart | 70 +- .../car_details_widget_to_go.dart | 288 +++- .../cash_confirm_bottom_page.dart | 5 +- .../google_map_passenger_widget.dart | 2 +- .../map_widget.dart/left_main_menu_icons.dart | 97 +- .../home/map_widget.dart/map_menu_widget.dart | 7 +- .../select_driver_mishwari.dart | 47 +- .../home/my_wallet/passenger_wallet.dart | 238 ++-- .../my_wallet/passenger_wallet_dialoge.dart | 477 +++---- .../payment_history_passenger_page.dart | 57 +- .../home/profile/promos_passenger_page.dart | 117 +- lib/views/notification/notification_page.dart | 130 +- lib/views/widgets/my_dialog.dart | 113 +- macos/Runner/AppDelegate.swift | 2 +- pubspec.lock | 8 + pubspec.yaml | 1 + 41 files changed, 2976 insertions(+), 1188 deletions(-) create mode 100644 lib/constant/univeries_polygon.dart create mode 100644 lib/controller/home/blinking_promo_controller.dart.dart create mode 100644 lib/controller/home/contact_us_controller.dart create mode 100644 lib/models/model/painter_copoun.dart create mode 100644 lib/views/home/HomePage/contact_us.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 15619f0..6c13091 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 = 71 - versionName = '1.5.71' + versionCode = 82 + versionName = '1.5.82' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 545d524..65245cb 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ My App - default_channel + + high_importance_channel AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0 \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index fccf2e6..9c0b524 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -37,11 +37,13 @@ CFBundlePackageType APPL CFBundleShortVersionString - 52 + 59 CFBundleSignature ???? CFBundleVersion - 4.3.52 + 4.3.59 + NSHumanReadableCopyright + FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index c6dced8..7db29cd 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -10,9 +10,14 @@ class BoxName { static const String carType = "carType"; static const String carPlate = "carPlate"; static const String packagInfo = "packagInfo"; - static const String isVerified = '0'; + static const String isVerified = 'isVerified'; + static const String isFirstTime = 'isFirstTime'; static const String statusDriverLocation = "statusDriverLocation"; + static const String isTest = "isTest"; static const String password = "password"; + static const String validity = "validity"; + static const String promo = "promo"; + static const String discount = "discount"; static const String arrivalTime = "arrivalTime"; static const String passwordDriver = "passwordDriver"; static const String agreeTerms = "agreeTerms"; @@ -25,6 +30,10 @@ class BoxName { static const String sosPhoneDriver = "sosPhoneDriver"; static const String passengerID = "pasengerID"; static const String phone = "phone"; + static const String package = "package"; + static const String isInstall = "isInstall"; + static const String isGiftToken = "isGiftToken"; + static const String inviteCode = "inviteCode"; static const String phoneWallet = "phoneWallet"; static const String phoneDriver = "phoneDriver"; static const String dobDriver = "dobDriver"; diff --git a/lib/constant/links.dart b/lib/constant/links.dart index a06a4c4..f8a36b7 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -59,21 +59,27 @@ class AppLink { ////=======================cancelRide=================== static String ride = '$server/ride'; static String addCancelRideFromPassenger = - "$endPoint/ride/cancelRide/add.php"; - static String cancelRide = "$endPoint/ride/cancelRide/get.php"; + "${box.read(BoxName.serverChosen)}/ride/cancelRide/add.php"; + static String cancelRide = + "${box.read(BoxName.serverChosen)}/ride/cancelRide/get.php"; //-----------------ridessss------------------ static String addRides = "$ride/rides/add.php"; - static String getRides = "$endPoint/ride/rides/get.php"; - static String getRideOrderID = "$endPoint/ride/rides/getRideOrderID.php"; - static String getRideStatus = "$endPoint/ride/rides/getRideStatus.php"; + static String getRides = + "${box.read(BoxName.serverChosen)}/ride/rides/get.php"; + static String getRideOrderID = + "${box.read(BoxName.serverChosen)}/ride/rides/getRideOrderID.php"; + static String getRideStatus = + "${box.read(BoxName.serverChosen)}/ride/rides/getRideStatus.php"; static String getRideStatusBegin = - "$endPoint/ride/rides/getRideStatusBegin.php"; + "${box.read(BoxName.serverChosen)}/ride/rides/getRideStatusBegin.php"; static String getRideStatusFromStartApp = "$ride/rides/getRideStatusFromStartApp.php"; - static String updateRides = "$endPoint/ride/rides/update.php"; + static String updateRides = + "${box.read(BoxName.serverChosen)}/ride/rides/update.php"; static String updateStausFromSpeed = - "$endPoint/ride/rides/updateStausFromSpeed.php"; - static String deleteRides = "$endPoint/ride/rides/delete.php"; + "${box.read(BoxName.serverChosen)}/ride/rides/updateStausFromSpeed.php"; + static String deleteRides = + "${box.read(BoxName.serverChosen)}/ride/rides/delete.php"; //-----------------DriverPayment------------------ static String adddriverScam = "$ride/driver_scam/add.php"; @@ -105,8 +111,12 @@ class AppLink { "$ride/notificationPassenger/update.php"; //-----------------Driver NotificationCaptain------------------ static String addNotificationCaptain = "$ride/notificationCaptain/add.php"; - static String addWaitingRide = "$ride/notificationCaptain/addWaitingRide.php"; - static String getRideWaiting = "$ride/notificationCaptain/getRideWaiting.php"; + static String addWaitingRide = + "$endPoint/ride/notificationCaptain/addWaitingRide.php"; + static String updateWaitingTrip = + "$endPoint/ride/notificationCaptain/updateWaitingTrip.php"; + static String getRideWaiting = + "$endPoint/ride/notificationCaptain/getRideWaiting.php"; static String getNotificationCaptain = "$ride/notificationCaptain/get.php"; static String updateNotificationCaptain = "$ride/notificationCaptain/update.php"; @@ -142,7 +152,8 @@ class AppLink { static String updateLicense = "$ride/license/updateFeedBack.php"; //-----------------RegisrationCar------------------ static String addRegisrationCar = "$ride/RegisrationCar/add.php"; - static String getRegisrationCar = "$endPoint/ride/RegisrationCar/get.php"; + static String getRegisrationCar = + "${box.read(BoxName.serverChosen)}/ride/RegisrationCar/get.php"; static String selectDriverAndCarForMishwariTrip = "$ride/RegisrationCar/selectDriverAndCarForMishwariTrip.php"; static String updateRegisrationCar = "$ride/RegisrationCar/update.php"; @@ -183,7 +194,7 @@ class AppLink { static String uploadEgypt = "$server/uploadEgypt.php"; //==================certifcate========== - static String location = '$endPoint/ride/location'; + static String location = '${box.read(BoxName.serverChosen)}/ride/location'; static String getCarsLocationByPassenger = "$location/get.php"; static String addpassengerLocation = "$location/addpassengerLocation.php"; static String getCarsLocationByPassengerSpeed = "$location/getSpeed.php"; @@ -241,7 +252,8 @@ class AppLink { static String deletecaptainAccounr = "$authCaptin/deletecaptainAccounr.php"; static String updateAccountBank = "$authCaptin/updateAccountBank.php"; static String getAccount = "$authCaptin/getAccount.php"; - + static String updatePassengersInvitation = + "$server/ride/invitor/updatePassengersInvitation.php"; //===================Admin Captin============ static String getPassengerDetailsByPassengerID = @@ -250,6 +262,7 @@ class AppLink { static String getPassengerbyEmail = "$server/Admin/getPassengerbyEmail.php"; static String addAdminUser = "$server/Admin/adminUser/add.php"; static String getAdminUser = "$server/Admin/adminUser/get.php"; + static String addError = "$server/Admin/errorApp.php"; static String getCaptainDetailsByEmailOrIDOrPhone = "$server/Admin/AdminCaptain/getCaptainDetailsByEmailOrIDOrPhone.php"; static String getCaptainDetails = "$server/Admin/AdminCaptain/get.php"; diff --git a/lib/constant/univeries_polygon.dart b/lib/constant/univeries_polygon.dart new file mode 100644 index 0000000..8358b9f --- /dev/null +++ b/lib/constant/univeries_polygon.dart @@ -0,0 +1,83 @@ +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +class UniversitiesPolygons { + // AUC polygon points + static const List> universityPolygons = [ + // AUC Polygon + [ + LatLng(30.013431, 31.502572), + LatLng(30.018469, 31.497478), + LatLng(30.023158, 31.495870), + LatLng(30.025084, 31.496781), + LatLng(30.018701, 31.511393), + LatLng(30.015312, 31.508310), + ], + // Example polygon for University 'German University in Cairo (GUC)' + [ + LatLng(29.984554, 31.437829), + LatLng(29.990363, 31.438390), + LatLng(29.990560, 31.445643), + LatLng(29.984436, 31.445825), + ], + //Future University in Egypt (FUE) + [ + LatLng(30.025794, 31.490946), + LatLng(30.028341, 31.491014), + LatLng(30.028341, 31.492586), + LatLng(30.025844, 31.492491), + ], + //'British University in Egypt (BUE)' + [ + LatLng(30.117423, 31.605834), + LatLng(30.118224, 31.605543), + LatLng(30.118649, 31.607361), + LatLng(30.118932, 31.608033), + LatLng(30.119592, 31.612159), + LatLng(30.119372, 31.612958), + LatLng(30.120017, 31.617102), + LatLng(30.119435, 31.617193), + ], + //Misr International University (MIU) + [ + LatLng(30.166498, 31.491663), + LatLng(30.171956, 31.491060), + LatLng(30.172212, 31.495754), + LatLng(30.167112, 31.496108), + ], + // Canadian International College (CIC) + [ + LatLng(30.034312, 31.428963), + LatLng(30.035661, 31.429037), + LatLng(30.036074, 31.430522), + LatLng(30.036017, 31.431146), + LatLng(30.034580, 31.431117), + ], + // October 6 University (O6U) + [ + LatLng(29.974102, 30.946934), + LatLng(29.976620, 30.944925), + LatLng(29.979848, 30.949832), + LatLng(29.977372, 30.951950), + ], + [ + LatLng(30.029312, 31.210046), + LatLng(30.027124, 31.201393), + LatLng(30.014523, 31.205087), + LatLng(30.015416, 31.212218), + LatLng(30.027325, 31.210661), + ], + // Add polygons for 8 more universities... + ]; + + static const List universityNames = [ + "American University in Cairo (AUC)", + 'German University in Cairo (GUC)', + 'Future University in Egypt (FUE)', + 'British University in Egypt (BUE)', + 'Misr International University (MIU)', + 'Canadian International College (CIC)', + 'October 6 University (O6U)', + "Cairo University", + // Add names for 8 more universities... + ]; +} diff --git a/lib/controller/auth/google_sign.dart b/lib/controller/auth/google_sign.dart index b46f940..f02d2e6 100644 --- a/lib/controller/auth/google_sign.dart +++ b/lib/controller/auth/google_sign.dart @@ -1,10 +1,17 @@ +import 'dart:io'; + import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/controller/auth/login_controller.dart'; import 'package:SEFER/main.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:google_sign_in/google_sign_in.dart'; +import 'package:url_launcher/url_launcher.dart'; +import '../../constant/links.dart'; import '../../onbording_page.dart'; +import '../functions/crud.dart'; class GoogleSignInHelper { static final GoogleSignIn _googleSignIn = GoogleSignIn( @@ -32,26 +39,114 @@ class GoogleSignInHelper { } } - static Future signInFromLogin() async { + Future signInFromLogin() async { try { final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); if (googleUser != null) { await _handleSignUp(googleUser); - // if (box.read(BoxName.countryCode) == 'Egypt') { await Get.put(LoginController()).loginUsingCredentials( box.read(BoxName.passengerID).toString(), box.read(BoxName.email).toString(), ); - // } else if (box.read(BoxName.countryCode) == 'Jordan') { - // // Get.to(() => AiPage()); - // } } return googleUser; } catch (error) { + // if (error is GoogleSignInAuthenticationException) { + // // Handle authentication errors from Google Sign-In + // addError("Google sign-in authentication error: ${error.message}", + // ' signInFromLogin()'); + // } else if (error is GoogleSignInAccountNotFoundException) { + // // Handle the case where the user is not found (if applicable) + // addError("Google sign-in account not found error: ${error.message}", + // ' signInFromLogin()'); + // } + // else + if (error is SocketException) { + // Handle network issues, like SSL certificate issues + addError("Network error (SSL certificate issue): ${error.message}", + ' signInFromLogin()'); + } else if (error is PlatformException) { + // Handle platform-specific errors, like Google Play Services issues + if (error.code == 'sign_in_required') { + // Google Play Services are required but not installed or outdated + showGooglePlayServicesError(); + } else { + addError("Platform error: ${error.message}", + ' signInFromLogin()'); + } + } else { + // Catch all other unknown errors + addError("Unknown error: ${error.toString()}", + ' signInFromLogin()'); + } return null; } } + void showGooglePlayServicesError() async { + const playStoreUrl = + 'https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en_US'; + + if (await canLaunchUrl(Uri.parse(playStoreUrl))) { + await launchUrl(Uri.parse(playStoreUrl)); + } else { + // Fallback if the URL can't be opened + showDialog( + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + title: Text('Error'.tr), + content: Text( + 'Could not open the Google Play Store. Please update Google Play Services manually.' + .tr), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text('Close'.tr), + ), + ], + ); + }, + ); + } + } + + // Future signInFromLogin() async { + // try { + // final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); + // if (googleUser != null) { + // await _handleSignUp(googleUser); + // // if (box.read(BoxName.countryCode) == 'Egypt') { + // await Get.put(LoginController()).loginUsingCredentials( + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.email).toString(), + // ); + // // } else if (box.read(BoxName.countryCode) == 'Jordan') { + // // // Get.to(() => AiPage()); + // // } + // } + // return googleUser; + // } catch (error) { + // addError(error.toString(), ' signInFromLogin()'); + // return null; + // } + // } + + addError(String error, where) async { + CRUD().post(link: AppLink.addError, payload: { + 'error': error.toString(), // Example error description + 'userId': box.read(BoxName.driverID) ?? + box.read(BoxName.passengerID), // Example user ID + 'userType': box.read(BoxName.driverID) != null + ? 'Driver' + : 'passenger', // Example user type + 'phone': box.read(BoxName.phone) ?? + box.read(BoxName.phoneDriver), // Example phone number + + 'device': where + }); + } + // Method to handle Google Sign-Out static Future signOut() async { try { diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index b74a538..20aa194 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -1,9 +1,11 @@ import 'dart:convert'; +import 'dart:io'; import 'package:SEFER/constant/info.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; import 'package:SEFER/views/auth/login_page.dart'; import 'package:SEFER/views/auth/sms_verfy_page.dart'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; @@ -13,6 +15,8 @@ import 'package:SEFER/main.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:location/location.dart'; +import '../functions/package_info.dart'; + class LoginController extends GetxController { final formKey = GlobalKey(); final formKeyAdmin = GlobalKey(); @@ -29,9 +33,20 @@ class LoginController extends GetxController { update(); } - getAppTester(String appPlatform) async { - var res = await CRUD() - .get(link: AppLink.getTesterApp, payload: {'appPlatform': appPlatform}); + @override + void onInit() async { + box.read(BoxName.isTest) == null || + box.read(BoxName.isTest).toString() == '0' + ? await getAppTester() + : null; + + super.onInit(); + } + + getAppTester() async { + var res = await CRUD().get( + link: AppLink.getTesterApp, + payload: {'appPlatform': AppInformation.appName}); if (res != 'failure') { var d = jsonDecode(res); @@ -64,6 +79,8 @@ class LoginController extends GetxController { await CRUD().get(link: AppLink.loginFromGooglePassenger, payload: { 'email': email, 'id': passengerID, + "platform": Platform.isAndroid ? 'android' : 'ios', + "appName": AppInformation.appName, }); if (res == 'Failure') { Get.offAll(SmsSignupEgypt()); @@ -79,6 +96,17 @@ class LoginController extends GetxController { box.write(BoxName.isVerified, '1'); box.write(BoxName.email, jsonDecoeded['data'][0]['email']); box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); + box.write(BoxName.isTest, '1'); + box.write(BoxName.package, jsonDecoeded['data'][0]['package']); + box.write(BoxName.promo, jsonDecoeded['data'][0]['promo']); + box.write(BoxName.discount, jsonDecoeded['data'][0]['discount']); + box.write(BoxName.validity, jsonDecoeded['data'][0]['validity']); + box.write(BoxName.isInstall, + jsonDecoeded['data'][0]['isInstall'] ?? 'none'); + box.write(BoxName.isGiftToken, + jsonDecoeded['data'][0]['isGiftToken'] ?? 'none'); + box.write(BoxName.inviteCode, + jsonDecoeded['data'][0]['inviteCode'] ?? 'none'); var token = await CRUD().get(link: AppLink.getTokens, payload: { 'passengerID': box.read(BoxName.passengerID).toString() @@ -94,10 +122,25 @@ class LoginController extends GetxController { 'cancel.wav', ); Future.delayed(const Duration(seconds: 1)); - await CRUD().post(link: AppLink.addTokens, payload: { - 'token': box.read(BoxName.tokenFCM), - 'passengerID': box.read(BoxName.passengerID).toString() - }); + await CRUD().post( + link: "${AppLink.server}/ride/firebase/add.php", + payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); + CRUD().post( + link: + "${AppLink.seferAlexandriaServer}/ride/firebase/add.php", + payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); + CRUD().post( + link: "${AppLink.seferGizaServer}/ride/firebase/add.php", + payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); Get.defaultDialog( title: 'Device Change Detected'.tr, middleText: @@ -111,8 +154,31 @@ class LoginController extends GetxController { }, ); } + } // Logging to check if inviteCode is written correctly + print("Invite Code in Box: ${box.read(BoxName.inviteCode)}"); + print("Is Install: ${box.read(BoxName.isInstall)}"); + + if (box.read(BoxName.inviteCode).toString() != 'none' && + box.read(BoxName.isInstall).toString() != '1') { + await CRUD() + .post(link: AppLink.updatePassengersInvitation, payload: { + "inviteCode": box.read(BoxName.inviteCode).toString(), + "passengerID": box.read(BoxName.passengerID).toString(), + }); + Get.defaultDialog( + title: 'Invitation Used' + .tr, // Automatically translates based on the current locale + middleText: "Your invite code was successfully applied!" + .tr, // Automatically translates based on the current locale + onConfirm: () { + Get.offAll(() => + const MapPagePassenger()); // Navigate to MapPagePassenger after confirmation + }, + textConfirm: "OK".tr, // Confirm button text + ); + } else { + Get.offAll(() => const MapPagePassenger()); } - Get.offAll(() => const MapPagePassenger()); } else { Get.offAll(() => SmsSignupEgypt()); // Get.snackbar(jsonDecoeded['status'], jsonDecoeded['data'], @@ -241,15 +307,4 @@ class LoginController extends GetxController { } update(); } - - @override - void onInit() async { - // permissionLocation = await Permission.locationWhenInUse.isGranted; - await getAppTester(AppInformation.appName); - // if (isTest == 0 && box.read(BoxName.passengerID) != null) { - // await loginUsingCredentials( - // box.read(BoxName.passengerID), box.read(BoxName.email)); - // } - super.onInit(); - } } diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index 7ff0d90..cb03dcc 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'dart:math'; import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/controller/auth/login_controller.dart'; import 'package:SEFER/controller/local/phone_intel/phone_number.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:SEFER/views/widgets/my_dialog.dart'; @@ -214,6 +215,8 @@ class RegisterController extends GetxController { await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { 'phone_number': phoneNumber, 'token': otp.toString(), + // 'urlImage': box.read(BoxName.passengerPhotoUrl), + // 'name': box.read(BoxName.name), }); await controller.sendSmsEgypt(phoneNumber, otp.toString()); @@ -257,7 +260,7 @@ class RegisterController extends GetxController { 'password': 'unknown', 'gender': 'unknown', 'birthdate': '2002-01-01', - 'site': 'unknown', + 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', 'first_name': box.read(BoxName.name).toString().split(' ')[0], 'last_name': box.read(BoxName.name).toString().split(' ')[1], }; @@ -276,8 +279,13 @@ class RegisterController extends GetxController { payload: payload, ); box.write(BoxName.isVerified, '1'); + box.write(BoxName.isFirstTime, '0'); box.write(BoxName.phone, phoneController.text); - Get.offAll(const MapPagePassenger()); + // Get.offAll(const MapPagePassenger()); + Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); } } else { Get.snackbar( diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index ebaba41..60ec7e2 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -1,12 +1,8 @@ import 'dart:convert'; import 'dart:io'; -import 'package:SEFER/env/env.dart'; -import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:googleapis_auth/auth_io.dart'; -import 'package:googleapis_auth/googleapis_auth.dart'; import 'package:http/http.dart' as http; import 'package:SEFER/controller/functions/toast.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; @@ -131,16 +127,22 @@ class FirebaseMessagesController extends GetxController { Get.find().statusRide == 'Apply'; Get.find().isSearchingWindow == false; Get.find().update(); - NotificationController().showNotification( - 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); + if (Platform.isAndroid) { + NotificationController().showNotification( + 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); + } // driverAppliedTripSnakBar(); } else if (message.notification!.title! == 'Promo'.tr) { - NotificationController() - .showNotification('Promo', 'Show latest promo'.tr, 'promo'); + if (Platform.isAndroid) { + NotificationController() + .showNotification('Promo', 'Show latest promo'.tr, 'promo'); + } Get.to(const PromosPassengerPage()); } else if (message.notification!.title! == 'Trip Monitoring'.tr) { - NotificationController() - .showNotification('Trip Monitoring'.tr, '', 'iphone_ringtone'); + if (Platform.isAndroid) { + NotificationController() + .showNotification('Trip Monitoring'.tr, '', 'iphone_ringtone'); + } var myListString = message.data['passengerList']; var myList = jsonDecode(myListString) as List; Get.toNamed('/tripmonitor', arguments: { @@ -148,46 +150,59 @@ class FirebaseMessagesController extends GetxController { 'driverId': myList[1].toString(), }); } else if (message.notification!.title! == 'token change'.tr) { - NotificationController() - .showNotification('token change'.tr, 'token change'.tr, 'cancel'); + if (Platform.isAndroid) { + NotificationController() + .showNotification('token change'.tr, 'token change'.tr, 'cancel'); + } GoogleSignInHelper.signOut(); } else if (message.notification!.title! == 'DriverIsGoingToPassenger'.tr) { Get.find().isDriverInPassengerWay = true; Get.find().update(); - NotificationController().showNotification('Driver is Going To You'.tr, - 'Please stay on the picked point.'.tr, 'tone1'); + if (Platform.isAndroid) { + NotificationController().showNotification('Driver is Going To You'.tr, + 'Please stay on the picked point.'.tr, 'tone1'); + } // Get.snackbar('Driver is Going To Passenger', '', // backgroundColor: AppColor.greenColor); } else if (message.notification!.title! == 'message From passenger') { - NotificationController() - .showNotification('message From passenger'.tr, ''.tr, 'tone2'); + if (Platform.isAndroid) { + NotificationController() + .showNotification('message From passenger'.tr, ''.tr, 'tone2'); + } passengerDialog(message.notification!.body!); update(); } else if (message.notification!.title! == 'message From Driver') { - NotificationController() - .showNotification('message From passenger'.tr, ''.tr, 'tone2'); passengerDialog(message.notification!.body!); + if (Platform.isAndroid) { + NotificationController() + .showNotification('message From passenger'.tr, ''.tr, 'tone2'); + } update(); } else if (message.notification!.title! == 'RideIsBegin'.tr) { Get.find().getBeginRideFromDriver(); // Get.snackbar('RideIsBegin', '', backgroundColor: AppColor.greenColor); box.write(BoxName.passengerWalletTotal, '0'); - NotificationController() - .showNotification('Trip is Begin'.tr, ''.tr, 'start'); update(); + if (Platform.isAndroid) { + NotificationController() + .showNotification('Trip is Begin'.tr, ''.tr, 'start'); + } } else if (message.notification!.title! == 'Hi ,I will go now'.tr) { // Get.snackbar('Hi ,I will go now', '', // backgroundColor: AppColor.greenColor); - NotificationController().showNotification( - 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2'); + if (Platform.isAndroid) { + NotificationController().showNotification( + 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2'); + } update(); } else if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) { - NotificationController() - .showNotification('Hi ,I Arrive your site'.tr, ''.tr, 'tone2'); driverArrivePassengerDialoge(); - + if (Platform.isAndroid) { + NotificationController() + .showNotification('Hi ,I Arrive your site'.tr, ''.tr, 'tone2'); + } update(); } else if (message.notification!.title! == "Cancel Trip from driver".tr) { Get.back(); @@ -214,10 +229,12 @@ class FirebaseMessagesController extends GetxController { } else if (message.notification!.title! == 'Driver Finish Trip'.tr) { var myListString = message.data['passengerList']; var driverList = jsonDecode(myListString) as List; - NotificationController().showNotification( - 'Driver Finish Trip'.tr, - 'you will pay to Driver'.tr + ' ${driverList[3].toString()} \$'.tr, - 'tone1'); + if (Platform.isAndroid) { + NotificationController().showNotification( + 'Driver Finish Trip'.tr, + 'you will pay to Driver'.tr + ' ${driverList[3].toString()} \$'.tr, + 'tone1'); + } Get.find().stopRecording(); if (double.parse(box.read(BoxName.passengerWalletTotal)) < 0) { box.write(BoxName.passengerWalletTotal, 0); @@ -249,11 +266,13 @@ class FirebaseMessagesController extends GetxController { var myListString = message.data['passengerList']; var driverList = jsonDecode(myListString) as List; // if (Platform.isAndroid) { - NotificationController().showNotification( - 'Call Income'.tr, - message.notification!.body!, - 'iphone_ringtone', - ); + if (Platform.isAndroid) { + NotificationController().showNotification( + 'Call Income'.tr, + message.notification!.body!, + 'iphone_ringtone', + ); + } // } // Assuming GetMaterialApp is initialized and context is valid for navigation // Get.to(() => PassengerCallPage( @@ -267,12 +286,13 @@ class FirebaseMessagesController extends GetxController { var myListString = message.data['passengerList']; var driverList = jsonDecode(myListString) as List; // if (Platform.isAndroid) { - NotificationController().showNotification( - 'Call Income'.tr, - message.notification!.body!, - 'iphone_ringtone', - ); - // } + if (Platform.isAndroid) { + NotificationController().showNotification( + 'Call Income'.tr, + message.notification!.body!, + 'iphone_ringtone', + ); + } // Assuming GetMaterialApp is initialized and context is valid for navigation // Get.to(() => PassengerCallPage( // channelName: driverList[1].toString(), @@ -325,11 +345,13 @@ class FirebaseMessagesController extends GetxController { // } else if (message.notification!.title! == 'Order Applied'.tr) { - NotificationController().showNotification( - 'The order Accepted by another Driver'.tr, - 'We regret to inform you that another driver has accepted this order.' - .tr, - 'order'); + if (Platform.isAndroid) { + NotificationController().showNotification( + 'The order Accepted by another Driver'.tr, + 'We regret to inform you that another driver has accepted this order.' + .tr, + 'order'); + } } } @@ -645,7 +667,7 @@ class FirebaseMessagesController extends GetxController { if (response.statusCode == 200) { print( 'Notification sent successfully. Status code: ${response.statusCode}'); - print('Response body: ${response.body}'); + print('Response token: ${token}'); } else { print( 'Failed to send notification. Status code: ${response.statusCode}'); @@ -696,8 +718,9 @@ class FirebaseMessagesController extends GetxController { // } // } - Future sendNotificationToDriverMAP(String title, String body, - String token, List data, String tone) async { + Future sendNotificationToDriverMAP( + String title, String body, String token, List data, String tone, + {int retryCount = 2}) async { try { String serviceAccountKeyJson = '''{ "type": "service_account", @@ -719,7 +742,7 @@ class FirebaseMessagesController extends GetxController { // Obtain an OAuth 2.0 access token final accessToken = await accessTokenManager.getAccessToken(); - Log.print('accessToken: ${accessToken}'); + // Log.print('accessToken: ${accessToken}'); // Send the notification final response = await http.post( @@ -762,14 +785,28 @@ class FirebaseMessagesController extends GetxController { if (response.statusCode == 200) { print( 'Notification sent successfully. Status code: ${response.statusCode}'); - print('Response body: ${response.body}'); + print('Response token: ${token}'); } else { print( 'Failed to send notification. Status code: ${response.statusCode}'); print('Response body: ${response.body}'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToDriverMAP(title, body, token, data, tone, + retryCount: retryCount - 1); + } } } catch (e) { print('Error sending notification: $e'); + if (retryCount > 0) { + print('Retrying... Attempts remaining: $retryCount'); + await Future.delayed( + Duration(seconds: 2)); // Optional delay before retrying + return sendNotificationToDriverMAP(title, body, token, data, tone, + retryCount: retryCount - 1); + } } } diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index d98b6db..5fc0484 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -17,7 +17,7 @@ class NotificationController extends GetxController { // Displays a notification with the given title and message void showNotification(String title, String message, String tone) async { AndroidNotificationDetails android = AndroidNotificationDetails( - 'your channel id', 'your channel name', + 'high_importance_channel', 'High Importance Notifications', importance: Importance.max, priority: Priority.high, showWhen: false, diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index c642116..1525659 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -109,7 +109,7 @@ class CRUD { print(await response.stream.bytesToString()); Get.defaultDialog( title: 'You will receive a code in WhatsApp Messenger'.tr, - middleText: '', + middleText: 'wait 1 minute to recive message'.tr, confirm: MyElevatedButton( title: 'OK'.tr, onPressed: () { diff --git a/lib/controller/functions/package_info.dart b/lib/controller/functions/package_info.dart index ca4933b..bfcef9c 100644 --- a/lib/controller/functions/package_info.dart +++ b/lib/controller/functions/package_info.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/controller/functions/crud.dart'; import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -17,7 +16,7 @@ Future checkForUpdate(BuildContext context) async { final version = packageInfo.version; print('currentVersion is : $currentVersion'); // Fetch the latest version from your server - String latestVersion = await getPackageInfo(); + String latestVersion = box.read(BoxName.package); box.write(BoxName.packagInfo, version); if (latestVersion.isNotEmpty && latestVersion != currentVersion) { @@ -25,18 +24,22 @@ Future checkForUpdate(BuildContext context) async { } } -Future getPackageInfo() async { - final response = await CRUD().get(link: AppLink.packageInfo, payload: { - "platform": Platform.isAndroid ? 'android' : 'ios', - "appName": AppInformation.appName, - }); - - if (response != 'failure') { - return jsonDecode(response)['message'][0]['version']; - } - return ''; +checkForBounusInvitation() { + if (box.read(BoxName.inviteCode) != null) {} } +// Future getPackageInfo() async { +// final response = await CRUD().get(link: AppLink.packageInfo, payload: { +// "platform": Platform.isAndroid ? 'android' : 'ios', +// "appName": AppInformation.appName, +// }); + +// if (response != 'failure') { +// return jsonDecode(response)['message'][0]['version']; +// } +// return ''; +// } + void showUpdateDialog(BuildContext context) { final String storeUrl = Platform.isAndroid ? 'https://play.google.com/store/apps/details?id=com.mobileapp.store.ride' diff --git a/lib/controller/home/blinking_promo_controller.dart.dart b/lib/controller/home/blinking_promo_controller.dart.dart new file mode 100644 index 0000000..df0bc82 --- /dev/null +++ b/lib/controller/home/blinking_promo_controller.dart.dart @@ -0,0 +1,91 @@ +import 'dart:async'; +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/links.dart'; +import '../../views/widgets/elevated_btn.dart'; +import '../functions/crud.dart'; + +class BlinkingController extends GetxController { + final promoFormKey = GlobalKey(); + + final promo = TextEditingController(); + bool promoTaken = false; + void applyPromoCodeToPassenger() async { + //TAWJIHI + if (promoFormKey.currentState!.validate()) { + CRUD().get(link: AppLink.getPassengersPromo, payload: { + 'promo_code': promo.text, + }).then((value) { + if (value == 'failure') { + Get.defaultDialog( + title: 'Promo End !'.tr, + confirm: MyElevatedButton( + title: 'Back', + onPressed: () { + Get.back(); + Get.back(); + }, + )); + } + var decode = jsonDecode(value); + + // if (decode["status"] == "success") { + // var firstElement = decode["message"][0]; + // if (double.parse(box.read(BoxName.passengerWalletTotal)) < 0) { + // totalPassenger = totalCostPassenger - + // (totalCostPassenger * int.parse(firstElement['amount']) / 100); + // update(); + // } else { + // totalPassenger = totalCostPassenger - + // (totalCostPassenger * int.parse(firstElement['amount']) / 100); + // update(); + // } + + // totalDriver = totalDriver - + // (totalDriver * int.parse(firstElement['amount']) / 100); + // promoTaken = true; + // update(); + // Get.back(); + // } + }); + } + } + + // Reactive variable for blinking (on/off) + var isLightOn = false.obs; + + // To animate the border color + var borderColor = Colors.black.obs; + + Timer? _blinkingTimer; + + // Method to start blinking for 5 seconds + void startBlinking() { + int count = 0; + + _blinkingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + // Toggle light on/off + isLightOn.value = !isLightOn.value; + borderColor.value = isLightOn.value + ? Colors.yellow + : Colors.black; // Animate border color + + count++; + + // Stop blinking after 5 seconds + if (count >= 35) { + timer.cancel(); + isLightOn.value = false; // Ensure light turns off + borderColor.value = Colors.black; // Reset the border color + } + }); + } + + @override + void onClose() { + _blinkingTimer?.cancel(); + super.onClose(); + } +} diff --git a/lib/controller/home/contact_us_controller.dart b/lib/controller/home/contact_us_controller.dart new file mode 100644 index 0000000..afc879f --- /dev/null +++ b/lib/controller/home/contact_us_controller.dart @@ -0,0 +1,78 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../constant/colors.dart'; +import '../functions/launch.dart'; + +class ContactUsController extends GetxController { + final String phone1 = '+201018805430'; + final String phone2 = '+201080182934'; + final TimeOfDay workStartTime = const TimeOfDay(hour: 12, minute: 0); + final TimeOfDay workEndTime = const TimeOfDay(hour: 19, minute: 0); + + bool _isWithinWorkTime(TimeOfDay now) { + return (now.hour > workStartTime.hour || + (now.hour == workStartTime.hour && + now.minute >= workStartTime.minute)) && + (now.hour < workEndTime.hour || + (now.hour == workEndTime.hour && now.minute <= workEndTime.minute)); + } + + void showContactDialog(BuildContext context) { + TimeOfDay now = TimeOfDay.now(); + + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + title: Text('Contact Us'.tr), + message: Text('Choose a contact option'.tr), + actions: [ + if (_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text(phone1), + onPressed: () => makePhoneCall( + phone1, + ), + ), + if (_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text(phone2), + onPressed: () => makePhoneCall(phone2), + ), + if (!_isWithinWorkTime(now)) + CupertinoActionSheetAction( + child: Text( + 'Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.' + .tr), + onPressed: () => Navigator.pop(context), + ), + CupertinoActionSheetAction( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Text('Send WhatsApp Message'.tr), + ], + ), + onPressed: () => + launchCommunication('whatsapp', phone1, 'Hello'.tr), + ), + CupertinoActionSheetAction( + child: Text('Send Email'.tr), + onPressed: () => + launchCommunication('email', 'support@sefer.live', 'Hello'.tr), + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () => Navigator.pop(context), + ), + ), + ); + } +} diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index ae93a0c..35a3da5 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -2,6 +2,8 @@ import 'dart:async'; import 'dart:convert'; import 'dart:math' show Random, cos, pi, pow, sin, sqrt; import 'dart:math' as math; +import 'package:SEFER/constant/univeries_polygon.dart'; +import 'package:flutter_confetti/flutter_confetti.dart'; import 'package:vector_math/vector_math.dart' show radians, degrees; import 'package:SEFER/controller/functions/tts.dart'; @@ -26,6 +28,7 @@ import '../../constant/links.dart'; import '../../constant/table_names.dart'; import '../../main.dart'; import '../../models/model/locations.dart'; +import '../../models/model/painter_copoun.dart'; import '../../print.dart'; import '../../views/home/map_widget.dart/car_details_widget_to_go.dart'; import '../../views/home/map_widget.dart/select_driver_mishwari.dart'; @@ -51,6 +54,7 @@ class MapPassengerController extends GetxController { TextEditingController whatsAppLocationText = TextEditingController(); TextEditingController messageToDriver = TextEditingController(); final sosFormKey = GlobalKey(); + final promoFormKey = GlobalKey(); final messagesFormKey = GlobalKey(); final increaseFeeFormKey = GlobalKey(); List data = []; @@ -362,9 +366,15 @@ class MapPassengerController extends GetxController { "id": rideId.toString(), // Convert to String "status": 'waiting' }); + CRUD().post(link: AppLink.updateWaitingTrip, payload: { + "id": rideId.toString(), // Convert to String + "status": 'wait' + }); tick = 0; } - confirmRideForAllDriverAvailable(); + await getCarForFirstConfirm(box.read(BoxName.carType)); + // confirmRideForAllDriverAvailable(); + icreaseForSameRideAndDelay(); } } } @@ -734,7 +744,7 @@ class MapPassengerController extends GetxController { if (res != 'failure') { var decode = jsonDecode(res); - if (decode['data']['status'] == 'Begin') { + if (decode['data']['status'] != 'Apply') { timeToPassengerFromDriverAfterApplied = 0; remainingTime = 0; remainingTimeToPassengerFromDriverAfterApplied = 0; @@ -747,7 +757,7 @@ class MapPassengerController extends GetxController { // isCancelRidePageShown = true; rideIsBeginPassengerTimer(); runWhenRideIsBegin(); - } + } else {} } } catch (e) { // Handle the error or perform any necessary actions @@ -921,7 +931,7 @@ class MapPassengerController extends GetxController { // Extract the URL part from the link by finding the first occurrence of "http" int urlStartIndex = link.indexOf(RegExp(r'https?://')); if (urlStartIndex == -1) { - throw FormatException('No URL found in the provided link.'); + throw const FormatException('No URL found in the provided link.'); } // Extract the URL and clean it @@ -1016,44 +1026,69 @@ class MapPassengerController extends GetxController { late String model = ''; late String make = ''; late String licensePlate = ''; + confirmRideForFirstDriver() async { // startCarLocationSearch(box.read(BoxName.carType)); // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 7000); - // await getNearestDriverByPassengerLocationAPIGOOGLE(); - Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); + // box.read(BoxName.carType), 7000); + // var nearestCar = await getNearestDriverByPassengerLocation(); + + // if (nearestCar != null) { + // // Find the corresponding driver data in dataCarsLocationByPassenger + // var nearestDriverData = dataCarsLocationByPassenger['message'].firstWhere( + // (car) => car['driver_id'] == nearestCar.id, + // orElse: () => null, + // ); + + // // if (nearestDriverData != null) { + // driverToken = nearestDriverData['token'].toString(); + // Log.print('driverToken: ${driverToken}'); + // driverPhone = nearestDriverData['phone'].toString(); + // firstName = nearestDriverData['first_name'].toString(); + // carColor = nearestDriverData['color'].toString(); + // driverRate = nearestDriverData['ratingDriver'].toString(); + // carYear = nearestDriverData['year'].toString(); + // model = '${nearestDriverData['model']} - ${nearestDriverData['make']}'; + // licensePlate = nearestDriverData['car_plate'].toString(); + // startCarLocationSearch(box.read(BoxName.carType)); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 4500); + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), 7000); + // await getNearestDriverByPassengerLocation(); + Log.print('dataCarsLocationByPassenger: $dataCarsLocationByPassenger'); if (dataCarsLocationByPassenger != 'failure' || dataCarsLocationByPassenger != null) { driverToken = - dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(); + dataCarsLocationByPassenger['data'][carsOrder]['token'].toString(); driverPhone = - dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString(); - firstName = dataCarsLocationByPassenger['message'][carsOrder] + dataCarsLocationByPassenger['data'][carsOrder]['phone'].toString(); + firstName = dataCarsLocationByPassenger['data'][carsOrder] ['first_name'] // driverName .toString(); carColor = - dataCarsLocationByPassenger['message'][carsOrder]['color'].toString(); - driverRate = dataCarsLocationByPassenger['message'][carsOrder] + dataCarsLocationByPassenger['data'][carsOrder]['color'].toString(); + driverRate = dataCarsLocationByPassenger['data'][carsOrder] ['ratingDriver'] .toString(); carYear = - dataCarsLocationByPassenger['message'][carsOrder]['year'].toString(); + dataCarsLocationByPassenger['data'][carsOrder]['year'].toString(); model = - '${dataCarsLocationByPassenger['message'][carsOrder]['model']} - ${dataCarsLocationByPassenger['message'][carsOrder]['make']}'; - licensePlate = dataCarsLocationByPassenger['message'][carsOrder] - ['car_plate'] + '${dataCarsLocationByPassenger['data'][carsOrder]['model']} - ${dataCarsLocationByPassenger['data'][carsOrder]['make']}'; + licensePlate = dataCarsLocationByPassenger['data'][carsOrder]['car_plate'] .toString(); - PaymentController paymentController = Get.find(); rideConfirm = true; shouldFetch = true; isBottomSheetShown = false; + // timeToPassengerFromDriverAfterApplied = nearestCar.duration.toInt(); timeToPassengerFromDriverAfterApplied = durationToPassenger; //60 todo durationToPassenger;/ isDriversTokensSend = false; update(); - await CRUD().post(link: AppLink.addRides, payload: { + await CRUD() + .post(link: "${AppLink.endPoint}/ride/rides/add.php", payload: { "start_location": //'${data[0]['start_address']}', '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', "end_location": //'${data[0]['end_address']}', @@ -1063,8 +1098,7 @@ class MapPassengerController extends GetxController { "endtime": durationToAdd.toString(), "price": totalPassenger.toStringAsFixed(2), "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['message'][carsOrder] - ['driver_id'] + "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] .toString(), "status": "waiting", 'carType': box.read(BoxName.carType), @@ -1082,7 +1116,7 @@ class MapPassengerController extends GetxController { totalDriver.toStringAsFixed(2), durationToRide.toString(), distance.toStringAsFixed(2), - dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] + dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] .toString(), box.read(BoxName.passengerID).toString(), box.read(BoxName.name).toString(), @@ -1091,11 +1125,11 @@ class MapPassengerController extends GetxController { durationByPassenger.toString(), distanceByPassenger.toString(), paymentController.isWalletChecked.toString(), - dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(), + dataCarsLocationByPassenger['data'][carsOrder]['token'].toString(), durationToPassenger.toString(), rideId, rideTimerBegin.toString(), - dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] + dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] .toString(), durationToRide.toString(), Get.find().wayPoints.length > 1 @@ -1112,73 +1146,24 @@ class MapPassengerController extends GetxController { .toStringAsFixed(2) : '0', box.read(BoxName.email).toString(), - startNameAddress, - endNameAddress, + data[0]['start_address'], + data[0]['end_address'], box.read(BoxName.carType), kazan.toStringAsFixed(0), passengerRate.toStringAsFixed(2), ]; - Log.print('body: ${body}'); + Log.print('bodyOf order: $body'); FirebaseMessagesController().sendNotificationToDriverMAP( 'Order'.tr, 'from: $startNameAddress\nto: $startNameAddress\ndistanceFromMe: $distanceByPassenger\nDistance :$distance\nPrice ; $totalPassenger', // jsonDecode(value)['message'].toString(), - dataCarsLocationByPassenger['message'][carsOrder]['token'] - .toString(), + driverToken.toString(), body, - 'order.wav' - - // polylineCoordinates.toString() - ); + 'order.wav'); Log.print( - 'body: ${dataCarsLocationByPassenger['message'][carsOrder]['token']}'); + 'dataCarsLocationByPassenger[data]: ${dataCarsLocationByPassenger['data'][carsOrder]['token']}'); }); - CRUD().post( - link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php', - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['message'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - CRUD().post( - link: '${AppLink.seferGizaServer}/ride/rides/add.php', - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['message'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - - delayAndFetchRideStatus(rideId); + delayAndFetchRideStatus(rideId, box.read(BoxName.carType)); if (shouldFetch == false) { startTimer(); update(); @@ -1204,15 +1189,154 @@ class MapPassengerController extends GetxController { bool isDriversTokensSend = false; confirmRideForAllDriverAvailable() async { await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 7000); + box.read(BoxName.carType), 4500); if (dataCarsLocationByPassenger != 'failure') { - driversToken.remove(driverToken); + // driversToken.remove(driverToken); PaymentController paymentController = Get.find(); rideConfirm = true; shouldFetch = true; isBottomSheetShown = false; timeToPassengerFromDriverAfterApplied = 60; + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/add.php", + payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }).then((value) { + // List body = [ + rideId = jsonDecode(value)['message']; + for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { + List body = [ + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + totalPassenger.toStringAsFixed(2), + totalDriver.toStringAsFixed(2), + durationToRide.toString(), + distance.toStringAsFixed(2), + dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.tokenFCM).toString(), + box.read(BoxName.phone).toString(), + durationByPassenger.toString(), + distanceByPassenger.toString(), + paymentController.isWalletChecked.toString(), + dataCarsLocationByPassenger['data'][i]['token'].toString(), + durationToPassenger.toString(), + rideId, + rideTimerBegin.toString(), + dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), + durationToRide.toString(), + Get.find().wayPoints.length > 1 + ? 'haveSteps' + : 'startEnd', + placesCoordinate[0], + placesCoordinate[1], + placesCoordinate[2], + placesCoordinate[3], + placesCoordinate[4], + costForDriver.toStringAsFixed(2), + double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + ? double.parse(box.read(BoxName.passengerWalletTotal)) + .toStringAsFixed(2) + : '0', + box.read(BoxName.email).toString(), + data[0]['start_address'], + data[0]['end_address'], + box.read(BoxName.carType), + kazan.toStringAsFixed(0), + passengerRate.toStringAsFixed(2), + ]; + // Log.print('body: ${body}'); + FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderSpeed', + rideId.toString(), + dataCarsLocationByPassenger['data'][i]['token'].toString(), + body, + 'order.wav'); + } + }); + (rideId); // + CRUD().post( + link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php', + payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + CRUD().post( + link: '${AppLink.seferGizaServer}/ride/rides/add.php', + payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + + delayAndFetchRideStatusForAllDriverAvailable(rideId); + update(); + } else { + MyDialog().getDialog("No Car or Driver Found in your area.".tr, + "No Car or Driver Found in your area.".tr, () { + Get.back(); + Get.offAll(const MapPagePassenger()); + }); + } + } + + icreaseForSameRideAndDelay() { + PaymentController paymentController = Get.find(); + rideConfirm = true; + shouldFetch = true; + isBottomSheetShown = false; + timeToPassengerFromDriverAfterApplied = 60; + for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { List body = [ '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', @@ -1220,8 +1344,7 @@ class MapPassengerController extends GetxController { totalDriver.toStringAsFixed(2), durationToRide.toString(), distance.toStringAsFixed(2), - dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] - .toString(), + dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), box.read(BoxName.passengerID).toString(), box.read(BoxName.name).toString(), box.read(BoxName.tokenFCM).toString(), @@ -1229,12 +1352,11 @@ class MapPassengerController extends GetxController { durationByPassenger.toString(), distanceByPassenger.toString(), paymentController.isWalletChecked.toString(), - dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(), + dataCarsLocationByPassenger['data'][i]['token'].toString(), durationToPassenger.toString(), rideId, rideTimerBegin.toString(), - dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] - .toString(), + dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), durationToRide.toString(), Get.find().wayPoints.length > 1 ? 'haveSteps' @@ -1250,33 +1372,26 @@ class MapPassengerController extends GetxController { .toStringAsFixed(2) : '0', box.read(BoxName.email).toString(), - startNameAddress, - endNameAddress, + data[0]['start_address'], + data[0]['end_address'], box.read(BoxName.carType), kazan.toStringAsFixed(0), passengerRate.toStringAsFixed(2), ]; - Log.print('body: ${body}'); - for (var i = 1; i < driversToken.length; i++) { - FirebaseMessagesController().sendNotificationToDriverMAP('OrderSpeed', - rideId.toString(), driversToken[i], body, 'order.wav'); - } + // Log.print('body: ${body}'); - (rideId); - - update(); - } else { - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); - }); + FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderSpeed', + rideId.toString(), + dataCarsLocationByPassenger['data'][i]['token'].toString(), + body, + 'order.wav'); } } int tick = 0; // Move tick outside the function to maintain its state - void delayAndFetchRideStatus(String rideId) { + void delayAndFetchRideStatus(String rideId, carType) { Timer.periodic(const Duration(seconds: 1), (timer) async { if (shouldFetch) { if (remainingTimeToPassengerFromDriverAfterApplied > 0) { @@ -1284,17 +1399,23 @@ class MapPassengerController extends GetxController { Log.print('tick: $tick'); - if (res.toString() == 'waiting' && tick >= 15) { + if ((res.toString() == 'waiting' || res.toString() == 'Refused') && + tick >= 15) { timer.cancel(); // Stop the current timer showAndResearchForCaptain(); //TODO add to wait + await getCarsLocationByPassengerAndReloadMarker(carType, 4500); + // await getNearestDriverByPassengerLocationAPIGOOGLE(); + // getCarForFirstConfirm(carType); confirmRideForAllDriverAvailable(); // delayAndFetchRideStatusForAllDriverAvailable(rideId); } else if (res.toString() == 'Apply') { + Log.print('res.toString() == Apply: ${res.toString()}'); // todo play sound Get.find() .playSoundFromAssets('assets/start.wav'); timer.cancel(); // Stop the current timer + await getUpdatedRideForDriverApply(rideId); shouldFetch = false; // Stop further fetches statusRide = 'Apply'; rideConfirm = false; @@ -1314,6 +1435,9 @@ class MapPassengerController extends GetxController { // } if (tick < 19) { tick++; + } else { + timer.cancel(); + // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 } } else { timer.cancel(); @@ -1333,6 +1457,8 @@ class MapPassengerController extends GetxController { duration: const Duration(seconds: 5), backgroundColor: AppColor.yellowColor, ); + isSearchingWindow == true; + update(); } void delayAndFetchRideStatusForAllDriverAvailable(String rideId) async { @@ -1340,16 +1466,16 @@ class MapPassengerController extends GetxController { int attemptCounter = 0; bool isApplied = false; tick = 0; - Log.print('tick delayAndFetchRideStatusForAllDriverAvailable: ${tick}'); + Log.print('tick delayAndFetchRideStatusForAllDriverAvailable: $tick'); void fetchRideStatus() async { - if (attemptCounter < maxAttempts && !isApplied || tick < 20) { + if (attemptCounter < maxAttempts && isApplied == false || tick < 15) { attemptCounter++; tick++; var res = await getRideStatus(rideId); - if (res.toString() == 'Apply') { - getUpdatedRideForDriverApply(rideId); + if (res.toString() == 'Apply' || res.toString() == 'Applied') { + await getUpdatedRideForDriverApply(rideId); isApplied = true; shouldFetch = false; statusRide = 'Apply'; @@ -1421,9 +1547,9 @@ class MapPassengerController extends GetxController { actions: [ MyElevatedButton( title: "No, thanks", - onPressed: () { + onPressed: () async { + await cancelRide(); Get.back(); - cancelRide(); }), MyElevatedButton( title: "Increase Fee".tr, @@ -1447,7 +1573,7 @@ class MapPassengerController extends GetxController { reSearchAfterCanceledFromDriver() async { await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 7000); + box.read(BoxName.carType), 4500); confirmRideForAllDriverAvailable(); shouldFetch = true; // Stop further fetches @@ -1485,7 +1611,7 @@ class MapPassengerController extends GetxController { void timerEnded() async { runEvery30SecondsUntilConditionMet(); isCancelRidePageShown = false; - print('isCancelRidePageShown: ${isCancelRidePageShown}'); + print('isCancelRidePageShown: $isCancelRidePageShown'); update(); } @@ -1503,6 +1629,7 @@ class MapPassengerController extends GetxController { await CRUD().get(link: AppLink.getRideOrderID, payload: {'id': rideId}); if (res != 'failure') { var response = jsonDecode(res); + Log.print('getUpdatedRideForDriverApply: $response'); driverId = response['data']['driver_id']; driverPhone = response['data']['phone']; driverCarMake = response['data']['make']; @@ -1510,19 +1637,21 @@ class MapPassengerController extends GetxController { make = response['data']['make']; licensePlate = response['data']['car_plate']; firstName = response['data']['first_name']; + driverName = response['data']['driverName']; driverToken = response['data']['token']; + Log.print('driverToken updated: $driverToken'); carYear = response['data']['year']; - driverRate = response['data']['ratingDriver']; - } - driversToken.remove(driverToken); - for (var i = 1; i < driversToken.length; i++) { - FirebaseMessagesController().sendNotificationToAnyWithoutData( - 'Order Applied'.tr, - '$driverName Apply order\nTake attention in other order'.tr, - driversToken[i], - 'start.wav', - ); + driverRate = response['data']['ratingDriver'].toString(); } + // driversToken.remove(driverToken); + // for (var i = 1; i < driversToken.length; i++) { + FirebaseMessagesController().sendNotificationToAnyWithoutData( + 'Order Applied'.tr, + '$driverName Apply order\nTake attention in other order'.tr, + driverToken, + 'start.wav', + ); + // } // } } @@ -1645,34 +1774,71 @@ class MapPassengerController extends GetxController { final int updateIntervalMs = 100; // Update every 100ms final double minMovementThreshold = 10; // Minimum movement in meters to trigger update + Future getCarForFirstConfirm(String carType) async { + bool foundCars = false; + int attempt = 0; + + // Set up the periodic timer + Timer? timer = Timer.periodic(const Duration(seconds: 4), (Timer t) async { + // Attempt to get car location + foundCars = await getCarsLocationByPassengerAndReloadMarker( + carType, attempt * 2000); + Log.print('foundCars: $foundCars'); + + if (foundCars) { + // If cars are found, cancel the timer and exit the search + t.cancel(); + } else if (attempt >= 4) { + // After 4 attempts, stop the search + t.cancel(); + + // No cars found after 4 attempts + // MyDialog().getDialog( + // "No Car or Driver Found in your area.".tr, + // "No Car or Driver Found in your area.".tr, + // () { + // Get.back(); + // }, + // ); + if (!foundCars) { + noCarString = true; + dataCarsLocationByPassenger = 'failure'; + } + + update(); + } + + attempt++; // Increment attempt + }); + } void startCarLocationSearch(String carType) { int searchInterval = 5; // Interval in seconds - Log.print('searchInterval: ${searchInterval}'); + Log.print('searchInterval: $searchInterval'); int boundIncreaseStep = 2500; // Initial bounds in meters - Log.print('boundIncreaseStep: ${boundIncreaseStep}'); + Log.print('boundIncreaseStep: $boundIncreaseStep'); int maxAttempts = 3; // Maximum attempts to increase bounds int maxBoundIncreaseStep = 6000; // Maximum bounds increase step int attempt = 0; // Current attempt - Log.print('initial attempt: ${attempt}'); + Log.print('initial attempt: $attempt'); Timer.periodic(Duration(seconds: searchInterval), (Timer timer) async { - Log.print('Current attempt: ${attempt}'); // Log current attempt + Log.print('Current attempt: $attempt'); // Log current attempt bool foundCars = false; if (attempt >= maxAttempts) { timer.cancel(); if (foundCars == false) { noCarString = true; - dataCarsLocationByPassenger = 'failure'; + // dataCarsLocationByPassenger = 'failure'; update(); } - return; + // return; } else if (reloadStartApp == true) { - Log.print('reloadStartApp: ${reloadStartApp}'); + Log.print('reloadStartApp: $reloadStartApp'); foundCars = await getCarsLocationByPassengerAndReloadMarker( carType, boundIncreaseStep); - Log.print('foundCars: ${foundCars}'); + Log.print('foundCars: $foundCars'); if (foundCars) { timer.cancel(); @@ -1682,7 +1848,7 @@ class MapPassengerController extends GetxController { timer.cancel(); } Log.print( - 'Incrementing attempt to: ${attempt}'); // Log incremented attempt + 'Incrementing attempt to: $attempt'); // Log incremented attempt if (boundIncreaseStep < maxBoundIncreaseStep) { boundIncreaseStep += 1500; // Increase bounds @@ -1691,7 +1857,7 @@ class MapPassengerController extends GetxController { maxBoundIncreaseStep; // Ensure it does not exceed the maximum } Log.print( - 'New boundIncreaseStep: ${boundIncreaseStep}'); // Log new bounds + 'New boundIncreaseStep: $boundIncreaseStep'); // Log new bounds } } } @@ -1708,7 +1874,7 @@ class MapPassengerController extends GetxController { } else if (latitude >= 29.904975 && latitude <= 30.143372 && longitude >= 30.787030 && - longitude <= 31.238843) { + longitude <= 31.215009) { box.write(BoxName.serverChosen, AppLink.seferGizaServer); return 'Giza'; } else if (latitude >= 30.396286 && @@ -1719,141 +1885,139 @@ class MapPassengerController extends GetxController { return 'Alexandria'; } else { box.write(BoxName.serverChosen, AppLink.seferCairoServer); - return 'Outside'; + return 'Cairo'; } } Future getCarsLocationByPassengerAndReloadMarker( String carType, int boundIncreaseStep) async { - if (statusRide == 'wait') { - carsLocationByPassenger = []; - LatLngBounds bounds = calculateBounds(passengerLocation.latitude, - passengerLocation.longitude, boundIncreaseStep.toDouble()); - var res; - // await getLocation(); + // if (statusRide == 'wait') { + carsLocationByPassenger = []; + LatLngBounds bounds = calculateBounds(passengerLocation.latitude, + passengerLocation.longitude, boundIncreaseStep.toDouble()); + var res; + // await getLocation(); - switch (carType) { - case 'Lady': - res = await CRUD() - .get(link: AppLink.getFemalDriverLocationByPassenger, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Comfort': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerComfort, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Speed': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerSpeed, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Scooter': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerDelivery, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - break; - case 'Awfar Car': - res = await CRUD() - .get(link: AppLink.getCarsLocationByPassengerBalash, payload: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - '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: { - 'southwestLat': bounds.southwest.latitude.toString(), - 'southwestLon': bounds.southwest.longitude.toString(), - 'northeastLat': bounds.northeast.latitude.toString(), - 'northeastLon': bounds.northeast.longitude.toString(), - }); - } - - if (res == 'failure') { - noCarString = true; - dataCarsLocationByPassenger = 'failure'; - update(); - return false; - } else { - noCarString = false; - dataCarsLocationByPassenger = jsonDecode(res); - - // 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 - - for (var i = 0; - i < dataCarsLocationByPassenger['message'].length; - i++) { - var json = dataCarsLocationByPassenger['message'][i]; - _updateOrCreateMarker( - MarkerId(json['latitude']).toString(), - LatLng(double.parse(json['latitude']), - double.parse(json['longitude'])), - double.parse(json['heading']), - _getIconForCar(json), - ); - - driversToken.add(json['token']); - } - - // Add fake car markers - _addFakeCarMarkers(passengerLocation, 2); - - update(); - return true; - } + switch (carType) { + case 'Lady': + res = await CRUD() + .get(link: AppLink.getFemalDriverLocationByPassenger, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Comfort': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerComfort, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Speed': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerSpeed, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Scooter': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerDelivery, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); + break; + case 'Awfar Car': + res = await CRUD() + .get(link: AppLink.getCarsLocationByPassengerBalash, payload: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + '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: { + 'southwestLat': bounds.southwest.latitude.toString(), + 'southwestLon': bounds.southwest.longitude.toString(), + 'northeastLat': bounds.northeast.latitude.toString(), + 'northeastLon': bounds.northeast.longitude.toString(), + }); } - return false; + + if (res == 'failure') { + noCarString = true; + // dataCarsLocationByPassenger = 'failure'; + update(); + return false; + } else { + noCarString = false; + dataCarsLocationByPassenger = jsonDecode(res); + + // 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 + + for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { + var json = dataCarsLocationByPassenger['message'][i]; + _updateOrCreateMarker( + MarkerId(json['latitude']).toString(), + LatLng( + double.parse(json['latitude']), double.parse(json['longitude'])), + double.parse(json['heading']), + _getIconForCar(json), + ); + + driversToken.add(json['token']); + } + + // Add fake car markers + _addFakeCarMarkers(passengerLocation, 1); + + update(); + return true; + } + // } + // return false; } final List> fakeCarData = []; @@ -1861,7 +2025,7 @@ class MapPassengerController extends GetxController { void _addFakeCarMarkers(LatLng center, int count) { if (fakeCarData.isEmpty) { Random random = Random(); - double radiusInKm = 1.5; // 3 km diameter, so 1.5 km radius + double radiusInKm = 2.5; // 3 km diameter, so 1.5 km radius for (int i = 0; i < count; i++) { // Generate a random angle and distance within the circle @@ -2024,6 +2188,93 @@ class MapPassengerController extends GetxController { } } + // Function to check if the point is inside the polygon + bool isPointInPolygon(LatLng point, List polygon) { + int intersections = 0; + for (int i = 0; i < polygon.length; i++) { + LatLng vertex1 = polygon[i]; + LatLng vertex2 = + polygon[(i + 1) % polygon.length]; // Loop back to the start + + if (_rayIntersectsSegment(point, vertex1, vertex2)) { + intersections++; + } + } + + // If the number of intersections is odd, the point is inside + return intersections % 2 != 0; + } + +// Helper function to check if a ray from the point intersects with a polygon segment + bool _rayIntersectsSegment(LatLng point, LatLng vertex1, LatLng vertex2) { + double px = point.longitude; + double py = point.latitude; + + double v1x = vertex1.longitude; + double v1y = vertex1.latitude; + double v2x = vertex2.longitude; + double v2y = vertex2.latitude; + + // Check if the point is outside the vertical bounds of the segment + if ((py < v1y && py < v2y) || (py > v1y && py > v2y)) { + return false; + } + + // Calculate the intersection of the ray and the segment + double intersectX = v1x + (py - v1y) * (v2x - v1x) / (v2y - v1y); + + // Check if the intersection is to the right of the point + return intersectX > px; + } + + bool isInUniversity = false; +// Function to check if the passenger is in any university polygon + // Function to check if the passenger is in any university polygon and return the university name + String checkPassengerLocation(LatLng passengerLocation, + List> universityPolygons, List universityNames) { + for (int i = 0; i < universityPolygons.length; i++) { + if (isPointInPolygon(passengerLocation, universityPolygons[i])) { + isInUniversity = true; + return "Passenger is in ${universityNames[i]}"; + } + } + return "Passenger is not in any university"; + } + + String passengerLocationStringUnvirsity = 'unKnown'; + void getPassengerLocationUniversity() { + // Check if the passenger is inside any of the university polygons and get the university name + passengerLocationStringUnvirsity = checkPassengerLocation( + passengerLocation, + UniversitiesPolygons.universityPolygons, + UniversitiesPolygons.universityNames, + ); + if (passengerLocationStringUnvirsity != 'unKnown') { + // Get.snackbar('you are in $passengerLocationStringUnvirsity', ""); + } + print(passengerLocationStringUnvirsity); + } + + var polygons = {}.obs; + + // Initialize polygons from UniversitiesPolygons + void _initializePolygons() { + List> universityPolygons = + UniversitiesPolygons.universityPolygons; + List universityNames = UniversitiesPolygons.universityNames; + + for (int i = 0; i < universityPolygons.length; i++) { + Polygon polygon = Polygon( + polygonId: PolygonId(universityNames[i]), + points: universityPolygons[i], + strokeColor: Colors.blueAccent, + fillColor: Colors.blueAccent.withOpacity(0.2), + strokeWidth: 2, + ); + polygons.add(polygon); // Add polygon to observable set + } + } + void handleResponse(Map res1) { if (res1['message'] == "No passenger found for the given phone number") { Get.defaultDialog( @@ -2131,7 +2382,7 @@ class MapPassengerController extends GetxController { for (var i = 0; i < loopCount; i++) { // Wait for 50 seconds. await Future.delayed(const Duration(seconds: 4)); - if (rideTimerBegin == true) { + if (rideTimerBegin == true && statusRide == 'Apply') { await getDriverCarsLocationToPassengerAfterApplied(); } reloadMarkerDriverCarsLocationToPassengerAfterApplied(); @@ -2235,18 +2486,6 @@ class MapPassengerController extends GetxController { update(); } - searchNewDriverAfterRejectingFromDriver() { -// - - shouldFetch = true; // Stop further fetches - statusRide = 'wait'; - rideConfirm = true; - isSearchingWindow = true; - confirmRideForFirstDriver(); - - update(); - } - Future cancelRideAfterRejectFromAll() async { clearPlacesDestination(); clearPolyline(); @@ -2271,7 +2510,9 @@ class MapPassengerController extends GetxController { } Future cancelRide() async { - if (rideConfirm == false && statusRide == 'Apply') { + if (rideConfirm == false && statusRide == 'Apply' || + statusRide == 'Applied' || + statusRide == 'waiting') { clearPlacesDestination(); clearPolyline(); // clearPolylineAll(); @@ -2286,6 +2527,10 @@ class MapPassengerController extends GetxController { "id": rideId.toString(), // Convert to String "status": 'Cancel' }); + CRUD().post(link: AppLink.updateWaitingTrip, payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); print('Cancel'); FirebaseMessagesController().sendNotificationToDriverMAP( 'Cancel Trip', @@ -2718,7 +2963,7 @@ class MapPassengerController extends GetxController { if (reloadStartApp == false) { Timer.periodic(const Duration(seconds: 5), (timer) async { reloadCount++; - Log.print('reloadCount: ${reloadCount}'); + Log.print('reloadCount: $reloadCount'); if (!rideConfirm) { clearMarkersExceptStartEnd(); @@ -2751,35 +2996,42 @@ class MapPassengerController extends GetxController { if (polyLines.isEmpty || data.isEmpty) { return null; // Early return if data is empty } + if (!rideConfirm) { if (dataCarsLocationByPassenger != 'failure') { if (dataCarsLocationByPassenger != null) { if (dataCarsLocationByPassenger['message'].length > 0) { + double nearestDistance = double + .infinity; // Initialize nearest distance to a large number + CarLocation? nearestCar; + for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { var carLocation = dataCarsLocationByPassenger['message'][i]; - // Calculate the distance between the passenger's location and the current driver's location + // Calculate the distance between passenger's location and current driver's location final distance = Geolocator.distanceBetween( passengerLocation.latitude, passengerLocation.longitude, double.parse(carLocation['latitude']), double.parse(carLocation['longitude']), ); - durationToPassenger = (distance * 25 * (1000 / 3600)) - .round(); //////35 is avg of speed in city - // Update the UI with the distance and duration + + // Calculate duration assuming an average speed of 25 km/h (adjust as needed) + int durationToPassenger = + (distance * 25 * (1000 / 3600)).round(); // 25 km/h in m/s + + // Update the UI with the distance and duration for each car update(); - // If the distance is less than the nearest distance, update the nearest driver + // If this distance is smaller than the nearest distance found so far, update nearestCar if (distance < nearestDistance) { nearestDistance = distance; nearestCar = CarLocation( distance: distance, - duration: - 0, // We don't have duration information from Geolocator + duration: durationToPassenger.toDouble(), id: carLocation['driver_id'], latitude: double.parse(carLocation['latitude']), longitude: double.parse(carLocation['longitude']), @@ -2789,13 +3041,16 @@ class MapPassengerController extends GetxController { update(); } } + + // Return the nearest car found + return nearestCar; } } } } - // Return the nearest driver - return nearestCar; + // Return null if no drivers are found or if ride is confirmed + return null; } getNearestDriverByPassengerLocationAPIGOOGLE() async { @@ -2943,7 +3198,8 @@ class MapPassengerController extends GetxController { update(); remainingTime = 25; //to make cancel every call // startCarLocationSearch(box.read(BoxName.carType)); - getCarsLocationByPassengerAndReloadMarker(box.read(BoxName.carType), 7000); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 7000); // await getCarsLocationByPassengerAndReloadMarker(); var coordDestination = destination.split(','); double latPassengerDestination = double.parse(coordDestination[0]); @@ -3241,44 +3497,150 @@ class MapPassengerController extends GetxController { final promo = TextEditingController(); bool promoTaken = false; - void applyPromoCodeToPassenger() async { - //TAWJIHI - - CRUD().get(link: AppLink.getPassengersPromo, payload: { - 'promo_code': promo.text, - }).then((value) { - if (value == 'failure') { - Get.defaultDialog( - title: 'Promo End !'.tr, - confirm: MyElevatedButton( - title: 'Back', - onPressed: () { - Get.back(); + applyPromoCodeToPassenger(BuildContext context) async { + if (promoTaken == false) { + if (promoFormKey.currentState!.validate()) { + CRUD().get(link: AppLink.getPassengersPromo, payload: { + 'promo_code': promo.text, + }).then((value) { + if (value == 'failure') { + MyDialog().getDialog( + 'Promo Ended'.tr, + 'The promotion period has ended.'.tr, + () { Get.back(); }, - )); + ); + } else if (totalPassengerComfort > 30 || + totalPassengerLady > 30 || + totalPassengerSpeed > 20 || + totalPassengerBalash > 20) { + var decode = jsonDecode(value); + + if (decode["status"] == "success") { + Get.snackbar('Promo Code Accepted'.tr, '', + backgroundColor: AppColor.greenColor); + var firstElement = decode["message"][0]; + double burc = + double.parse(box.read(BoxName.passengerWalletTotal)); + if (burc < 0) { + int discountPercentage = int.parse(firstElement['amount']); + +// 1. Calculate and apply discount for totalPassengerComfort + totalPassengerComfortDiscount = + totalPassengerComfort * discountPercentage / 100; + Log.print( + 'totalPassengerComfortDiscount: $totalPassengerComfortDiscount'); + +// Apply the formula: totalPassengerComfort + (-1 * burc) - discount + totalPassengerComfort = totalPassengerComfort + + (-1 * burc) - + totalPassengerComfortDiscount; + +// 2. Calculate and apply discount for totalPassengerLady + totalPassengerLadyDiscount = + totalPassengerLady * discountPercentage / 100; + +// Apply the formula: totalPassengerLady + (-1 * burc) - discount + totalPassengerLady = totalPassengerLady + + (-1 * burc) - + totalPassengerLadyDiscount; + +// 3. Calculate and apply discount for totalPassengerSpeed + totalPassengerSpeedDiscount = + totalPassengerSpeed * discountPercentage / 100; + +// Apply the formula: totalPassengerSpeed + (-1 * burc) - discount + totalPassengerSpeed = totalPassengerSpeed + + (-1 * burc) - + totalPassengerSpeedDiscount; + +// 4. Calculate and apply discount for totalPassengerBalash + totalPassengerBalashDiscount = + totalPassengerBalash * discountPercentage / 100; + +// Apply the formula: totalPassengerBalash + (-1 * burc) - discount + totalPassengerBalash = totalPassengerBalash + + (-1 * burc) - + totalPassengerBalashDiscount; + +// Mark promo as taken + promoTaken = true; + +// Update UI + update(); + } else { + int discountPercentage = int.parse(firstElement['amount']); + +// Calculate discounts for each category, ensuring they don't exceed 25 + totalPassengerComfortDiscount = + totalPassengerComfort * discountPercentage / 100; + if (totalPassengerComfortDiscount > 25) { + totalPassengerComfortDiscount = + 25; // Limit the discount to 25 + } + Log.print( + 'totalPassengerComfortDiscount: $totalPassengerComfortDiscount'); + totalPassengerComfort = + totalPassengerComfort - totalPassengerComfortDiscount; + + totalPassengerLadyDiscount = + totalPassengerLady * discountPercentage / 100; + if (totalPassengerLadyDiscount > 25) { + totalPassengerLadyDiscount = 25; // Limit the discount to 25 + } + totalPassengerLady = + totalPassengerLady - totalPassengerLadyDiscount; + + totalPassengerSpeedDiscount = + totalPassengerSpeed * discountPercentage / 100; + if (totalPassengerSpeedDiscount > 25) { + totalPassengerSpeedDiscount = 25; // Limit the discount to 25 + } + totalPassengerSpeed = + totalPassengerSpeed - totalPassengerSpeedDiscount; + + totalPassengerBalashDiscount = + totalPassengerBalash * discountPercentage / 100; + if (totalPassengerBalashDiscount > 25) { + totalPassengerBalashDiscount = 25; // Limit the discount to 25 + } + totalPassengerBalash = + totalPassengerBalash - totalPassengerBalashDiscount; + +// Trigger UI update + update(); + } + + totalDriver = totalDriver - + (totalDriver * int.parse(firstElement['amount']) / 100); + promoTaken = true; + + // Launch confetti for success feedback + Confetti.launch( + context, + options: const ConfettiOptions( + particleCount: 100, spread: 70, y: 0.6), + ); + + update(); + Get.back(); + Future.delayed(const Duration(microseconds: 111)); + } + } else { + Get.snackbar('Lowest Price Achieved'.tr, + 'Cannot apply further discounts.'.tr, + backgroundColor: AppColor.yellowColor); + } + }); } - var decode = jsonDecode(value); - - if (decode["status"] == "success") { - var firstElement = decode["message"][0]; - if (double.parse(box.read(BoxName.passengerWalletTotal)) < 0) { - totalPassenger = totalCostPassenger - - (totalCostPassenger * int.parse(firstElement['amount']) / 100); - update(); - } else { - totalPassenger = totalCostPassenger - - (totalCostPassenger * int.parse(firstElement['amount']) / 100); - update(); - } - - totalDriver = totalDriver - - (totalDriver * int.parse(firstElement['amount']) / 100); - promoTaken = true; - update(); + } else { + MyDialog().getDialog( + 'Promo Already Used'.tr, 'You have already used this promo code.'.tr, + () { Get.back(); - } - }); + }); + } } double getDistanceFromText(String distanceText) { @@ -3318,6 +3680,7 @@ class MapPassengerController extends GetxController { costRayehGaiBalash, costRayehGaiComfort = 0; update(); + if (startNameAddress.toLowerCase().contains('airport') || endNameAddress.toLowerCase().contains('airport') || startNameAddress.contains('مطار') || @@ -3457,45 +3820,92 @@ class MapPassengerController extends GetxController { var totalDriver1 = costDistance + costDuration; totalCostPassenger = totalDriver1 + (totalDriver1 * kazan / 100); totalPassenger = costSpeed + (costSpeed * kazan / 100); - totalPassengerComfort = - (costComfort + (costComfort * kazan / 100)).ceilToDouble(); - totalPassengerLady = (costLady + (costLady * kazan / 100)).ceilToDouble(); - totalPassengerSpeed = - (costSpeed + (costSpeed * kazan / 100)).ceilToDouble(); - totalPassengerBalash = - (costBalash + (costBalash * kazan / 100)).ceilToDouble(); - totalPassengerRayehGai = - (costRayehGai + (costRayehGai * kazan / 100)).ceilToDouble(); - totalPassengerRayehGaiComfort = - (costRayehGaiComfort + (costRayehGaiComfort * kazan / 100)) - .ceilToDouble(); - totalPassengerRayehGaiBalash = - (costRayehGaiBalash + (costRayehGaiBalash * kazan / 100)) - .ceilToDouble(); - totalPassengerComfortDiscount = - totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100; - totalPassengerLadyDiscount = - totalPassengerLady + totalPassengerLady * (kazan - 0) / 100; - totalPassengerSpeedDiscount = - totalPassengerSpeed + totalPassengerSpeed * (kazan) / 100; - totalPassengerBalashDiscount = - totalPassengerBalash + totalPassengerBalash * (kazan) / 100; - totalPassengerRaihGaiDiscount = - totalPassengerRayehGai + totalPassengerRayehGai * (kazan) / 100; - totalPassengerScooter = - (costDelivery + (costDelivery * kazan / 100)).ceilToDouble(); - totalPassengerComfort = totalPassengerComfortDiscount - - (totalPassengerComfortDiscount * kazan / 100); - totalPassengerSpeed = totalPassengerSpeedDiscount - - (totalPassengerSpeedDiscount * kazan / 100); - totalPassengerBalash = totalPassengerBalashDiscount - - (totalPassengerBalashDiscount * kazan / 100); - totalPassengerLady = totalPassengerLadyDiscount - - (totalPassengerLadyDiscount * kazan / 100); - totalDriver = totalDriver1 + (totalDriver1 * kazan / 100); - tax = totalCostPassenger * kazan / 100; - totalME = totalCostPassenger - tax; - costForDriver = fuelPrice * (20 / 210) * distance; + if (isInUniversity) { + Log.print('isInUniversity: ${isInUniversity}'); + totalPassengerComfort = + 20 + (costComfort + (costComfort * kazan / 100)).ceilToDouble(); + totalPassengerLady = + 20 + (costLady + (costLady * kazan / 100)).ceilToDouble(); + totalPassengerSpeed = + 20 + (costSpeed + (costSpeed * kazan / 100)).ceilToDouble(); + totalPassengerBalash = + 20 + (costBalash + (costBalash * kazan / 100)).ceilToDouble(); + totalPassengerRayehGai = + (costRayehGai + (costRayehGai * kazan / 100)).ceilToDouble(); + totalPassengerRayehGaiComfort = + (costRayehGaiComfort + (costRayehGaiComfort * kazan / 100)) + .ceilToDouble(); + totalPassengerRayehGaiBalash = + (costRayehGaiBalash + (costRayehGaiBalash * kazan / 100)) + .ceilToDouble(); + totalPassengerComfortDiscount = + totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100; + totalPassengerLadyDiscount = + totalPassengerLady + totalPassengerLady * (kazan - 0) / 100; + totalPassengerSpeedDiscount = + totalPassengerSpeed + totalPassengerSpeed * (kazan) / 100; + totalPassengerBalashDiscount = + totalPassengerBalash + totalPassengerBalash * (kazan) / 100; + totalPassengerRaihGaiDiscount = + totalPassengerRayehGai + totalPassengerRayehGai * (kazan) / 100; + totalPassengerScooter = + (costDelivery + (costDelivery * kazan / 100)).ceilToDouble(); + totalPassengerComfort = totalPassengerComfortDiscount - + (totalPassengerComfortDiscount * kazan / 100); + totalPassengerSpeed = totalPassengerSpeedDiscount - + (totalPassengerSpeedDiscount * kazan / 100); + totalPassengerBalash = totalPassengerBalashDiscount - + (totalPassengerBalashDiscount * kazan / 100); + totalPassengerLady = totalPassengerLadyDiscount - + (totalPassengerLadyDiscount * kazan / 100); + totalDriver = totalDriver1 + (totalDriver1 * kazan / 100); + tax = totalCostPassenger * kazan / 100; + totalME = totalCostPassenger - tax; + costForDriver = fuelPrice * (20 / 210) * distance; + } else { + Log.print('isInUniversity: ${isInUniversity}'); + totalPassengerComfort = + (costComfort + (costComfort * kazan / 100)).ceilToDouble(); + totalPassengerLady = + (costLady + (costLady * kazan / 100)).ceilToDouble(); + totalPassengerSpeed = + (costSpeed + (costSpeed * kazan / 100)).ceilToDouble(); + totalPassengerBalash = + (costBalash + (costBalash * kazan / 100)).ceilToDouble(); + totalPassengerRayehGai = + (costRayehGai + (costRayehGai * kazan / 100)).ceilToDouble(); + totalPassengerRayehGaiComfort = + (costRayehGaiComfort + (costRayehGaiComfort * kazan / 100)) + .ceilToDouble(); + totalPassengerRayehGaiBalash = + (costRayehGaiBalash + (costRayehGaiBalash * kazan / 100)) + .ceilToDouble(); + totalPassengerComfortDiscount = + totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100; + totalPassengerLadyDiscount = + totalPassengerLady + totalPassengerLady * (kazan - 0) / 100; + totalPassengerSpeedDiscount = + totalPassengerSpeed + totalPassengerSpeed * (kazan) / 100; + totalPassengerBalashDiscount = + totalPassengerBalash + totalPassengerBalash * (kazan) / 100; + totalPassengerRaihGaiDiscount = + totalPassengerRayehGai + totalPassengerRayehGai * (kazan) / 100; + totalPassengerScooter = + (costDelivery + (costDelivery * kazan / 100)).ceilToDouble(); + totalPassengerComfort = totalPassengerComfortDiscount - + (totalPassengerComfortDiscount * kazan / 100); + totalPassengerSpeed = totalPassengerSpeedDiscount - + (totalPassengerSpeedDiscount * kazan / 100); + totalPassengerBalash = totalPassengerBalashDiscount - + (totalPassengerBalashDiscount * kazan / 100); + totalPassengerLady = totalPassengerLadyDiscount - + (totalPassengerLadyDiscount * kazan / 100); + totalDriver = totalDriver1 + (totalDriver1 * kazan / 100); + tax = totalCostPassenger * kazan / 100; + totalME = totalCostPassenger - tax; + costForDriver = fuelPrice * (20 / 210) * distance; + } + if (totalPassengerSpeed < 20) { // for eygpt 20 le open ride totalCostPassenger = 20; @@ -3531,10 +3941,23 @@ class MapPassengerController extends GetxController { } addToken() async { - await CRUD().post(link: AppLink.addTokens, payload: { + await CRUD() + .post(link: "${AppLink.server}/ride/firebase/add.php", payload: { 'token': box.read(BoxName.tokenFCM), 'passengerID': box.read(BoxName.passengerID).toString() }); + CRUD().post( + link: "${AppLink.seferAlexandriaServer}/ride/firebase/add.php", + payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); + CRUD().post( + link: "${AppLink.seferGizaServer}/ride/firebase/add.php", + payload: { + 'token': box.read(BoxName.tokenFCM), + 'passengerID': box.read(BoxName.passengerID).toString() + }); } List polylineCoordinate = []; @@ -3724,7 +4147,7 @@ class MapPassengerController extends GetxController { } void startFetchingData() { - Timer.periodic(Duration(milliseconds: 50), (Timer timer) async { + Timer.periodic(const Duration(milliseconds: 50), (Timer timer) async { await getKazanPercent(); }); } @@ -3744,6 +4167,30 @@ class MapPassengerController extends GetxController { } } + firstTimeRunToGetCoupon(String promo, validity, discount) { + // Check if it's the first time and the app is installed and gift token is available + if (box.read(BoxName.isFirstTime).toString() == '0' && + box.read(BoxName.isInstall).toString() == '1' && + box.read(BoxName.isGiftToken).toString() == '0') { + // Show a full-screen modal styled as an ad + Get.dialog( + AlertDialog( + contentPadding: + EdgeInsets.zero, // Removes the padding around the content + content: SizedBox( + width: 300, // Match the width of PromoBanner + // height: 250, // Match the height of PromoBanner + child: PromoBanner( + promoCode: promo, + discountPercentage: discount, + validity: validity, + ), + ), + ), + ); + } + } + @override void onInit() async { mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); @@ -3756,8 +4203,10 @@ class MapPassengerController extends GetxController { addCustomStepIcon(); addCustomStartIcon(); addCustomEndIcon(); + addToken(); getLocation(); - + getPassengerLocationUniversity(); + _initializePolygons(); // await addToken(); getKazanPercent(); getPassengerRate(); @@ -3769,7 +4218,7 @@ class MapPassengerController extends GetxController { box.write(BoxName.tipPercentage, '0'); Get.put(AudioRecorderController()); // await getNearestDriverByPassengerLocation(); - + firstTimeRunToGetCoupon('SEFER25', '1 WEEEK', '25%'); initilizeGetStorage(); cardNumber = await SecureStorage().readData(BoxName.cardNumber); @@ -3779,9 +4228,9 @@ class MapPassengerController extends GetxController { uploadPassengerLocation() async { await CRUD().post(link: AppLink.addpassengerLocation, payload: { "passengerId": box.read(BoxName.passengerID), - "lat": passengerLocation.latitude, - "lng": passengerLocation.longitude, - "rideId": rideId + "lat": passengerLocation.latitude.toString(), + "lng": passengerLocation.longitude.toString(), + "rideId": rideId.toString() }); } } diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 72ed9ef..5a8e001 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -606,6 +606,45 @@ iOS [https://getapp.cc/app/6458734951] 'الرَّجَاء التَّحَرُّك إِلَى السَّيَّارَة الآن', 'You will receive a code in WhatsApp Messenger': "سوف تتلقى رمزًا في واتساب ماسنجر", + 'If you need assistance, contact us': + "إذا كنت بحاجة إلى المساعدة، تواصل معنا", + "Promo Ended": "انتهى العرض", + 'Enter the promo code and get': 'أدخل رمز الترويج واحصل على', + 'DISCOUNT': 'خصم', + 'No wallet record found': 'لم يتم العثور على سجل محفظة', + 'for': 'لمدة', + "SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.": + "سفر هو التطبيق الأكثر أمانًا لمشاركة الركوب الذي يقدم العديد من الميزات لكل من السائقين والركاب. نحن نقدم أقل عمولة بنسبة 8% فقط، مما يضمن حصولك على أفضل قيمة لرحلاتك. يتضمن تطبيقنا التأمين لأفضل السائقين، الصيانة المنتظمة للسيارات مع أفضل المهندسين، والخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لجميع المستخدمين.", + "You can contact us during working hours from 12:00 - 19:00.": + "يمكنك الاتصال بنا خلال ساعات العمل من 12:00 - 7:00.", + "Contact Us": "اتصل بنا", + 'Choose a contact option': 'اختر خيار الاتصال', + 'Work time is from 12:00 - 19:00.\nYou can send a WhatsApp message or email.': + 'ساعات العمل من 12:00 - 19:00.\nيمكنك إرسال رسالة عبر واتساب أو بريد إلكتروني.', + 'Promo code copied to clipboard!': "'تم نسخ رمز العرض إلى الحافظة!'", + 'Copy Code': 'نسخ الرمز', + "Your invite code was successfully applied!": + "تم تطبيق رمز الدعوة بنجاح!", + "Payment Options": " خيارات الدفع", + "wait 1 minute to receive message": + "انتظر دقيقة واحدة لاستلام الرسالة", + 'Promo Copied!': 'تم نسخ العرض!', + 'You have copied the promo code.': 'لقد قمت بنسخ رمز العرض.', + 'Valid Until:': 'لمدة:', + "Select Payment Amount": " اختر مبلغ الدفع", + "The promotion period has ended.": "انتهت فترة العرض.", + "Promo Code Accepted": "تم قبول كود العرض", + 'Tap on the promo code to copy it!': 'اضغط على رمز العرض لنسخه!', + "Lowest Price Achieved": "تم الوصول إلى أدنى سعر", + "Cannot apply further discounts.": + "لا يمكن تطبيق المزيد من الخصومات.", + "Promo Already Used": "تم استخدام كود العرض بالفعل", + 'Invitation Used': "تم استخدام الدعوة", + "You have already used this promo code.": + "لقد استخدمت هذا الكود بالفعل.", + "Insert Your Promo Code": "أدخل كود العرض الخاص بك", + "Enter promo code here": "أدخل كود العرض هنا", + "Please enter a valid promo code": "يرجى إدخال كود عرض صالح", 'Awfar Car': 'أوفر كار', "Old and affordable, perfect for budget rides.": "سيارة ميسورة التكلفة، مثالية للرحلات الاقتصادية.", diff --git a/lib/controller/notification/passenger_notification_controller.dart b/lib/controller/notification/passenger_notification_controller.dart index 39a725b..062e162 100644 --- a/lib/controller/notification/passenger_notification_controller.dart +++ b/lib/controller/notification/passenger_notification_controller.dart @@ -1,13 +1,12 @@ import 'dart:convert'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:get/get.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; import '../../constant/box_name.dart'; import '../../constant/links.dart'; -import '../../constant/style.dart'; import '../../main.dart'; -import '../../views/widgets/elevated_btn.dart'; import '../functions/crud.dart'; class PassengerNotificationController extends GetxController { @@ -21,22 +20,17 @@ class PassengerNotificationController extends GetxController { link: AppLink.getNotificationPassenger, payload: {'passenger_id': box.read(BoxName.passengerID)}); if (res == "failure") { - Get.defaultDialog( - title: 'There is no notification yet'.tr, - titleStyle: AppStyle.title, - middleText: '', - confirm: MyElevatedButton( - title: 'Back', - onPressed: () { - Get.back(); - Get.back(); - })); + MyDialog().getDialog('There is no notification yet'.tr, '', () { + Get.back(); + Get.back(); + }); + } else { + notificationData = jsonDecode(res); + isloading = false; + update(); } - notificationData = jsonDecode(res); - // sql.insertData(notificationData['message'], TableName.captainNotification); - isloading = false; - update(); + // sql.insertData(notificationData['message'], TableName.captainNotification); } updateNotification(String id) async { diff --git a/lib/controller/payment/passenger_wallet_history_controller.dart b/lib/controller/payment/passenger_wallet_history_controller.dart index 3ca4db3..0f7abd6 100644 --- a/lib/controller/payment/passenger_wallet_history_controller.dart +++ b/lib/controller/payment/passenger_wallet_history_controller.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; @@ -23,17 +24,10 @@ class PassengerWalletHistoryController extends GetxController { isLoading = false; update(); } else { - Get.defaultDialog( - barrierDismissible: false, - title: 'No wallet record found'.tr, - titleStyle: AppStyle.title, - middleText: '', - confirm: MyElevatedButton( - title: 'OK'.tr, - onPressed: () { - Get.back(); - Get.back(); - })); + MyDialog().getDialog('No wallet record found'.tr, '', () { + Get.back(); + Get.back(); + }); } } diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index 6d39df7..b698d24 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -167,7 +167,7 @@ class PaymentController extends GetxController { ? '1140' : '0'); - getPassengerWallet(); + // getPassengerWallet(); isLoading = false; update(); @@ -698,24 +698,28 @@ class PaymentController extends GetxController { onPayment: (PaymobResponseWallet response) {}, ); - if (response!.success == true && response.responseCode == '200') { - Get.defaultDialog( - barrierDismissible: false, - title: 'Payment Successful'.tr, - titleStyle: AppStyle.title, - content: Text( - 'The payment was approved.'.tr, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - title: 'OK'.tr, - kolor: AppColor.greenColor, - onPressed: () async { - Get.back(); - method(); - }, - ), - ); + // if (response!.success == true && response.responseCode == '200') { + if (response!.responseCode == '200' && response.success == true) { + // Log.print('transactionID wewer: ${response.transactionID}'); + Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); + method(); + // Get.defaultDialog( + // barrierDismissible: false, + // title: 'Payment Successful'.tr, + // titleStyle: AppStyle.title, + // content: Text( + // 'The payment was approved.'.tr, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // title: 'OK'.tr, + // kolor: AppColor.greenColor, + // onPressed: () async { + // Get.back(); + // method(); + // }, + // ), + // ); } else { Get.defaultDialog( barrierDismissible: false, @@ -763,46 +767,49 @@ class PaymentController extends GetxController { billingData: PaymobBillingData(), onPayment: (PaymobResponse response) {}, ); - if (response!.success == true && response.responseCode == '200') { - if (response!.responseCode == 'APPROVED') { - Get.defaultDialog( - barrierDismissible: false, - title: 'Payment Successful'.tr, - titleStyle: AppStyle.title, - // backgroundColor: AppColor.greenColor, - content: Text( - 'The payment was approved.'.tr, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - kolor: AppColor.greenColor, - title: 'OK'.tr, - onPressed: () async { - Get.back(); - method(); - }, - ), - ); - } else { - Get.defaultDialog( - barrierDismissible: false, - // backgroundColor: AppColor.redColor, - title: 'Payment Failed'.tr, - content: Text( - 'The payment was not approved. Please try again.'.tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - confirm: MyElevatedButton( - title: 'OK'.tr, - kolor: AppColor.redColor, - onPressed: () async { - Get.back(); - }, - ), - ); - } + if (response!.responseCode == '200' && response.success == true) { + // if (response!.success == true && response.responseCode == '200') { + // if (response!.responseCode == 'APPROVED') { + Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); + method(); + // Get.defaultDialog( + // barrierDismissible: false, + // title: 'Payment Successful'.tr, + // titleStyle: AppStyle.title, + // // backgroundColor: AppColor.greenColor, + // content: Text( + // 'The payment was approved.'.tr, + // style: AppStyle.title, + // ), + // confirm: MyElevatedButton( + // kolor: AppColor.greenColor, + // title: 'OK'.tr, + // onPressed: () async { + // Get.back(); + // method(); + // }, + // ), + // ); + } else { + Get.defaultDialog( + barrierDismissible: false, + // backgroundColor: AppColor.redColor, + title: 'Payment Failed'.tr, + content: Text( + 'The payment was not approved. Please try again.'.tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + kolor: AppColor.redColor, + onPressed: () async { + Get.back(); + }, + ), + ); } + // } } } catch (e) { Get.defaultDialog( diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index aa130b0..7a4531a 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -79,13 +79,33 @@ class RateController extends GetxController { } } } - await CRUD().post(link: AppLink.addRateToDriver, payload: { - 'passenger_id': box.read(BoxName.passengerID).toString(), - 'driver_id': driverId, - 'ride_id': rideId, - 'rating': selectedRateItemId.toString(), - 'comment': comment.text, - }).then((value) { + await CRUD().post( + link: "${AppLink.seferCairoServer}/rate/addRateToDriver.php", + payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'driver_id': driverId, + 'ride_id': rideId, + 'rating': selectedRateItemId.toString(), + 'comment': comment.text, + }).then((value) { + CRUD().post( + link: "${AppLink.seferAlexandriaServer}/rate/addRateToDriver.php", + payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'driver_id': driverId, + 'ride_id': rideId, + 'rating': selectedRateItemId.toString(), + 'comment': comment.text, + }); + CRUD().post( + link: "${AppLink.seferGizaServer}/rate/addRateToDriver.php", + payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'driver_id': driverId, + 'ride_id': rideId, + 'rating': selectedRateItemId.toString(), + 'comment': comment.text, + }); Get.find().restCounter(); Get.offAll(const MapPagePassenger()); }); diff --git a/lib/models/model/painter_copoun.dart b/lib/models/model/painter_copoun.dart new file mode 100644 index 0000000..57cb560 --- /dev/null +++ b/lib/models/model/painter_copoun.dart @@ -0,0 +1,275 @@ +import 'dart:math' as math; +import 'package:SEFER/constant/box_name.dart'; +import 'package:SEFER/main.dart'; +import 'package:SEFER/splash_screen_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:get/get.dart'; + +class CouponPainter extends CustomPainter { + final Color primaryColor; + final Color secondaryColor; + + CouponPainter({ + required this.primaryColor, + required this.secondaryColor, + }); + + @override + void paint(Canvas canvas, Size size) { + final Paint primaryPaint = Paint() + ..color = primaryColor + ..style = PaintingStyle.fill; + + final Paint secondaryPaint = Paint() + ..color = secondaryColor + ..style = PaintingStyle.fill; + + final Path path = Path(); + + // Draw the main ticket shape + path.moveTo(0, size.height * 0.1); + path.lineTo(size.width * 0.93, size.height * 0.1); + path.arcToPoint( + Offset(size.width, size.height * 0.2), + radius: const Radius.circular(20), + clockwise: false, + ); + path.lineTo(size.width, size.height * 0.8); + path.arcToPoint( + Offset(size.width * 0.93, size.height * 0.9), + radius: const Radius.circular(20), + clockwise: false, + ); + path.lineTo(0, size.height * 0.9); + path.close(); + + canvas.drawPath(path, primaryPaint); + + // Draw decorative circles on the left side + for (int i = 0; i < 5; i++) { + canvas.drawCircle( + Offset(0, size.height * (0.2 + i * 0.15)), + 10, + secondaryPaint, + ); + } + + // Draw a wavy pattern on the right side + final wavePaint = Paint() + ..color = secondaryColor.withOpacity(0.3) + ..style = PaintingStyle.stroke + ..strokeWidth = 2; + + for (int i = 0; i < 20; i++) { + canvas.drawLine( + Offset(size.width * 0.8, i * 10.0), + Offset( + size.width, + i * 10.0 + math.sin(i * 0.5) * 10, + ), + wavePaint, + ); + } + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +} + +class PromoBanner extends StatelessWidget { + final String promoCode; + final String discountPercentage; + final String validity; + + const PromoBanner({ + Key? key, + required this.promoCode, + required this.discountPercentage, + required this.validity, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return CustomPaint( + painter: CouponPainter( + primaryColor: Colors.blue[800]!, + secondaryColor: Colors.white, + ), + child: Container( + width: 320, + height: 240, + padding: const EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const SizedBox( + height: 10, + ), + Text( + 'Enter the promo code and get'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + textAlign: TextAlign.center, + ), + Text( + '${'DISCOUNT'.tr} $discountPercentage ${'for'.tr} $validity' + .toUpperCase(), + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: Colors.white, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), + Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 4, + offset: const Offset(0, 2), + ), + ], + ), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: Text( + promoCode, + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.blue[800], + ), + ), + ), + const SizedBox(height: 10), + ElevatedButton( + onPressed: () { + // Copy promo code to clipboard + Clipboard.setData(ClipboardData(text: promoCode)); + // Show a Snackbar or other feedback to the user + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Promo code copied to clipboard!'.tr)), + ); + box.write(BoxName.isGiftToken, '1'); + Get.back(); + }, + style: ElevatedButton.styleFrom( + foregroundColor: Colors.blue[800], // Customize the color + backgroundColor: Colors.white, // Customize the background color + ), + child: Text('Copy Code'.tr), + ) + ], + ), + ), + ); + } +} + + + + + +// import 'package:SEFER/constant/colors.dart'; +// import 'package:flutter/cupertino.dart'; +// import 'package:flutter/material.dart'; + +// class CouponPainter extends CustomPainter { +// @override +// void paint(Canvas canvas, Size size) { +// final Paint paint = Paint() +// ..color = AppColor.blueColor +// ..style = PaintingStyle.fill; + +// final Path path = Path(); + +// // Draw the ticket shape (like the image) +// path.moveTo(0, 0); +// path.lineTo(size.width * 0.7, 0); // top left to top right edge + +// // Draw curve for the cut on the right side (ticket look) +// path.arcToPoint(Offset(size.width, size.height * 0.15), +// radius: const Radius.circular(15), clockwise: false); +// path.lineTo(size.width, size.height * 0.85); +// path.arcToPoint(Offset(size.width * 0.7, size.height), +// radius: const Radius.circular(15), clockwise: false); +// path.lineTo(0, size.height); + +// canvas.drawPath(path, paint); +// } + +// @override +// bool shouldRepaint(CustomPainter oldDelegate) { +// return false; +// } +// } + +// class PromoBanner extends StatelessWidget { +// final String promoCode; +// final String discountPercentage; +// final String validity; + +// const PromoBanner({ +// required this.promoCode, +// required this.discountPercentage, +// required this.validity, +// }); + +// @override +// Widget build(BuildContext context) { +// return CustomPaint( +// painter: CouponPainter(), +// child: Container( +// width: 300, // Fixed width for the promo banner +// height: 180, // Set the desired height for your banner +// padding: const EdgeInsets.all(16), +// child: Column( +// mainAxisAlignment: MainAxisAlignment.spaceAround, +// children: [ +// Text( +// 'Enter the promo code and get'.toUpperCase(), +// style: const TextStyle( +// fontSize: 16, +// fontWeight: FontWeight.bold, +// color: Colors.white, +// ), +// textAlign: TextAlign.center, +// ), +// Text( +// '$discountPercentage OFF for $validity'.toUpperCase(), +// style: const TextStyle( +// fontSize: 18, +// fontWeight: FontWeight.bold, +// color: Colors.white, +// ), +// textAlign: TextAlign.center, +// ), +// const SizedBox(height: 10), +// Container( +// decoration: BoxDecoration( +// color: Colors.white, +// borderRadius: BorderRadius.circular(10), +// ), +// padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), +// child: Text( +// promoCode, +// style: TextStyle( +// fontSize: 20, +// fontWeight: FontWeight.bold, +// color: Colors.blue[800], +// ), +// ), +// ), +// ], +// ), +// ), +// ); +// } +// } diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index b8d14ce..b4d6405 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -17,6 +17,7 @@ import '../../constant/info.dart'; import '../../controller/auth/apple_signin_controller.dart'; import '../../controller/auth/google_sign.dart'; import '../../controller/auth/login_controller.dart'; +import '../home/HomePage/contact_us.dart'; import '../home/profile/passenger_profile_page.dart'; import '../widgets/mycircular.dart'; @@ -218,7 +219,7 @@ class LoginPage extends StatelessWidget { // ), InkWell( onTap: () async { - await GoogleSignInHelper.signInFromLogin(); + await GoogleSignInHelper().signInFromLogin(); }, child: Container( padding: const EdgeInsets.symmetric( @@ -303,6 +304,14 @@ class LoginPage extends StatelessWidget { SizedBox( height: Get.height * .1, ), + GestureDetector( + onTap: () => Get.to(() => ContactUsPage()), + child: Text( + 'If you need assistance, contact us' + .tr, // Improved wording + style: AppStyle.subtitle, + ), + ), // Text( // 'if you dont have account'.tr, // style: AppStyle.subtitle, diff --git a/lib/views/home/HomePage/contact_us.dart b/lib/views/home/HomePage/contact_us.dart new file mode 100644 index 0000000..58a104c --- /dev/null +++ b/lib/views/home/HomePage/contact_us.dart @@ -0,0 +1,102 @@ +import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/style.dart'; +// ignore: unused_import +import 'package:SEFER/controller/functions/launch.dart'; +import 'package:SEFER/views/widgets/my_scafold.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; + +import '../../../controller/functions/tts.dart'; +import '../../../controller/home/contact_us_controller.dart'; + +class ContactUsPage extends StatelessWidget { + ContactUsPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(ContactUsController()); + return GetBuilder(builder: (controller) { + return MyScafolld( + title: "Contact Us".tr, + body: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + decoration: AppStyle.boxDecoration1, + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Image.asset('assets/images/logo.gif')), + IconButton( + onPressed: () async { + Get.put(TextToSpeechController()).speakText( + 'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + .tr); + }, + icon: const Icon(Icons.headphones), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + 'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ], + ), + ), + const SizedBox( + height: 30, + ), + Container( + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "You can contact us during working hours from 12:00 - 19:00." + .tr, + style: AppStyle.title, + textAlign: TextAlign.center, + ), + ), + ), + InkWell( + onTap: () => controller.showContactDialog(context), + child: const Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Icon( + Icons.phone, + color: AppColor.blueColor, + ), + Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + Icon( + Icons.email, + color: AppColor.redColor, + ), + ], + ), + ), + const SizedBox( + height: 30, + ) + ], + ), + ) + ], + isleading: true); + }); + } +} diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index 29d8a81..b30a0f2 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -51,6 +51,7 @@ class MapPagePassenger extends StatelessWidget { CarDetailsTypeToChoose(), const HeaderDestination(), const BurcMoney(), + const PromoCode(), const ApplyOrderWidget(), const MapMenuWidget(), // hexagonClipper(), const CancelRidePageShow(), diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index b850503..fdbe9c8 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -33,6 +33,7 @@ class ApplyOrderWidget extends StatelessWidget { InkWell( onTap: () { if (box.read(BoxName.carType) == 'Speed' || + box.read(BoxName.carType) == 'Awfar Car' || box.read(BoxName.carType) == 'Delivery') { Get.snackbar( 'This price is'.tr + @@ -117,16 +118,24 @@ class ApplyOrderWidget extends StatelessWidget { : box.read(BoxName.carType) == 'Speed' ? 'assets/images/carspeed.png' : box.read(BoxName.carType) == - 'Delivery' + 'Scooter' ? 'assets/images/moto.png' : box.read(BoxName.carType) == - 'Mashwari' + 'Mishwar Vip' ? 'assets/images/freeRide.png' : box.read(BoxName .carType) == - 'Rayeh Gai' - ? 'assets/images/roundtrip.png' - : 'assets/images/carspeed.png', // Default image if none of the above + 'Awfar Car' + ? 'assets/images/balash.png' + : box.read(BoxName + .carType) == + 'Pink Bike' + ? 'assets/images/pinkBike.png' + : box.read(BoxName + .carType) == + 'Rayeh Gai' + ? 'assets/images/roundtrip.png' + : 'assets/images/carspeed.png', // Default image if none of the above width: 80, ), Column( @@ -159,11 +168,51 @@ class ApplyOrderWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ CircleAvatar( - radius: 30, + radius: 25, backgroundImage: NetworkImage( - // '', - // ), - '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg', + ), + child: Builder( + builder: (context) { + return Image.network( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg', + fit: BoxFit.cover, + loadingBuilder: (BuildContext context, + Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) { + return child; // Image is loaded + } else { + return Center( + child: CircularProgressIndicator( + value: loadingProgress + .expectedTotalBytes != + null + ? loadingProgress + .cumulativeBytesLoaded / + (loadingProgress + .expectedTotalBytes ?? + 1) + : null, + ), + ); + } + }, + errorBuilder: (BuildContext context, + Object error, + StackTrace? stackTrace) { + return const Icon( + Icons + .person, // Icon to show when image fails to load + size: + 25, // Adjust the size as needed + color: AppColor + .blueColor, // Color for the error icon + ); + }, + ); + }, + ), ), Column( children: [ @@ -196,7 +245,8 @@ class ApplyOrderWidget extends StatelessWidget { 'message From passenger', 'Hello, I\'m at the agreed-upon location' .tr, - controller.driverToken, + controller.driverToken + .toString(), 'ding.wav', ); Get.back(); diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart index 118c54f..aa6b2ff 100644 --- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart +++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart @@ -1,11 +1,14 @@ import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; +import 'package:SEFER/controller/home/blinking_promo_controller.dart.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/home/profile/passenger_profile_page.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_dialog.dart'; +import 'package:SEFER/views/widgets/my_textField.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_confetti/flutter_confetti.dart'; import 'package:get/get.dart'; import '../../../constant/info.dart'; @@ -158,35 +161,35 @@ class CarDetailsTypeToChoose extends StatelessWidget { carType.carType == 'Comfort' ? mapPassengerController .totalPassengerComfort - .toStringAsFixed(2) + .toStringAsFixed(1) : carType.carType == 'Speed' ? mapPassengerController .totalPassengerSpeed - .toStringAsFixed(2) + .toStringAsFixed(1) : carType.carType == 'Awfar Car' ? mapPassengerController .totalPassengerBalash - .toStringAsFixed(2) + .toStringAsFixed(1) : carType.carType == 'Scooter' ? mapPassengerController .totalPassengerScooter - .toStringAsFixed(2) + .toStringAsFixed(1) : carType.carType == 'Lady' ? mapPassengerController .totalPassengerLady - .toStringAsFixed(2) + .toStringAsFixed(1) : carType.carType == 'Pink Bike' ? mapPassengerController .totalPassengerScooter .toStringAsFixed( - 2) + 1) : carType.carType == 'Rayeh Gai' ? mapPassengerController .totalPassengerRayehGai .toStringAsFixed( - 2) + 1) : '50', style: AppStyle.title.copyWith(fontSize: 20), @@ -203,7 +206,18 @@ class CarDetailsTypeToChoose extends StatelessWidget { decoration: AppStyle.boxDecoration1, child: Text( - '-12%', + mapPassengerController + .promoTaken + ? mapPassengerController + .totalPassengerComfortDiscount + .toStringAsFixed( + 1) + : (mapPassengerController + .totalPassengerComfortDiscount - + mapPassengerController + .totalPassengerComfort) + .toStringAsFixed( + 1), style: AppStyle.subtitle .copyWith( color: AppColor @@ -214,8 +228,15 @@ class CarDetailsTypeToChoose extends StatelessWidget { ), Text( mapPassengerController - .totalPassengerComfortDiscount - .toStringAsFixed(2), + .promoTaken + ? (mapPassengerController + .totalPassengerComfortDiscount + + mapPassengerController + .totalPassengerComfort) + .toStringAsFixed(1) + : mapPassengerController + .totalPassengerComfortDiscount + .toStringAsFixed(1), style: AppStyle.title.copyWith( color: AppColor.redColor, @@ -235,7 +256,18 @@ class CarDetailsTypeToChoose extends StatelessWidget { decoration: AppStyle .boxDecoration1, child: Text( - '-10%', + mapPassengerController + .promoTaken + ? mapPassengerController + .totalPassengerSpeedDiscount + .toStringAsFixed( + 1) + : (mapPassengerController + .totalPassengerSpeedDiscount - + mapPassengerController + .totalPassengerSpeed) + .toStringAsFixed( + 1), style: AppStyle .subtitle .copyWith( @@ -247,8 +279,17 @@ class CarDetailsTypeToChoose extends StatelessWidget { ), Text( mapPassengerController - .totalPassengerSpeedDiscount - .toStringAsFixed(2), + .promoTaken + ? (mapPassengerController + .totalPassengerSpeedDiscount + + mapPassengerController + .totalPassengerSpeed) + .toStringAsFixed( + 1) + : mapPassengerController + .totalPassengerSpeedDiscount + .toStringAsFixed( + 1), style: AppStyle.title .copyWith( color: @@ -263,14 +304,25 @@ class CarDetailsTypeToChoose extends StatelessWidget { 'Awfar Car' && (mapPassengerController .totalPassengerBalash > - 15) + 20) ? Row( children: [ Container( decoration: AppStyle .boxDecoration1, child: Text( - '-10%', + mapPassengerController + .promoTaken + ? mapPassengerController + .totalPassengerBalashDiscount + .toStringAsFixed( + 1) + : (mapPassengerController + .totalPassengerBalashDiscount - + mapPassengerController + .totalPassengerBalash) + .toStringAsFixed( + 1), style: AppStyle .subtitle .copyWith( @@ -282,9 +334,17 @@ class CarDetailsTypeToChoose extends StatelessWidget { ), Text( mapPassengerController - .totalPassengerBalashDiscount - .toStringAsFixed( - 2), + .promoTaken + ? (mapPassengerController + .totalPassengerBalashDiscount + + mapPassengerController + .totalPassengerBalash) + .toStringAsFixed( + 1) + : mapPassengerController + .totalPassengerBalashDiscount + .toStringAsFixed( + 1), style: AppStyle.title .copyWith( color: AppColor @@ -306,7 +366,15 @@ class CarDetailsTypeToChoose extends StatelessWidget { decoration: AppStyle .boxDecoration1, child: Text( - '-10%', + mapPassengerController + .promoTaken + ? mapPassengerController + .totalPassengerLadyDiscount + .toStringAsFixed( + 1) + : (mapPassengerController.totalPassengerLadyDiscount - + mapPassengerController.totalPassengerLady) + .toStringAsFixed(0), style: AppStyle .subtitle .copyWith( @@ -318,9 +386,17 @@ class CarDetailsTypeToChoose extends StatelessWidget { ), Text( mapPassengerController - .totalPassengerLadyDiscount - .toStringAsFixed( - 2), + .promoTaken + ? (mapPassengerController + .totalPassengerLadyDiscount + + mapPassengerController + .totalPassengerLady) + .toStringAsFixed( + 0) + : mapPassengerController + .totalPassengerLadyDiscount + .toStringAsFixed( + 1), style: AppStyle .title .copyWith( @@ -624,11 +700,88 @@ class CarDetailsTypeToChoose extends StatelessWidget { title: 'Next'.tr, onPressed: () { Get.back(); - mapPassengerController - .isBottomSheetShown = false; - mapPassengerController.update(); - mapPassengerController - .changeCashConfirmPageShown(); + + Get.defaultDialog( + barrierDismissible: false, + title: + "Select betweeen types".tr, + content: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text('Awfar Car' + .tr), + Text(mapPassengerController + .totalPassengerRayehGaiBalash + .toStringAsFixed( + 0)), + ], + ), + )), + Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text('Speed'.tr), + Text(mapPassengerController + .totalPassengerRayehGai + .toStringAsFixed( + 0)), + ], + ), + )), + Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text( + 'Comfort'.tr), + Text(mapPassengerController + .totalPassengerRayehGaiComfort + .toStringAsFixed( + 0)), + ], + ), + )) + ], + ), + cancel: MyElevatedButton( + kolor: AppColor.redColor, + title: 'Cancel'.tr, + onPressed: () => + Get.back()), + confirm: MyElevatedButton( + kolor: AppColor.greenColor, + title: 'Next'.tr, + onPressed: () { + mapPassengerController + .isBottomSheetShown = + false; + mapPassengerController + .update(); + mapPassengerController + .changeCashConfirmPageShown(); + })); }), cancel: MyElevatedButton( title: 'Cancel'.tr, @@ -656,6 +809,87 @@ class CarDetailsTypeToChoose extends StatelessWidget { } } +class PromoCode extends StatelessWidget { + const PromoCode({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(BlinkingController()); + return GetBuilder( + builder: (mapPassengerController) { + return mapPassengerController.data.isNotEmpty && + mapPassengerController.isBottomSheetShown && + mapPassengerController.rideConfirm == false && + mapPassengerController.promoTaken == false + ? GetBuilder(builder: (blinkingController) { + blinkingController.startBlinking(); + return Positioned( + right: 5, + bottom: Get.height * 0.5, + child: Obx(() { + return AnimatedContainer( + duration: const Duration(milliseconds: 500), + width: 70, // Circle size + height: 70, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: blinkingController.isLightOn.value + ? Colors.yellow + : Colors.grey, // Light on/off effect + border: Border.all( + color: blinkingController + .borderColor.value, // Animated border color + width: 3, + ), + ), + child: IconButton( + onPressed: () { + Get.defaultDialog( + title: 'Insert Your Promo Code'.tr, + content: Form( + key: mapPassengerController.promoFormKey, + child: MyTextForm( + controller: mapPassengerController.promo, + label: 'Insert Your Promo Code'.tr, + hint: 'Enter promo code here'.tr, + type: TextInputType.name, + ), + ), + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + if (mapPassengerController + .promoFormKey.currentState! + .validate()) { + mapPassengerController + .applyPromoCodeToPassenger(context); + Get.back(); + } + })); + }, + icon: const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.local_offer, size: 24), // Promo icon + SizedBox(height: 4), + Text( + "Promo", + style: TextStyle( + fontSize: 12, fontWeight: FontWeight.bold), + ), + ], + ), + ), + ); + }), + ); + }) + : const SizedBox(); + }, + ); + } +} + class BurcMoney extends StatelessWidget { const BurcMoney({super.key}); diff --git a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart index 0db1089..f306cb1 100644 --- a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart +++ b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart @@ -168,7 +168,8 @@ class CashConfirmPageShown extends StatelessWidget { paymentController.update(); controller.changeCashConfirmPageShown(); controller.isSearchingWindow = true; - controller.confirmRideForFirstDriver(); + controller + .confirmRideForAllDriverAvailable(); controller.update(); }, ), @@ -179,7 +180,7 @@ class CashConfirmPageShown extends StatelessWidget { onPressed: () { controller.changeCashConfirmPageShown(); controller.isSearchingWindow = true; - controller.confirmRideForFirstDriver(); + controller.confirmRideForAllDriverAvailable(); controller.update(); }, ), // Add a fallback widget if none of the conditions are met diff --git a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart index 3b439b9..bd2417b 100644 --- a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart +++ b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart @@ -318,7 +318,7 @@ class GoogleMapPassengerWidget extends StatelessWidget { // icon: controller.endIcon, // ), // }, - + polygons: controller.polygons, polylines: { Polyline( zIndex: 2, 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 65478ee..4ec375f 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 @@ -9,6 +9,7 @@ import '../../../controller/firebase/firbase_messge.dart'; import '../../../controller/functions/audio_record1.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; +import '../../../print.dart'; GetBuilder leftMainMenuIcons() { final textToSpeechController = Get.put(TextToSpeechController()); @@ -121,50 +122,58 @@ GetBuilder leftMainMenuIcons() { // borderRadius: BorderRadius.circular(15)), // child: IconButton( // onPressed: () async { - // // 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'); + // 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() + // .sendNotificationToAnyWithoutData( + // 'Cancel'.tr, + // "How much longer will you be?".tr, + // 'fKBBB4_1R0q18-byySHUeG:APA91bHk2RmjjMt6eKr7KQnqh4CK02yW3H5E8g_beVcQFgiCG50j9KCtSU1O8PtvS_gA5xuJLhaorDV9AeslcyLFJFf302tICKMiKgsDP5pWkF5WXNw0-4NsoD-BnJxf0-Do9Vs1Zbpq', + // // d, + // 'ding.wav', + // ); + + // Get.to(SmsSignupEgypt()); + // Log.print( + // 'getUpdatedRideForDriverApply: ${Get.find().driverToken}'); + // Get.find() + // .firstTimeRunToGetCoupon('SEFER25', '1 WEEEK', '25%'); // }, // icon: const Icon( // Icons.chat, diff --git a/lib/views/home/map_widget.dart/map_menu_widget.dart b/lib/views/home/map_widget.dart/map_menu_widget.dart index 01971a6..8082df7 100644 --- a/lib/views/home/map_widget.dart/map_menu_widget.dart +++ b/lib/views/home/map_widget.dart/map_menu_widget.dart @@ -1,3 +1,4 @@ +import 'package:SEFER/views/home/HomePage/contact_us.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; @@ -110,10 +111,10 @@ class MapMenuWidget extends StatelessWidget { ), IconMainPageMap( onTap: () { - Get.to(() => const TaarifPage()); + Get.to(() => ContactUsPage()); }, - title: 'Tariff'.tr, - icon: Icons.money, + title: "Contact Us".tr, + icon: Icons.contact_page, ), ], ), diff --git a/lib/views/home/map_widget.dart/select_driver_mishwari.dart b/lib/views/home/map_widget.dart/select_driver_mishwari.dart index 04dbccb..5e8d466 100644 --- a/lib/views/home/map_widget.dart/select_driver_mishwari.dart +++ b/lib/views/home/map_widget.dart/select_driver_mishwari.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../constant/api_key.dart'; +import '../../../constant/links.dart'; class CupertinoDriverListWidget extends StatelessWidget { MapPassengerController mapPassengerController = @@ -30,9 +31,39 @@ class CupertinoDriverListWidget extends StatelessWidget { leading: CircleAvatar( radius: 25, backgroundImage: NetworkImage( - '${AK.serverPHP}/portrate_captain_image/${driver['id']}.jpg', + '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', + ), + child: Builder( + builder: (context) { + return Image.network( + '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', + fit: BoxFit.cover, + loadingBuilder: (BuildContext context, Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) { + return child; // Image is loaded + } else { + return Center( + child: CircularProgressIndicator( + value: loadingProgress.expectedTotalBytes != null + ? loadingProgress.cumulativeBytesLoaded / + (loadingProgress.expectedTotalBytes ?? 1) + : null, + ), + ); + } + }, + errorBuilder: (BuildContext context, Object error, + StackTrace? stackTrace) { + return const Icon( + Icons.person, // Icon to show when image fails to load + size: 25, // Adjust the size as needed + color: AppColor.blueColor, // Color for the error icon + ); + }, + ); + }, ), - backgroundColor: CupertinoColors.systemGrey5, ), title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -65,12 +96,12 @@ class CupertinoDriverListWidget extends StatelessWidget { Text('${'Plate'.tr}: ${driver['car_plate']}'), ], ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('${'Education'.tr}: ${driver['education']}'), - ], - ), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Text('${'Education'.tr}: ${driver['education']}'), + // ], + // ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index de06b3b..1bbe5f9 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -1,3 +1,5 @@ +import 'package:SEFER/views/widgets/my_dialog.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -10,6 +12,8 @@ import '../../../controller/functions/toast.dart'; import '../../../controller/home/payment/credit_card_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; +import '../../../models/model/painter_copoun.dart'; +import '../../../print.dart'; import '../../widgets/elevated_btn.dart'; import '../../widgets/my_scafold.dart'; import '../../widgets/my_textField.dart'; @@ -29,25 +33,49 @@ class PassengerWallet extends StatelessWidget { GetBuilder( builder: (controller) => Column( mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const CardSeferWallet(), const SizedBox( height: 20, ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 30), - child: Row( - children: [ - MyElevatedButton( - kolor: AppColor.blueColor, - title: 'Payment History'.tr, - onPressed: () { - Get.to(() => const PaymentHistoryPassengerPage(), - transition: Transition.size); - }, - ), - ], + padding: + const EdgeInsets.symmetric(horizontal: 80, vertical: 10), + child: MyElevatedButton( + kolor: AppColor.blueColor, + title: 'Payment History'.tr, + onPressed: () { + Get.to(() => const PaymentHistoryPassengerPage(), + transition: Transition.size); + }, + ), + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 80, vertical: 10), + child: MyElevatedButton( + kolor: AppColor.yellowColor, + title: 'Bounus gift'.tr, + onPressed: () { + Get.dialog( + AlertDialog( + contentPadding: EdgeInsets + .zero, // Removes the padding around the content + content: SizedBox( + width: 300, // Match the width of PromoBanner + // height: 250, // Match the height of PromoBanner + child: PromoBanner( + promoCode: box.read(BoxName.promo), + discountPercentage: box.read(BoxName.discount), + validity: box.read(BoxName.validity), + ), + ), + ), + ); + Log.print( + 'box.read(BoxName.isGiftToken).toString(): ${box.read(BoxName.isGiftToken).toString()}'); + }, ), ) ], @@ -65,6 +93,7 @@ class PassengerWallet extends StatelessWidget { left: Get.width * .2, right: Get.width * .2, child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ MyElevatedButton( title: 'Show Promos to Charge'.tr, @@ -79,36 +108,58 @@ class PassengerWallet extends StatelessWidget { kolor: AppColor.deepPurpleAccent, title: "Add wallet phone you use".tr, onPressed: () { - Get.defaultDialog( - barrierDismissible: false, - title: 'Insert Wallet phone number'.tr, - content: Form( - key: controller.formKey, - child: MyTextForm( + Get.dialog( + CupertinoAlertDialog( + title: Text('Insert Wallet phone number'.tr), + content: Column( + children: [ + const SizedBox(height: 10), + Form( + key: controller.formKey, + child: CupertinoTextField( 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); - }, + placeholder: + 'Insert Wallet phone number'.tr, + keyboardType: TextInputType.phone, + padding: const EdgeInsets.symmetric( + vertical: 12, horizontal: 10), + ), + ), + ], ), - cancel: MyElevatedButton( - title: 'Cancel'.tr, - kolor: AppColor.redColor, + actions: [ + CupertinoDialogAction( + child: Text('Cancel'.tr, + style: const TextStyle( + color: CupertinoColors + .destructiveRed)), onPressed: () { - Get.back(); - })); + Get.back(); // Dismiss the dialog + }, + ), + CupertinoDialogAction( + child: Text('OK'.tr, + style: const TextStyle( + color: + CupertinoColors.activeGreen)), + onPressed: () async { + Get.back(); // Close the dialog + box.write( + BoxName.phoneWallet, + controller + .walletphoneController.text); + Toast.show( + context, + 'Phone Wallet Saved Successfully'.tr, + AppColor.greenColor); + }, + ), + ], + ), + barrierDismissible: + false, // Set to prevent dismissing by tapping outside + ); }) ], ), @@ -120,70 +171,71 @@ class PassengerWallet extends StatelessWidget { } class CardSeferWallet extends StatelessWidget { - const CardSeferWallet({ - super.key, - }); + const CardSeferWallet({super.key}); @override Widget build(BuildContext context) { - return GetBuilder(builder: (paymentController) { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: Get.width * .85, - height: Get.height * .3, - decoration: BoxDecoration( - color: AppColor.twitterColor.withOpacity(.8), - borderRadius: const BorderRadius.all(Radius.circular(12)), - gradient: const LinearGradient(colors: [ - AppColor.redColor, - AppColor.yellowColor, - AppColor.yellowColor, - ]), - ), + return GetBuilder( + builder: (paymentController) { + return Container( + width: Get.width * 0.9, + height: Get.height * 0.25, + margin: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + color: CupertinoColors.extraLightBackgroundGray, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + offset: const Offset(0, 10), + blurRadius: 20, + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(16.0), child: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - Text( - '${AppInformation.appName} Wallet', - style: AppStyle.headTitle - .copyWith(color: AppColor.writeColor), - ) - ], + // Wallet Title + Text( + '${AppInformation.appName} Wallet', + style: AppStyle.headTitle.copyWith( + color: CupertinoColors.label, + fontSize: 20, + fontWeight: FontWeight.bold, ), ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - '${box.read(BoxName.passengerWalletTotal)} \$' ?? - '0.0 \$', - style: AppStyle.headTitle2, - ) - ], - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - box.read(BoxName.name), - style: AppStyle.title, - ) - ], + + // Wallet Balance + Center( + child: Text( + '${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${'LE'.tr}', + style: AppStyle.headTitle2.copyWith( + color: CupertinoColors.label, + fontSize: 36, + fontWeight: FontWeight.w600, + ), ), - ) + ), + + // User Name (Bottom Right) + Align( + alignment: Alignment.bottomRight, + child: Text( + box.read(BoxName.name), + style: AppStyle.title.copyWith( + color: CupertinoColors.secondaryLabel, + fontSize: 16, + ), + ), + ), ], ), ), - ], - ); - }); + ); + }, + ); } } diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index 531ebae..2cd8009 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -1,6 +1,6 @@ -import 'package:SEFER/constant/box_name.dart'; -import 'package:flutter/material.dart'; +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/constant/style.dart'; import 'package:SEFER/controller/functions/toast.dart'; @@ -8,7 +8,6 @@ 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({ @@ -19,294 +18,198 @@ class PassengerWalletDialog extends StatelessWidget { 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 - ? Container( - decoration: const BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(12)), - color: AppColor.secondaryColor, - boxShadow: [ - BoxShadow( - color: AppColor.accentColor, - offset: Offset(-1, -1), - blurRadius: 0, - spreadRadius: 0, - blurStyle: BlurStyle.normal), - BoxShadow( - color: AppColor.accentColor, - offset: Offset(3, 3), - blurRadius: 1, - spreadRadius: 0, - blurStyle: BlurStyle.normal) - ]), - child: Padding( - padding: const EdgeInsets.all(6), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - GestureDetector( - onTap: () { - controller.updateSelectedAmount(10); - }, - child: Row( - children: [ - Radio( - value: box.read(BoxName.countryCode) == 'Egypt' - ? 100 - : 10, - groupValue: controller.selectedAmount, - onChanged: (value) { - controller.updateSelectedAmount(value as int); - }, - ), - Text( - box.read(BoxName.countryCode) == 'Egypt' - ? '100 ${'LE'.tr}'.tr - : '10 ${'JOD'.tr}'.tr, - style: AppStyle.title, - ), - ], + 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.payWithPayMobWallet( + 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); + } + }, + ) + : 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, + ), ), - ), - GestureDetector( - onTap: () { - controller.updateSelectedAmount(20); - }, - child: Row( - children: [ - Radio( - value: - box.read(BoxName.countryCode) == 'Egypt' - ? 210 - : 20, - groupValue: controller.selectedAmount, - onChanged: (value) { - controller - .updateSelectedAmount(value as int); - }, - ), - Text( - box.read(BoxName.countryCode) == 'Egypt' - ? '${'200 ${'LE'.tr} '.tr} = 205 ${'LE'.tr}' - : '20 ${'JOD'.tr}'.tr, - style: AppStyle.title, - ), - ], - )), - GestureDetector( - onTap: () { - controller.updateSelectedAmount(40); - }, - child: Row( - children: [ - Radio( - value: - box.read(BoxName.countryCode) == 'Egypt' - ? 415 - : 40, - groupValue: controller.selectedAmount, - onChanged: (value) { - controller - .updateSelectedAmount(value as int); - }, - ), - Text( - box.read(BoxName.countryCode) == 'Egypt' - ? '${'400 ${'LE'.tr} '.tr} = 415 ${'LE'.tr}' - : '40 ${'JOD'.tr}'.tr, - style: AppStyle.title, - ), - ], - )), - GestureDetector( - onTap: () { - controller.updateSelectedAmount(100); - }, - child: Row( - children: [ - Radio( - value: - box.read(BoxName.countryCode) == 'Egypt' - ? 1100 - : 50, - groupValue: controller.selectedAmount, - onChanged: (value) { - controller - .updateSelectedAmount(value as int); - }, - ), - Text( - box.read(BoxName.countryCode) == 'Egypt' - ? '${'1000 ${'LE'.tr} '.tr} = 1100 ${'LE'.tr}' - : '50 ${'JOD'.tr}'.tr, - style: AppStyle.title, - ), - ], - )), - const Spacer(), - box.read(BoxName.countryCode) == 'Egypt' - ? const SizedBox() - : MyElevatedButton( - kolor: AppColor.blueColor, - title: '${'Pay with Your'.tr} PayPal', - onPressed: () { - if (controller.selectedAmount != 0) { - controller.makePaymentPayPal(context); - } else { - Toast.show( - context, - 'You will choose one of above !'.tr, - AppColor.redColor); - } - }, - ), - box.read(BoxName.countryCode) == 'Egypt' - ? 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.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); - } - }) - : MyElevatedButton( - kolor: AppColor.deepPurpleAccent, - title: "Add wallet phone you use".tr, - onPressed: () { - 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, - kolor: AppColor.redColor, + ], + ), + actions: [ + CupertinoDialogAction( + child: Text('Cancel'.tr, + style: const TextStyle( + color: CupertinoColors.destructiveRed)), onPressed: () { - controller.changePromoSheetDialogue(); + 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); }, ), ], ), - )) - : const SizedBox()), - ); - } + barrierDismissible: false, + ); + }, + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text('Cancel'.tr), + onPressed: () { + controller.changePromoSheetDialogue(); + }, + ), + ), + ); } diff --git a/lib/views/home/my_wallet/payment_history_passenger_page.dart b/lib/views/home/my_wallet/payment_history_passenger_page.dart index 5a33d50..f3ab954 100644 --- a/lib/views/home/my_wallet/payment_history_passenger_page.dart +++ b/lib/views/home/my_wallet/payment_history_passenger_page.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/colors.dart'; @@ -17,7 +18,7 @@ class PaymentHistoryPassengerPage extends StatelessWidget { body: [ GetBuilder( builder: (controller) => controller.isLoading - ? const MyCircularProgressIndicator() + ? const MyCircularProgressIndicator() // iOS-style loading indicator : controller.archive.isEmpty ? Center( child: Text( @@ -25,37 +26,33 @@ class PaymentHistoryPassengerPage extends StatelessWidget { style: AppStyle.title, ), ) - : ListView.builder( - itemCount: controller.archive.length, - itemBuilder: (BuildContext context, int index) { - var list = controller.archive[index]; - return Padding( - padding: const EdgeInsets.all(4), - child: Container( - decoration: BoxDecoration( - color: double.parse(list['balance']) < 0 - ? AppColor.redColor.withOpacity(.4) - : AppColor.greenColor.withOpacity(.4)), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - list['balance'], - style: AppStyle.title, - ), - Text( - list['created_at'], - style: AppStyle.title, - ), - ], + : CupertinoListSection.insetGrouped( + children: List.generate( + controller.archive.length, + (index) { + var list = controller.archive[index]; + return CupertinoListTile( + backgroundColor: double.parse(list['balance']) < 0 + ? AppColor.redColor.withOpacity(.2) + : AppColor.greenColor.withOpacity(.2), + title: Text( + list['balance'], + style: AppStyle.title.copyWith( + color: CupertinoColors.black, ), ), - ), - ); - }, + additionalInfo: Text( + list['created_at'], + style: AppStyle.title.copyWith( + fontSize: 12, + color: CupertinoColors.systemGrey, + ), + ), + padding: const EdgeInsets.symmetric( + vertical: 8, horizontal: 16), + ); + }, + ), ), ) ], diff --git a/lib/views/home/profile/promos_passenger_page.dart b/lib/views/home/profile/promos_passenger_page.dart index e22b8ce..1d995d4 100644 --- a/lib/views/home/profile/promos_passenger_page.dart +++ b/lib/views/home/profile/promos_passenger_page.dart @@ -1,5 +1,7 @@ import 'package:animated_text_kit/animated_text_kit.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:SEFER/controller/home/profile/promos_controller.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; @@ -106,13 +108,26 @@ class PromosPassengerPage extends StatelessWidget { } else { // Promo items final rides = orderHistoryController.promoList[index - 1]; + return Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.all(12.0), child: Container( - decoration: AppStyle.boxDecoration, + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: + CupertinoColors.systemGrey.withOpacity(0.5), + blurRadius: 8, + offset: Offset(0, 4), + ), + ], + ), child: Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.all(16.0), child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: @@ -122,50 +137,88 @@ class PromosPassengerPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ - AnimatedTextKit( - animatedTexts: [ - ScaleAnimatedText( - rides['promo_code'], - textStyle: AppStyle.title), - WavyAnimatedText( - rides['promo_code'], - textStyle: AppStyle.title), - FlickerAnimatedText( - rides['promo_code'], - textStyle: AppStyle.title), - WavyAnimatedText( - rides['promo_code'], - textStyle: AppStyle.title), - ], - isRepeatingAnimation: true, + GestureDetector( onTap: () {}, + child: AnimatedTextKit( + animatedTexts: [ + ScaleAnimatedText( + rides['promo_code'], + textStyle: + AppStyle.title.copyWith( + fontSize: + 32, // Increased font size for emphasis + color: CupertinoColors + .activeBlue, + fontWeight: FontWeight.bold, + ), + ), + WavyAnimatedText( + rides['promo_code'], + textStyle: + AppStyle.title.copyWith( + fontSize: + 32, // Increased font size for emphasis + color: CupertinoColors + .activeBlue, + fontWeight: FontWeight.bold, + ), + ), + ], + isRepeatingAnimation: true, + ), ), + const SizedBox(height: 8), + // Description Text Text( rides['description'], - style: AppStyle.title, + style: AppStyle.title.copyWith( + fontSize: 22, + color: CupertinoColors.systemGrey, + ), ), ], ), Column( children: [ + // Only displaying end date Text( - rides['validity_start_date'], - style: AppStyle.title, - ), - Text( - rides['validity_end_date'], - style: AppStyle.title, + '${'Valid Until:'.tr} ${rides['validity_end_date']}', + style: AppStyle.subtitle.copyWith( + fontWeight: FontWeight.bold, + fontSize: 20, + color: CupertinoColors.systemGrey, + ), ), ], ), ], ), - Text( - 'Copy this Promo to use it in your Ride!'.tr, - textAlign: TextAlign.center, - style: AppStyle.headTitle2 - .copyWith(color: AppColor.accentColor), - ) + // const SizedBox(height: 16), + // Copy Promo Text + Center( + child: GestureDetector( + onTap: () { + Clipboard.setData(ClipboardData( + text: rides['promo_code'])); + Get.snackbar( + 'Promo Copied!'.tr, + 'You have copied the promo code.'.tr, + snackPosition: SnackPosition.BOTTOM, + backgroundColor: + CupertinoColors.systemGrey, + colorText: CupertinoColors.white, + ); + }, + child: Text( + 'Copy Code'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2.copyWith( + color: CupertinoColors.systemBlue, + fontWeight: FontWeight.bold, + ), + ), + ), + ), ], ), ), diff --git a/lib/views/notification/notification_page.dart b/lib/views/notification/notification_page.dart index 873479a..5752137 100644 --- a/lib/views/notification/notification_page.dart +++ b/lib/views/notification/notification_page.dart @@ -1,10 +1,10 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import '../../controller/notification/passenger_notification_controller.dart'; -import '../widgets/elevated_btn.dart'; import '../widgets/my_scafold.dart'; import '../widgets/mycircular.dart'; @@ -19,64 +19,82 @@ class NotificationPage extends StatelessWidget { title: 'Notifications', body: [ GetBuilder( - builder: (notificationCaptainController) => - notificationCaptainController.isloading - ? const MyCircularProgressIndicator() - : SafeArea( - child: ListView.builder( - itemCount: notificationCaptainController - .notificationData['message'].length, - itemBuilder: (BuildContext context, int index) { - if (notificationCaptainController - .notificationData['message'] == - "No notification data found") { - Get.defaultDialog(); - } - var res = notificationCaptainController - .notificationData['message'][index]; - return Card( - elevation: 4, - color: res['isShown'] == 'true' - ? AppColor.secondaryColor.withOpacity(.5) - : AppColor.secondaryColor.withOpacity(.9), - child: ListTile( - onTap: () { - Get.defaultDialog( - title: res['title'], - titleStyle: AppStyle.title, - content: SizedBox( - width: Get.width * .8, - // height: Get.height * .4, - child: Text( - res['body'], - style: AppStyle.title, - ), - ), - confirm: MyElevatedButton( - title: 'Ok', - onPressed: () { - notificationCaptainController - .updateNotification( - res['id'].toString()); - })); - }, - leading: res['isShown'] == 'true' - ? const Icon( - Icons.notifications_off_outlined) - : const Icon(Icons.notifications_active), - title: Text( - res['title'], - style: AppStyle.title, - ), - subtitle: Text( - res['body'], - style: AppStyle.subtitle, - ), - ), + builder: (notificationCaptainController) => notificationCaptainController + .isloading + ? const MyCircularProgressIndicator() // iOS-style loading indicator + : SafeArea( + child: ListView.builder( + itemCount: notificationCaptainController + .notificationData['message'].length, + itemBuilder: (BuildContext context, int index) { + if (notificationCaptainController + .notificationData['message'] == + "No notification data found") { + Get.defaultDialog( + title: 'No Notifications'.tr, + content: Text( + 'No notification data found.'.tr, + ), + ); + } + var res = notificationCaptainController + .notificationData['message'][index]; + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, vertical: 4), + child: CupertinoListTile( + backgroundColor: res['isShown'] == 'true' + ? AppColor.secondaryColor.withOpacity(.2) + : AppColor.secondaryColor.withOpacity(.8), + leading: res['isShown'] == 'true' + ? const Icon(CupertinoIcons.bell_slash_fill) + : const Icon(CupertinoIcons.bell_fill), + title: Text( + res['title'], + style: AppStyle.title.copyWith( + color: CupertinoColors.black, + ), + ), + subtitle: Text( + res['body'], + style: AppStyle.subtitle.copyWith( + color: CupertinoColors.systemGrey, + ), + ), + onTap: () { + showCupertinoDialog( + context: context, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: Text( + res['title'], + style: AppStyle.title, + ), + content: Text( + res['body'], + style: AppStyle.subtitle, + ), + actions: [ + CupertinoDialogAction( + child: const Text('Ok'), + onPressed: () { + notificationCaptainController + .updateNotification( + res['id'].toString()); + Get.back(); + }, + ), + ], + ); + }, ); }, ), - )) + ); + }, + ), + ), + ) ], ); } diff --git a/lib/views/widgets/my_dialog.dart b/lib/views/widgets/my_dialog.dart index 0608a88..335d8e4 100644 --- a/lib/views/widgets/my_dialog.dart +++ b/lib/views/widgets/my_dialog.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -11,34 +12,98 @@ import 'elevated_btn.dart'; class MyDialog extends GetxController { void getDialog(String title, String? midTitle, VoidCallback onPressed) { final textToSpeechController = Get.put(TextToSpeechController()); - Get.defaultDialog( - title: title, - titleStyle: AppStyle.title, - barrierDismissible: false, - middleTextStyle: AppStyle.title, - content: Column( - children: [ - IconButton( + + Get.dialog( + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: CupertinoAlertDialog( + title: Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + content: Column( + children: [ + CupertinoButton( onPressed: () async { await textToSpeechController.speakText(title ?? midTitle!); }, - icon: const Icon(Icons.headphones)), - Text( - midTitle!, - style: AppStyle.title, - ) + child: const Icon(CupertinoIcons.headphones, + color: AppColor.primaryColor), + ), + Text( + midTitle!, + style: AppStyle.title.copyWith(fontSize: 16), + ), + ], + ), + actions: [ + CupertinoDialogAction( + child: const Text('Cancel', + style: TextStyle(color: AppColor.redColor)), + onPressed: () { + Get.back(); + }, + ), + CupertinoDialogAction( + onPressed: onPressed, + child: Text('OK'.tr, + style: const TextStyle(color: AppColor.greenColor)), + ), ], ), - confirm: MyElevatedButton( - title: 'Ok'.tr, - onPressed: onPressed, - kolor: AppColor.greenColor, - ), - cancel: MyElevatedButton( - title: 'Cancel', - kolor: AppColor.redColor, - onPressed: () { - Get.back(); - })); + ), + barrierDismissible: false, + ); + } +} + +class MyDialogContent extends GetxController { + void getDialog(String title, Widget? content, VoidCallback onPressed) { + final textToSpeechController = Get.put(TextToSpeechController()); + + Get.dialog( + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: CupertinoAlertDialog( + title: Text( + title, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + content: Column( + children: [ + CupertinoButton( + onPressed: () async { + await textToSpeechController.speakText(title); + }, + child: const Icon(CupertinoIcons.headphones, + color: AppColor.primaryColor), + ), + content! + ], + ), + actions: [ + CupertinoDialogAction( + child: const Text('Cancel', + style: TextStyle(color: AppColor.redColor)), + onPressed: () { + Get.back(); + }, + ), + CupertinoDialogAction( + onPressed: onPressed, + child: Text('OK'.tr, + style: const TextStyle(color: AppColor.greenColor)), + ), + ], + ), + ), + barrierDismissible: false, + ); } } diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift index d53ef64..8e02df2 100644 --- a/macos/Runner/AppDelegate.swift +++ b/macos/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import Cocoa import FlutterMacOS -@NSApplicationMain +@main class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true diff --git a/pubspec.lock b/pubspec.lock index 7633e1c..b7ac582 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -491,6 +491,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.1" + flutter_confetti: + dependency: "direct main" + description: + name: flutter_confetti + sha256: "7a0f586a0295b1dad6be364a82c59b8579e1cc8af99b0cba0461b6fabd60ff78" + url: "https://pub.dev" + source: hosted + version: "0.3.0" flutter_font_icons: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 392b1fb..cb6fd4d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,6 +61,7 @@ dependencies: package_info_plus: ^8.0.0 uni_links: ^0.5.1 googleapis_auth: ^1.6.0 + flutter_confetti: ^0.3.0 # intl_phone_field: ^3.1.0 dev_dependencies: From 64b2bba1c5c3c20201958848181791e7b7f6402a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 13 Oct 2024 21:15:47 +0300 Subject: [PATCH 08/16] 10/13/1 --- lib/models/model/painter_copoun.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/model/painter_copoun.dart b/lib/models/model/painter_copoun.dart index 57cb560..3aaab2d 100644 --- a/lib/models/model/painter_copoun.dart +++ b/lib/models/model/painter_copoun.dart @@ -19,7 +19,7 @@ class CouponPainter extends CustomPainter { void paint(Canvas canvas, Size size) { final Paint primaryPaint = Paint() ..color = primaryColor - ..style = PaintingStyle.fill; + ..style = PaintingStyle.fill; // final Paint secondaryPaint = Paint() ..color = secondaryColor From fc81405b7a32703e01833e624a996eb2fb905cac Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 14 Oct 2024 14:42:47 +0300 Subject: [PATCH 09/16] 10/14/1 --- lib/constant/links.dart | 30 ++-- lib/controller/auth/login_controller.dart | 7 + .../home/map_passenger_controller.dart | 168 ++++++++++++------ lib/models/model/painter_copoun.dart | 1 + .../map_widget.dart/left_main_menu_icons.dart | 6 - 5 files changed, 129 insertions(+), 83 deletions(-) diff --git a/lib/constant/links.dart b/lib/constant/links.dart index f8a36b7..78c4f36 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -51,6 +51,7 @@ class AppLink { //=======================promo===================ride.mobile-app.store/ride/promo/get.php static String promo = '$server/ride/promo'; static String getPassengersPromo = "$promo/get.php"; + static String getPromoFirst = "$promo/getPromoFirst.php"; static String getPromoBytody = "$promo/getPromoBytody.php"; static String addPassengersPromo = "$promo/add.php"; static String deletePassengersPromo = "$promo/delete.php"; @@ -58,28 +59,21 @@ class AppLink { ////=======================cancelRide=================== static String ride = '$server/ride'; - static String addCancelRideFromPassenger = - "${box.read(BoxName.serverChosen)}/ride/cancelRide/add.php"; - static String cancelRide = - "${box.read(BoxName.serverChosen)}/ride/cancelRide/get.php"; + static String addCancelRideFromPassenger = "$server/ride/cancelRide/add.php"; + static String cancelRide = "$server/ride/cancelRide/get.php"; //-----------------ridessss------------------ static String addRides = "$ride/rides/add.php"; - static String getRides = - "${box.read(BoxName.serverChosen)}/ride/rides/get.php"; - static String getRideOrderID = - "${box.read(BoxName.serverChosen)}/ride/rides/getRideOrderID.php"; - static String getRideStatus = - "${box.read(BoxName.serverChosen)}/ride/rides/getRideStatus.php"; + static String getRides = "$server/ride/rides/get.php"; + static String getRideOrderID = "$server/ride/rides/getRideOrderID.php"; + static String getRideStatus = "$server/ride/rides/getRideStatus.php"; static String getRideStatusBegin = - "${box.read(BoxName.serverChosen)}/ride/rides/getRideStatusBegin.php"; + "$server/ride/rides/getRideStatusBegin.php"; static String getRideStatusFromStartApp = "$ride/rides/getRideStatusFromStartApp.php"; - static String updateRides = - "${box.read(BoxName.serverChosen)}/ride/rides/update.php"; + static String updateRides = "$server/ride/rides/update.php"; static String updateStausFromSpeed = - "${box.read(BoxName.serverChosen)}/ride/rides/updateStausFromSpeed.php"; - static String deleteRides = - "${box.read(BoxName.serverChosen)}/ride/rides/delete.php"; + "$server/ride/rides/updateStausFromSpeed.php"; + static String deleteRides = "$server/ride/rides/delete.php"; //-----------------DriverPayment------------------ static String adddriverScam = "$ride/driver_scam/add.php"; @@ -112,9 +106,9 @@ class AppLink { //-----------------Driver NotificationCaptain------------------ static String addNotificationCaptain = "$ride/notificationCaptain/add.php"; static String addWaitingRide = - "$endPoint/ride/notificationCaptain/addWaitingRide.php"; + "$server/ride/notificationCaptain/addWaitingRide.php"; static String updateWaitingTrip = - "$endPoint/ride/notificationCaptain/updateWaitingTrip.php"; + "$server/ride/notificationCaptain/updateWaitingTrip.php"; static String getRideWaiting = "$endPoint/ride/notificationCaptain/getRideWaiting.php"; static String getNotificationCaptain = "$ride/notificationCaptain/get.php"; diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index 20aa194..851ffbd 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -171,6 +171,13 @@ class LoginController extends GetxController { middleText: "Your invite code was successfully applied!" .tr, // Automatically translates based on the current locale onConfirm: () { + CRUD().post(link: AppLink.addPassengersPromo, payload: { + "promoCode": + 'S-${box.read(BoxName.name).toString().split(' ')[0]}', + "amount": '25', + "passengerID": box.read(BoxName.passengerID).toString(), + "description": 'promo first' + }); Get.offAll(() => const MapPagePassenger()); // Navigate to MapPagePassenger after confirmation }, diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 35a3da5..36e5dbd 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -362,14 +362,39 @@ class MapPassengerController extends GetxController { "order_id": rideId.toString(), // Convert to String "status": 'waiting' }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/driver_order/update.php", + payload: { + "order_id": rideId.toString(), // Convert to String + "status": 'waiting' + }); + } await CRUD().post(link: AppLink.updateRides, payload: { "id": rideId.toString(), // Convert to String "status": 'waiting' }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'waiting' + }); + } CRUD().post(link: AppLink.updateWaitingTrip, payload: { "id": rideId.toString(), // Convert to String "status": 'wait' }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'wait' + }); + } tick = 0; } await getCarForFirstConfirm(box.read(BoxName.carType)); @@ -1274,50 +1299,25 @@ class MapPassengerController extends GetxController { } }); (rideId); // - CRUD().post( - link: '${AppLink.seferAlexandriaServer}/ride/rides/add.php', - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - CRUD().post( - link: '${AppLink.seferGizaServer}/ride/rides/add.php', - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); delayAndFetchRideStatusForAllDriverAvailable(rideId); update(); @@ -1483,7 +1483,7 @@ class MapPassengerController extends GetxController { isSearchingWindow = false; update(); startTimerFromDriverToPassengerAfterApplied(); - } else if (attemptCounter >= maxAttempts) { + } else if (attemptCounter >= maxAttempts && statusRide != 'Cancel') { shouldFetch = false; // If the status is still not "Apply" after 15 attempts MyDialog().getDialog('upgrade price'.tr, @@ -1625,8 +1625,9 @@ class MapPassengerController extends GetxController { late String driverCarModel, driverCarMake, driverLicensePlate, driverName; getUpdatedRideForDriverApply(String rideId) async { // if (isDriversTokensSend) { - final res = - await CRUD().get(link: AppLink.getRideOrderID, payload: {'id': rideId}); + final res = await CRUD().get( + link: "${AppLink.endPoint}/ride/rides/getRideOrderID.php", + payload: {'id': rideId}); if (res != 'failure') { var response = jsonDecode(res); Log.print('getUpdatedRideForDriverApply: $response'); @@ -2494,6 +2495,12 @@ class MapPassengerController extends GetxController { "id": rideId.toString(), // Convert to String "status": 'notApplyFromAnyDriver' }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { + "id": rideId.toString(), // Convert to String + "status": 'notApplyFromAnyDriver' + }); + } rideConfirm = false; statusRide == 'Cancel'; isSearchingWindow = false; @@ -2523,15 +2530,6 @@ class MapPassengerController extends GetxController { "order_id": rideId.toString(), // Convert to String "status": 'Cancel' }); - await CRUD().post(link: AppLink.updateRides, payload: { - "id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - CRUD().post(link: AppLink.updateWaitingTrip, payload: { - "id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - print('Cancel'); FirebaseMessagesController().sendNotificationToDriverMAP( 'Cancel Trip', 'Trip Cancelled'.tr, @@ -2539,6 +2537,42 @@ class MapPassengerController extends GetxController { [], 'cancel.wav', ); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "$AppLink.endPoint/ride/driver_order/update.php", + payload: { + "order_id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + } + await CRUD().post(link: AppLink.updateRides, payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/rides/update.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + } + + CRUD().post(link: AppLink.updateWaitingTrip, payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: + "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + } + + print('Cancel'); } Get.offAll(const MapPagePassenger()); @@ -4093,7 +4127,11 @@ class MapPassengerController extends GetxController { if (response != 'failure') { // Trip saved successfully Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); - + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/mishwari/add.php", + payload: tripData); + } // Set up local notification // await setLocalNotification(tripDateTime); @@ -4167,11 +4205,23 @@ class MapPassengerController extends GetxController { } } - firstTimeRunToGetCoupon(String promo, validity, discount) { + firstTimeRunToGetCoupon() async { // Check if it's the first time and the app is installed and gift token is available if (box.read(BoxName.isFirstTime).toString() == '0' && box.read(BoxName.isInstall).toString() == '1' && box.read(BoxName.isGiftToken).toString() == '0') { + var promo, discount, validity; + var resPromo = await CRUD().get(link: AppLink.getPromoFirst, payload: { + "passengerID": box.read(BoxName.passengerID).toString(), + }); + if (resPromo != 'failure') { + var d1 = jsonDecode(resPromo); + promo = d1['message']['promo_code']; + discount = d1['message']['amount']; + validity = d1['message']['validity_end_date']; + } + box.write(BoxName.isFirstTime, '1'); + // Show a full-screen modal styled as an ad Get.dialog( AlertDialog( @@ -4218,7 +4268,7 @@ class MapPassengerController extends GetxController { box.write(BoxName.tipPercentage, '0'); Get.put(AudioRecorderController()); // await getNearestDriverByPassengerLocation(); - firstTimeRunToGetCoupon('SEFER25', '1 WEEEK', '25%'); + firstTimeRunToGetCoupon(); initilizeGetStorage(); cardNumber = await SecureStorage().readData(BoxName.cardNumber); diff --git a/lib/models/model/painter_copoun.dart b/lib/models/model/painter_copoun.dart index 3aaab2d..6149857 100644 --- a/lib/models/model/painter_copoun.dart +++ b/lib/models/model/painter_copoun.dart @@ -158,6 +158,7 @@ class PromoBanner extends StatelessWidget { SnackBar(content: Text('Promo code copied to clipboard!'.tr)), ); box.write(BoxName.isGiftToken, '1'); + box.write(BoxName.isFirstTime, '1'); Get.back(); }, style: ElevatedButton.styleFrom( 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 4ec375f..c9a53d6 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 @@ -1,15 +1,9 @@ -import 'package:SEFER/constant/box_name.dart'; -import 'package:SEFER/main.dart'; -import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../../../constant/colors.dart'; -import '../../../controller/firebase/firbase_messge.dart'; -import '../../../controller/functions/audio_record1.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; -import '../../../print.dart'; GetBuilder leftMainMenuIcons() { final textToSpeechController = Get.put(TextToSpeechController()); From 213c2724aa3ee9583d8c2f508441f97f8dc1aa94 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 9 Nov 2024 10:49:04 +0200 Subject: [PATCH 10/16] 11/9/1 --- android/app/build.gradle | 4 +- android/app/src/main/AndroidManifest.xml | 17 + ios/Podfile.lock | 6 + ios/Runner/Info.plist | 8 +- lib/constant/box_name.dart | 1 + lib/constant/links.dart | 24 +- lib/constant/notification.dart | 22 + lib/constant/style.dart | 4 +- lib/controller/auth/login_controller.dart | 88 +-- lib/controller/auth/register_controller.dart | 258 +++---- lib/controller/firebase/firbase_messge.dart | 254 +------ .../firebase/local_notification.dart | 208 +++++- lib/controller/functions/add_error.dart | 19 + lib/controller/functions/crud.dart | 105 ++- lib/controller/functions/sms_controller.dart | 2 +- lib/controller/functions/tts.dart | 39 +- .../home/map_passenger_controller.dart | 707 ++++++++++++++---- .../home/profile/complaint_controller.dart | 196 ++++- .../home/profile/invit_controller.dart | 280 +++++++ .../home/profile/promos_controller.dart | 9 +- lib/controller/local/local_controller.dart | 2 +- lib/controller/local/translations.dart | 66 +- .../profile/profile_controller.dart | 67 +- lib/controller/rate/rate_conroller.dart | 3 +- lib/main.dart | 22 +- lib/views/auth/sms_verfy_page.dart | 19 +- lib/views/home/HomePage/about_page.dart | 122 ++- lib/views/home/HomePage/share_app_page.dart | 437 +++++++++++ lib/views/home/HomePage/trip_record_page.dart | 292 +++++--- lib/views/home/home_page.dart | 16 +- .../map_widget.dart/apply_order_widget.dart | 27 +- .../map_widget.dart/cancel_raide_page.dart | 84 +-- .../car_details_widget_to_go.dart | 289 +++---- .../cash_confirm_bottom_page.dart | 3 +- .../google_map_passenger_widget.dart | 2 +- .../map_widget.dart/left_main_menu_icons.dart | 25 +- .../map_widget.dart/ride_begin_passenger.dart | 2 +- .../searching_captain_window.dart | 115 +++ .../select_driver_mishwari.dart | 19 +- lib/views/home/profile/complaint_page.dart | 245 ++++-- lib/views/widgets/mycircular.dart | 16 +- pubspec.lock | 12 +- pubspec.yaml | 3 + ride9-11.zip | Bin 0 -> 675295 bytes 44 files changed, 3009 insertions(+), 1130 deletions(-) create mode 100644 lib/constant/notification.dart create mode 100644 lib/controller/functions/add_error.dart create mode 100644 lib/controller/home/profile/invit_controller.dart create mode 100644 lib/views/home/HomePage/share_app_page.dart create mode 100644 ride9-11.zip diff --git a/android/app/build.gradle b/android/app/build.gradle index 6c13091..4386811 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 = 82 - versionName = '1.5.82' + versionCode = 93 + versionName = '1.5.93' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6759204..cbffd52 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,12 @@ + + + + + + @@ -59,6 +65,17 @@ + + + + + + + + + 8.0) - nanopb (~> 3.30910.0) - Flutter (1.0.0) + - flutter_contacts (0.0.1): + - Flutter - flutter_local_notifications (0.0.1): - Flutter - flutter_secure_storage (6.0.0): @@ -221,6 +223,7 @@ DEPENDENCIES: - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - Flutter (from `Flutter`) + - flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_tts (from `.symlinks/plugins/flutter_tts/ios`) @@ -292,6 +295,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: :path: Flutter + flutter_contacts: + :path: ".symlinks/plugins/flutter_contacts/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_secure_storage: @@ -360,6 +365,7 @@ SPEC CHECKSUMS: FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a FirebaseMessaging: d2d1d9c62c46dd2db49a952f7deb5b16ad2c9742 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 9c0b524..ad2e15e 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,10 @@ + NSContactsUsageDescription + This app requires contacts access to function properly. + LSMinimumSystemVersion + 12.0 CFBundleURLTypes @@ -37,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 59 + 67 CFBundleSignature ???? CFBundleVersion - 4.3.59 + 4.3.67 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index 7db29cd..0113597 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -12,6 +12,7 @@ class BoxName { static const String packagInfo = "packagInfo"; static const String isVerified = 'isVerified'; static const String isFirstTime = 'isFirstTime'; + static const String isSavedPhones = 'isSavedPhones'; static const String statusDriverLocation = "statusDriverLocation"; static const String isTest = "isTest"; static const String password = "password"; diff --git a/lib/constant/links.dart b/lib/constant/links.dart index 78c4f36..803a4bb 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -57,17 +57,21 @@ class AppLink { static String deletePassengersPromo = "$promo/delete.php"; static String updatePassengersPromo = "$promo/update.php"; + //===============contact========================== + static String savePhones = "$server/ride/egyptPhones/add.php"; + static String getPhones = "$server/ride/egyptPhones/get.php"; + ////=======================cancelRide=================== static String ride = '$server/ride'; static String addCancelRideFromPassenger = "$server/ride/cancelRide/add.php"; static String cancelRide = "$server/ride/cancelRide/get.php"; //-----------------ridessss------------------ static String addRides = "$ride/rides/add.php"; - static String getRides = "$server/ride/rides/get.php"; - static String getRideOrderID = "$server/ride/rides/getRideOrderID.php"; - static String getRideStatus = "$server/ride/rides/getRideStatus.php"; + static String getRides = "$endPoint/ride/rides/get.php"; + static String getRideOrderID = "$endPoint/ride/rides/getRideOrderID.php"; + static String getRideStatus = "$endPoint/ride/rides/getRideStatus.php"; static String getRideStatusBegin = - "$server/ride/rides/getRideStatusBegin.php"; + "$endPoint/ride/rides/getRideStatusBegin.php"; static String getRideStatusFromStartApp = "$ride/rides/getRideStatusFromStartApp.php"; static String updateRides = "$server/ride/rides/update.php"; @@ -116,6 +120,17 @@ class AppLink { "$ride/notificationCaptain/update.php"; static String deleteNotificationCaptain = "$ride/notificationCaptain/delete.php"; + //-----------------invitor------------------ + + static String addInviteDriver = "$server/ride/invitor/add.php"; + static String addInvitationPassenger = + "$server/ride/invitor/addInvitationPassenger.php"; + static String getInviteDriver = "$server/ride/invitor/get.php"; + static String getDriverInvitationToPassengers = + "$server/ride/invitor/getDriverInvitationToPassengers.php"; + static String updateInviteDriver = "$server/ride/invitor/update.php"; + static String updatePassengerGift = + "$server/ride/invitor/updatePassengerGift.php"; //-----------------Api Key------------------ static String addApiKey = "$ride/apiKey/add.php"; static String getApiKey = "$ride/apiKey/get.php"; @@ -125,6 +140,7 @@ class AppLink { //-----------------Feed Back------------------ static String addFeedBack = "$ride/feedBack/add.php"; + static String uploadAudio = "$ride/feedBack/upload_audio.php"; static String getFeedBack = "$ride/feedBack/get.php"; static String updateFeedBack = "$ride/feedBack/updateFeedBack.php"; diff --git a/lib/constant/notification.dart b/lib/constant/notification.dart new file mode 100644 index 0000000..7ede7a2 --- /dev/null +++ b/lib/constant/notification.dart @@ -0,0 +1,22 @@ +List messages = [ + "🚗 عروض مميزة: استمتع بأقل الأسعار وأفضل العروض! افتح تطبيق سفر الآن لتحصل على المزيد من الخيارات. 🌟", + "💸 وفر الآن: وفر مع تطبيق سفر! عروض مستمرة وخيارات متعددة تناسب احتياجاتك. 🔥", + "🔒 أمان وراحة: مع تطبيق سفر، احصل على أمان وراحة بأفضل الأسعار! 🚕", + "💼 خيارات متنوعة: استفد من خيارات متنوعة وأسعار تنافسية على تطبيق سفر، الأفضل دائماً. 🌐", + "💵 توفير مضمون: حافظ على ميزانيتك وسافر بأمان مع تطبيق سفر – العروض لا تتوقف! 🎉", + "🌍 وجهات مميزة: أفضل وجهات السفر، بأقل الأسعار مع تطبيق سفر – تابعنا الآن! 🛤️", + "🛣️ سهولة وراحة: رحلاتك أصبحت أسهل وأرخص – سافر معنا وتمتع بأفضل التجارب. 🎊", + "📲 حجز سهل: احجز رحلتك بسهولة وأمان مع سفر – المزيد من الخصومات في انتظارك! 🎁", + "👑 فئة مميزة: خليك من الفئة المميزة واستفد بأفضل الأسعار مع تطبيق سفر. 💯", + "💡 خيارات متعددة: نوفر لك خيارات متعددة وسعر مناسب – جرب تطبيق سفر الآن! 🚖", + "✨ عروض متجددة: العروض لا تتوقف على تطبيق سفر – احجز رحلتك الآن وتمتع بالمزيد! 📅", + "🚀 سهولة الوصول: السفر أصبح أسهل وأسرع مع تطبيق سفر – كن مستعدًا لأفضل التجارب! 🌠", + "🧳 راحة وأمان: تطبيق سفر يقدم لك أمان وراحة بأقل الأسعار! 📉", + "🔥 عروض فورية: احجز الآن واستمتع بعروض لا تُفوّت على تطبيق سفر! 🚘", + "🚖 أسعار تنافسية: اختر رحلتك الآن بأسعار تنافسية وتمتع بالراحة والأمان مع تطبيق سفر. ✅", + "💥 أسعار خاصة: أسعار خاصة بانتظارك على تطبيق سفر! افتح التطبيق الآن واحجز رحلتك. 🌐", + "🌟 راحة البال: انطلق بأمان وراحة مع تطبيق سفر – استمتع بأفضل الأسعار. 💸", + "📍 خصومات حصرية: استفد من الخصومات الحصرية والعروض المستمرة على تطبيق سفر! 🛤️", + "🛫 تجربة سهلة: رحلاتك أصبحت أفضل وأسهل مع تطبيق سفر – افتح التطبيق واستمتع بالتجربة. ✨", + "🔔 عروض لا مثيل لها: كن جاهزًا لعروض لا مثيل لها! تطبيق سفر يقدم لك أفضل الخيارات بأقل الأسعار. 🎉", +]; diff --git a/lib/constant/style.dart b/lib/constant/style.dart index 9d13b27..10975c7 100644 --- a/lib/constant/style.dart +++ b/lib/constant/style.dart @@ -43,7 +43,9 @@ class AppStyle { static BoxDecoration boxDecoration = const BoxDecoration( boxShadow: [ BoxShadow( - color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), + color: Color.fromARGB(255, 218, 218, 255), + blurRadius: 5, + offset: Offset(2, 4)), BoxShadow( color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) ], diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index 851ffbd..d2f4745 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:SEFER/constant/info.dart'; import 'package:SEFER/controller/firebase/firbase_messge.dart'; +import 'package:SEFER/controller/functions/add_error.dart'; import 'package:SEFER/views/auth/login_page.dart'; import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:SEFER/views/widgets/my_dialog.dart'; @@ -15,6 +16,7 @@ import 'package:SEFER/main.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:location/location.dart'; +import '../../print.dart'; import '../functions/package_info.dart'; class LoginController extends GetxController { @@ -90,23 +92,22 @@ class LoginController extends GetxController { } else { var jsonDecoeded = jsonDecode(res); if (jsonDecoeded.isNotEmpty) { + var d = jsonDecoeded['data'][0]; if (jsonDecoeded['status'] == 'success' && - jsonDecoeded['data'][0]['verified'].toString() == '1') { + d['verified'].toString() == '1') { // + box.write(BoxName.isVerified, '1'); - box.write(BoxName.email, jsonDecoeded['data'][0]['email']); - box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); + box.write(BoxName.email, d['email']); + box.write(BoxName.phone, d['phone']); box.write(BoxName.isTest, '1'); - box.write(BoxName.package, jsonDecoeded['data'][0]['package']); - box.write(BoxName.promo, jsonDecoeded['data'][0]['promo']); - box.write(BoxName.discount, jsonDecoeded['data'][0]['discount']); - box.write(BoxName.validity, jsonDecoeded['data'][0]['validity']); - box.write(BoxName.isInstall, - jsonDecoeded['data'][0]['isInstall'] ?? 'none'); - box.write(BoxName.isGiftToken, - jsonDecoeded['data'][0]['isGiftToken'] ?? 'none'); - box.write(BoxName.inviteCode, - jsonDecoeded['data'][0]['inviteCode'] ?? 'none'); + box.write(BoxName.package, d['package']); + box.write(BoxName.promo, d['promo']); + box.write(BoxName.discount, d['discount']); + box.write(BoxName.validity, d['validity']); + box.write(BoxName.isInstall, d['isInstall'] ?? 'none'); + box.write(BoxName.isGiftToken, d['isGiftToken'] ?? 'none'); + box.write(BoxName.inviteCode, d['inviteCode'] ?? 'none'); var token = await CRUD().get(link: AppLink.getTokens, payload: { 'passengerID': box.read(BoxName.passengerID).toString() @@ -114,11 +115,11 @@ class LoginController extends GetxController { if (token != 'failure') { if (jsonDecode(token)['data'][0]['token'] != box.read(BoxName.tokenFCM)) { - Get.put(FirebaseMessagesController()) - .sendNotificationToAnyWithoutData( + Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( 'token change'.tr, 'change device'.tr, jsonDecode(token)['data'][0]['token'].toString(), + [], 'cancel.wav', ); Future.delayed(const Duration(seconds: 1)); @@ -153,10 +154,10 @@ class LoginController extends GetxController { Get.offAll(() => const MapPagePassenger()); }, ); + } else { + print('same'); } } // Logging to check if inviteCode is written correctly - print("Invite Code in Box: ${box.read(BoxName.inviteCode)}"); - print("Is Install: ${box.read(BoxName.isInstall)}"); if (box.read(BoxName.inviteCode).toString() != 'none' && box.read(BoxName.isInstall).toString() != '1') { @@ -171,15 +172,22 @@ class LoginController extends GetxController { middleText: "Your invite code was successfully applied!" .tr, // Automatically translates based on the current locale onConfirm: () { - CRUD().post(link: AppLink.addPassengersPromo, payload: { - "promoCode": - 'S-${box.read(BoxName.name).toString().split(' ')[0]}', - "amount": '25', - "passengerID": box.read(BoxName.passengerID).toString(), - "description": 'promo first' - }); - Get.offAll(() => - const MapPagePassenger()); // Navigate to MapPagePassenger after confirmation + try { + CRUD().post(link: AppLink.addPassengersPromo, payload: { + "promoCode": + 'S-${box.read(BoxName.name).toString().split(' ')[0]}', + "amount": '25', + "passengerID": box.read(BoxName.passengerID).toString(), + "description": 'promo first' + }); + } catch (e) { + addError(e.toString(), + 'passenger Invitation Used dialogu as promo line 185 login_controller'); + } finally { + // Continue with the rest of your flow, regardless of errors + // For example, navigate to the next page + Get.offAll(() => const MapPagePassenger()); + } }, textConfirm: "OK".tr, // Confirm button text ); @@ -200,34 +208,6 @@ class LoginController extends GetxController { } } - // void adminDashboardOpen() async { - // if (formKeyAdmin.currentState!.validate()) { - // await DeviceInfoPlus.getDeviceInfo(); - // if (Platform.isAndroid) { - // // var res = await CRUD().get(link: AppLink.getAdminUser, payload: { - // // // 'device_number': DeviceInfoPlus.deviceData['serialNumber'].toString(), - // // }); - // // var d = jsonDecode(res); - // // // if (DeviceInfoPlus.deviceData['serialNumber'] == - // // d['message']['device_number']) { - // Get.back(); - // Get.to(() => const AdminHomePage()); - // // } - // } - // if (Platform.isIOS) { - // // var res = await CRUD().get(link: AppLink.getAdminUser, payload: { - // // 'device_number': DeviceInfoPlus.deviceData['identifierForVendor'].toString(), - // // }); - // // var d = jsonDecode(res); - // // if (DeviceInfoPlus.deviceData['serialNumber'] == - // // d['message']['device_number']) { - // Get.back(); - // Get.to(() => const AdminHomePage()); - // // } - // } - // } - // } - void login() async { isloading = true; update(); diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index cb03dcc..2cd19d4 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/controller/auth/login_controller.dart'; +import 'package:SEFER/controller/functions/add_error.dart'; import 'package:SEFER/controller/local/phone_intel/phone_number.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:SEFER/views/widgets/my_dialog.dart'; @@ -134,66 +135,51 @@ class RegisterController extends GetxController { String phoneNumber = phoneController.text; // Check if the phone number is from Egypt (Assuming Egyptian numbers start with +20) - bool isEgyptianNumber = phoneNumber.startsWith('+20'); - // print('dfdf${phoneNumber.toString().split('+2')[1]}'); - if (isEgyptianNumber && phoneNumber.length == 13) { - // Check if the phone number is already verified - var responseChecker = await CRUD().post( - link: AppLink.checkPhoneNumberISVerfiedPassenger, - payload: { - 'phone_number': phoneNumber, - 'email': box.read(BoxName.email), - }, - ); - if (responseChecker != 'failure') { - var data = jsonDecode(responseChecker); + if (phoneController.text.isNotEmpty) { + bool isEgyptianNumber = phoneNumber.startsWith('+20'); + if (isEgyptianNumber && phoneNumber.length == 13) { + // Check if the phone number is already verified + var responseChecker = await CRUD().post( + link: AppLink.checkPhoneNumberISVerfiedPassenger, + payload: { + 'phone_number': phoneNumber, + 'email': box.read(BoxName.email), + }, + ); - // If the phone number is already verified - if (data['message'][0]['verified'].toString() == '1') { - Get.snackbar('Phone number is verified before'.tr, '', - backgroundColor: AppColor.greenColor); - box.write(BoxName.isVerified, '1'); - box.write(BoxName.phone, phoneNumber); - Get.offAll(const MapPagePassenger()); + if (responseChecker != 'failure') { + var data = jsonDecode(responseChecker); + + // If the phone number is already verified + if (data['message'][0]['verified'].toString() == '1') { + Get.snackbar('Phone number is verified before'.tr, '', + backgroundColor: AppColor.greenColor); + box.write(BoxName.isVerified, '1'); + box.write(BoxName.phone, phoneNumber); + Get.offAll(const MapPagePassenger()); + } else { + await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, + smsEgyptController); + } } else { - // If the phone number is not verified, send OTP - // if (isEgyptianNumber) { - // if (isValidEgyptianPhoneNumber( - // phoneNumber.toString().split('+2')[1])) { await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); - // } - // } } } else { - // If verification check fails, still send OTP - // if (isEgyptianNumber) { - // if (isValidEgyptianPhoneNumber( - // phoneNumber.toString().split('+2')[1])) { - await sendOtp( + sendOtp( phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); - // } else { - // MyDialog().getDialog( - // 'Error'.tr, "Phone number isn't an Egyptian phone number".tr, - // () { - // Get.back(); - // }); - // } - // } } } else { - // MyDialog().getDialog( - // 'Error'.tr, 'Phone number must be exactly 11 digits long'.tr, () { - // Get.back(); - // }); - sendOtp( - phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); - print(phoneNumber); + MyDialog().getDialog( + 'Error'.tr, 'Phone number must be exactly 11 digits long'.tr, () { + Get.back(); + }); + // sendOtp( + // phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); } } catch (e) { // Handle error - print('Error: $e'); } finally { isLoading = false; update(); @@ -205,34 +191,14 @@ class RegisterController extends GetxController { SmsEgyptController controller) async { // Trim any leading or trailing whitespace from the phone number phoneNumber = phoneNumber.trim(); - Log.print('phoneNumber: ${phoneNumber}'); - + await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + 'phone_number': phoneNumber, + 'token': otp.toString(), + }); if (isEgyptian) { - // // Check if the phone number has exactly 11 digits - // if (phoneNumber.length == 11 && - // RegExp(r'^\d{11}$').hasMatch(phoneNumber)) { - // Send SMS for Egyptian phone numbers - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': phoneNumber, - 'token': otp.toString(), - // 'urlImage': box.read(BoxName.passengerPhotoUrl), - // 'name': box.read(BoxName.name), - }); - await controller.sendSmsEgypt(phoneNumber, otp.toString()); - print('SMS sent to Egyptian phone number: $phoneNumber'); } else { - // // Show error dialog if phone number is invalid - // MyDialog().getDialog('Invalid Phone Number', - // 'The phone number must be exactly 11 digits long.', () { - // Get.back(); - // }); - // } - - // else { - // Send WhatsApp message for non-Egyptian phone numbers await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString()); - print('WhatsApp message sent to non-Egyptian phone number: $phoneNumber'); } isLoading = false; @@ -243,98 +209,72 @@ class RegisterController extends GetxController { } verifySMSCode() async { - // if (formKey3.currentState!.validate()) { - Log.print('phoneController.text: ${phoneController.text}'); - // if (isValidEgyptianPhoneNumber(phoneController.text)) { - var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { - 'phone_number': phoneController.text, - 'token': verifyCode.text.toString(), - }); - if (res != 'failure') { - // var dec = jsonDecode(res); - box.write(BoxName.phoneDriver, phoneController.text); - var payload = { - 'id': box.read(BoxName.passengerID), - 'phone': phoneController.text, - 'email': box.read(BoxName.email), - 'password': 'unknown', - 'gender': 'unknown', - 'birthdate': '2002-01-01', - 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', - 'first_name': box.read(BoxName.name).toString().split(' ')[0], - 'last_name': box.read(BoxName.name).toString().split(' ')[1], - }; + try { + if (formKey3.currentState!.validate()) { + var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { + 'phone_number': phoneController.text, + 'token': verifyCode.text.toString(), + }); - var res1 = await CRUD().post( - link: AppLink.signUp, - payload: payload, - ); - if (res1 != 'failure') { - CRUD().post( - link: '${AppLink.seferAlexandriaServer}/auth/signup.php', - payload: payload, - ); - CRUD().post( - link: '${AppLink.seferGizaServer}/auth/signup.php', - payload: payload, - ); - box.write(BoxName.isVerified, '1'); - box.write(BoxName.isFirstTime, '0'); - box.write(BoxName.phone, phoneController.text); - // Get.offAll(const MapPagePassenger()); - Get.put(LoginController()).loginUsingCredentials( - box.read(BoxName.passengerID).toString(), - box.read(BoxName.email).toString(), - ); + if (res != 'failure') { + box.write(BoxName.phoneDriver, phoneController.text); + var nameParts = box.read(BoxName.name).toString().split(' '); + var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown'; + var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown'; + + var payload = { + 'id': box.read(BoxName.passengerID), + 'phone': phoneController.text, + 'email': box.read(BoxName.email), + 'password': 'unknown', + 'gender': 'unknown', + 'birthdate': '2002-01-01', + 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', + 'first_name': firstName, + 'last_name': lastName, + }; + + var res1 = await CRUD().post( + link: AppLink.signUp, + payload: payload, + ); + + if (res1 != 'failure') { + await CRUD().post( + link: '${AppLink.seferAlexandriaServer}/auth/signup.php', + payload: payload, + ); + await CRUD().post( + link: '${AppLink.seferGizaServer}/auth/signup.php', + payload: payload, + ); + + box.write(BoxName.isVerified, '1'); + box.write(BoxName.isFirstTime, '0'); + box.write(BoxName.phone, phoneController.text); + + Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } else { + Get.snackbar('Error'.tr, + "The email or phone number is already registered.".tr, + backgroundColor: Colors.redAccent); + } + } else { + Get.snackbar('Error'.tr, "phone not verified".tr, + backgroundColor: Colors.redAccent); + } + } else { + Get.snackbar('Error'.tr, "you must insert token code".tr, + backgroundColor: AppColor.redColor); } - } else { - Get.snackbar( - 'Error'.tr, "The email or phone number is already registered.".tr, + } catch (e) { + addError(e.toString(), 'passenger sign up '); + Get.snackbar('Error'.tr, "Something went wrong. Please try again.".tr, backgroundColor: Colors.redAccent); } - // } else { - // var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: { - // 'phone_number': phoneController.text, - // 'token': verifyCode.text.toString(), - // }); - // if (res != 'failure') { - // // var dec = jsonDecode(res); - // box.write(BoxName.phoneDriver, '+${phoneController.text}'); - // var payload = { - // 'id': box.read(BoxName.passengerID), - // 'phone': phoneController.text, - // 'email': box.read(BoxName.email), - // 'password': 'unknown', - // 'gender': 'unknown', - // 'birthdate': '2002-01-01', - // 'site': 'unknown', - // 'first_name': box.read(BoxName.name).toString().split(' ')[0], - // 'last_name': box.read(BoxName.name).toString().split(' ')[1], - // }; - - // var res1 = await CRUD().post( - // link: AppLink.signUp, - // payload: payload, - // ); - // if (res1 != 'failure') { - // CRUD().post( - // link: '${AppLink.seferAlexandriaServer}/auth/signup.php', - // payload: payload, - // ); - // CRUD().post( - // link: '${AppLink.seferGizaServer}/auth/signup.php', - // payload: payload, - // ); - // box.write(BoxName.isVerified, '1'); - // box.write(BoxName.phone, '+${phoneController.text}'); - // Get.offAll(const MapPagePassenger()); - // } - // } else { - // Get.snackbar( - // 'Error'.tr, "The email or phone number is already registered.".tr, - // backgroundColor: Colors.redAccent); - // } - // } } sendVerifications() async { diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 60ec7e2..a8227a3 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:io'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -65,6 +66,9 @@ class FirebaseMessagesController extends GetxController { } } + NotificationController notificationController = + Get.find(); + Future getTokens() async { String? basicAuthCredentials = await storage.read(key: BoxName.basicAuthCredentials); @@ -118,6 +122,10 @@ class FirebaseMessagesController extends GetxController { void fireBaseTitles(RemoteMessage message) { if (message.notification!.title! == 'Order'.tr) { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Order', message.notification!.body!, 'Order'); + } } else if (message.notification!.title! == 'Apply Ride'.tr) { var passengerList = message.data['passengerList']; @@ -128,20 +136,22 @@ class FirebaseMessagesController extends GetxController { Get.find().isSearchingWindow == false; Get.find().update(); if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); + //notificationController.showNotification( + // 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); } // driverAppliedTripSnakBar(); } else if (message.notification!.title! == 'Promo'.tr) { if (Platform.isAndroid) { - NotificationController() - .showNotification('Promo', 'Show latest promo'.tr, 'promo'); + notificationController.showNotification( + 'Promo', 'Show latest promo'.tr, 'promo'); } Get.to(const PromosPassengerPage()); } else if (message.notification!.title! == 'Trip Monitoring'.tr) { if (Platform.isAndroid) { - NotificationController() - .showNotification('Trip Monitoring'.tr, '', 'iphone_ringtone'); + notificationController.showNotification( + 'Trip Monitoring'.tr, '', 'iphone_ringtone'); } var myListString = message.data['passengerList']; var myList = jsonDecode(myListString) as List; @@ -151,65 +161,67 @@ class FirebaseMessagesController extends GetxController { }); } else if (message.notification!.title! == 'token change'.tr) { if (Platform.isAndroid) { - NotificationController() - .showNotification('token change'.tr, 'token change'.tr, 'cancel'); + notificationController.showNotification( + 'token change'.tr, 'token change'.tr, 'cancel'); } GoogleSignInHelper.signOut(); } else if (message.notification!.title! == 'DriverIsGoingToPassenger'.tr) { Get.find().isDriverInPassengerWay = true; Get.find().update(); if (Platform.isAndroid) { - NotificationController().showNotification('Driver is Going To You'.tr, + notificationController.showNotification('Driver is Going To You'.tr, 'Please stay on the picked point.'.tr, 'tone1'); } // Get.snackbar('Driver is Going To Passenger', '', // backgroundColor: AppColor.greenColor); } else if (message.notification!.title! == 'message From passenger') { if (Platform.isAndroid) { - NotificationController() - .showNotification('message From passenger'.tr, ''.tr, 'tone2'); + notificationController.showNotification( + 'message From passenger'.tr, ''.tr, 'tone2'); } passengerDialog(message.notification!.body!); update(); } else if (message.notification!.title! == 'message From Driver') { - passengerDialog(message.notification!.body!); if (Platform.isAndroid) { - NotificationController() - .showNotification('message From passenger'.tr, ''.tr, 'tone2'); + notificationController.showNotification( + 'message From passenger'.tr, ''.tr, 'tone2'); } + passengerDialog(message.notification!.body!); update(); } else if (message.notification!.title! == 'RideIsBegin'.tr) { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Trip is Begin'.tr, ''.tr, 'start'); + } Get.find().getBeginRideFromDriver(); // Get.snackbar('RideIsBegin', '', backgroundColor: AppColor.greenColor); box.write(BoxName.passengerWalletTotal, '0'); update(); - if (Platform.isAndroid) { - NotificationController() - .showNotification('Trip is Begin'.tr, ''.tr, 'start'); - } } else if (message.notification!.title! == 'Hi ,I will go now'.tr) { // Get.snackbar('Hi ,I will go now', '', // backgroundColor: AppColor.greenColor); if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2'); } update(); } else if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) { driverArrivePassengerDialoge(); if (Platform.isAndroid) { - NotificationController() - .showNotification('Hi ,I Arrive your site'.tr, ''.tr, 'tone2'); + notificationController.showNotification( + 'Hi ,I Arrive your site'.tr, ''.tr, 'tone2'); } update(); } else if (message.notification!.title! == "Cancel Trip from driver".tr) { Get.back(); + Get.defaultDialog( title: "The driver canceled your ride.".tr, - middleText: "We will look for a new driver.\\nPlease wait.".tr, + middleText: "We will look for a new driver.\nPlease wait.".tr, confirm: MyElevatedButton( + kolor: AppColor.greenColor, title: 'Ok'.tr, onPressed: () async { Get.back(); @@ -219,6 +231,7 @@ class FirebaseMessagesController extends GetxController { ), cancel: MyElevatedButton( title: 'Cancel'.tr, + kolor: AppColor.redColor, onPressed: () { Get.offAll(const MapPagePassenger()); }, @@ -230,7 +243,7 @@ class FirebaseMessagesController extends GetxController { var myListString = message.data['passengerList']; var driverList = jsonDecode(myListString) as List; if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Driver Finish Trip'.tr, 'you will pay to Driver'.tr + ' ${driverList[3].toString()} \$'.tr, 'tone1'); @@ -267,7 +280,7 @@ class FirebaseMessagesController extends GetxController { var driverList = jsonDecode(myListString) as List; // if (Platform.isAndroid) { if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Call Income'.tr, message.notification!.body!, 'iphone_ringtone', @@ -287,7 +300,7 @@ class FirebaseMessagesController extends GetxController { var driverList = jsonDecode(myListString) as List; // if (Platform.isAndroid) { if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Call Income'.tr, message.notification!.body!, 'iphone_ringtone', @@ -305,7 +318,7 @@ class FirebaseMessagesController extends GetxController { var myListString = message.data['passengerList']; var driverList = jsonDecode(myListString) as List; if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Call End'.tr, message.notification!.body!, 'tone2', @@ -321,7 +334,7 @@ class FirebaseMessagesController extends GetxController { // 'message', // backgroundColor: AppColor.redColor); if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'Driver Cancel Your Trip'.tr, 'you will pay to Driver you will be pay the cost of driver time look to your SEFER Wallet' .tr, @@ -346,7 +359,7 @@ class FirebaseMessagesController extends GetxController { else if (message.notification!.title! == 'Order Applied'.tr) { if (Platform.isAndroid) { - NotificationController().showNotification( + notificationController.showNotification( 'The order Accepted by another Driver'.tr, 'We regret to inform you that another driver has accepted this order.' .tr, @@ -604,120 +617,6 @@ class FirebaseMessagesController extends GetxController { } } - void sendNotificationToAnyWithoutData( - String title, String body, String token, String tone) async { - try { - String serviceAccountKeyJson = '''{ - "type": "service_account", - "project_id": "ride-b1bd8", - "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249", - "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n", - "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com", - "client_id": "111210077025005706623", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" -} -'''; // As defined above - - // Initialize AccessTokenManager - final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); - - // Obtain an OAuth 2.0 access token - final accessToken = await accessTokenManager.getAccessToken(); - // Log.print('accessToken: ${accessToken}'); - - // Send the notification - final response = await http.post( - Uri.parse( - 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer $accessToken', - }, - body: jsonEncode({ - 'message': { - 'token': token, - 'notification': { - 'title': title, - '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, - }, - }, - }, - }, - }), - ); - - if (response.statusCode == 200) { - print( - 'Notification sent successfully. Status code: ${response.statusCode}'); - print('Response token: ${token}'); - } else { - print( - 'Failed to send notification. Status code: ${response.statusCode}'); - print('Response body: ${response.body}'); - } - } catch (e) { - print('Error sending notification: $e'); - } - } - - // void sendNotificationToDriverMAP(String title, String body, String token, - // List data, String tone) async { - // try { - // final response = await http.post( - // // Uri.parse( - // // 'https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send'), - // Uri.parse('https://fcm.googleapis.com/fcm/send'), - // headers: { - // 'Content-Type': 'application/json', - // // 'Authorization': 'Bearer 104815009508844392546' - // 'Authorization': 'key=${AK.serverAPI}' - // }, - // body: jsonEncode({ - // 'notification': { - // 'title': title, - // 'body': body, - // 'sound': tone - // }, - // 'data': { - // 'DriverList': data, - // }, - // 'priority': 'high', - // 'to': token, - // }), - // ); - - // if (response.statusCode == 200) { - // Log.print( - // 'Notification sent successfully. Status code: ${response.statusCode}'); - // Log.print('Response body: ${response.body}'); - // } else { - // Log.print( - // 'Failed to send notification. Status code: ${response.statusCode}'); - // Log.print('Response body: ${response.body}'); - // } - // } catch (e) { - // Log.print('Error sending notification: $e'); - // } - // } - Future sendNotificationToDriverMAP( String title, String body, String token, List data, String tone, {int retryCount = 2}) async { @@ -809,79 +708,6 @@ class FirebaseMessagesController extends GetxController { } } } - - void sendNotificationToDriverMapPolyline(String title, String body, - String token, List data, String polylineJson, String tone) async { - try { - String serviceAccountKeyJson = '''{ - "type": "service_account", - "project_id": "ride-b1bd8", - "private_key_id": "75e817c0b902db2ef35edf2c2bd159dec1f13249", - "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsTGZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vglQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n", - "client_email": "firebase-adminsdk-o2wqi@ride-b1bd8.iam.gserviceaccount.com", - "client_id": "111210077025005706623", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-o2wqi%40ride-b1bd8.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" -} -'''; // As defined above - - // Initialize AccessTokenManager - final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); - - // Obtain an OAuth 2.0 access token - final accessToken = await accessTokenManager.getAccessToken(); - - // Send the notification - final response = await http.post( - Uri.parse( - 'https://fcm.googleapis.com/v1/projects/ride-b1bd8/messages:send'), - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer $accessToken', - }, - body: jsonEncode({ - '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, - }, - }, - }, - }, - }), - ); - - if (response.statusCode == 200) { - // Notification sent successfully - } else { - // Handle error response - 'Failed to send notification. Status code: ${response.statusCode}'; - } - } catch (e) { - // Handle other exceptions - } - } } class DriverTipWidget extends StatelessWidget { diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index 5fc0484..b6d8c93 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -1,29 +1,219 @@ +// import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +// import 'package:get/get.dart'; +// import 'package:timezone/data/latest.dart' as tz; +// import 'package:timezone/timezone.dart' as tz; + +// class NotificationController extends GetxController { +// final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = +// FlutterLocalNotificationsPlugin(); + +// // Initializes the local notifications plugin +// Future initNotifications() async { +// const AndroidInitializationSettings android = +// AndroidInitializationSettings('@mipmap/launcher_icon'); +// const InitializationSettings initializationSettings = +// InitializationSettings(android: android); +// await _flutterLocalNotificationsPlugin.initialize(initializationSettings); +// } + +// // Displays a notification with the given title and message +// void showNotification(String title, String message, String tone) async { +// AndroidNotificationDetails android = AndroidNotificationDetails( +// 'high_importance_channel', +// 'High Importance Notifications', +// importance: Importance.max, +// priority: Priority.high, +// showWhen: false, +// sound: RawResourceAndroidNotificationSound(tone), +// ); +// DarwinNotificationDetails ios = const DarwinNotificationDetails( +// sound: 'default', +// presentAlert: true, +// presentBadge: true, +// presentSound: true, +// ); +// NotificationDetails details = +// NotificationDetails(android: android, iOS: ios); +// await _flutterLocalNotificationsPlugin.show(0, title, message, details); +// } + +// // Schedules a notification after 1 minute +// void scheduleNotificationAfter1Minute( +// String title, String message, String tone) async { +// AndroidNotificationDetails android = AndroidNotificationDetails( +// 'high_importance_channel', 'High Importance Notifications', +// importance: Importance.max, +// priority: Priority.high, +// showWhen: false, +// sound: RawResourceAndroidNotificationSound(tone)); + +// DarwinNotificationDetails ios = const DarwinNotificationDetails( +// sound: 'default', +// presentAlert: true, +// presentBadge: true, +// presentSound: true, +// ); + +// NotificationDetails details = +// NotificationDetails(android: android, iOS: ios); + +// // Schedule the notification to be shown after 1 minute +// final now = tz.TZDateTime.now(tz.local); +// final scheduledTime = now.add(const Duration(minutes: 1)); + +// await _flutterLocalNotificationsPlugin.zonedSchedule( +// 0, +// title, +// message, +// scheduledTime, +// details, +// androidAllowWhileIdle: true, +// uiLocalNotificationDateInterpretation: +// UILocalNotificationDateInterpretation.absoluteTime, +// matchDateTimeComponents: DateTimeComponents.time, +// ); +// } +// } +import 'dart:async'; +import 'dart:io'; + +import 'package:SEFER/constant/box_name.dart'; +import 'package:SEFER/main.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:timezone/data/latest.dart' as tz; +import 'package:timezone/timezone.dart' as tz; class NotificationController extends GetxController { final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + @override + void onInit() { + super.onInit(); + initNotifications(); + } + // Initializes the local notifications plugin Future initNotifications() async { const AndroidInitializationSettings android = AndroidInitializationSettings('@mipmap/launcher_icon'); - const InitializationSettings initializationSettings = - InitializationSettings(android: android); + DarwinInitializationSettings ios = DarwinInitializationSettings( + requestAlertPermission: true, + requestBadgePermission: true, + requestSoundPermission: true, + onDidReceiveLocalNotification: + (int id, String? title, String? body, String? payload) async {}, + ); + InitializationSettings initializationSettings = + InitializationSettings(android: android, iOS: ios); await _flutterLocalNotificationsPlugin.initialize(initializationSettings); + + tz.initializeTimeZones(); + print('Notifications initialized'); } // Displays a notification with the given title and message void showNotification(String title, String message, String tone) async { - AndroidNotificationDetails android = AndroidNotificationDetails( - 'high_importance_channel', 'High Importance Notifications', - importance: Importance.max, - priority: Priority.high, - showWhen: false, - sound: RawResourceAndroidNotificationSound(tone)); + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + showWhen: false, + sound: RawResourceAndroidNotificationSound(tone), + ); - NotificationDetails details = NotificationDetails(android: android); + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); await _flutterLocalNotificationsPlugin.show(0, title, message, details); + print('Notification shown: $title - $message'); + } + + void scheduleDailyNotifications( + String title, String message, String tone) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Check for the exact alarm permission on Android 12 and above + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Schedule notifications for 10:00 AM and 3:00 PM daily + await _scheduleNotificationForTime(8, 0, title, message, details); + await _scheduleNotificationForTime(15, 0, title, message, details); + await _scheduleNotificationForTime(20, 0, title, message, details); + // await _scheduleNotificationForTime(0, 22, title, message, details); + + print('Daily notifications scheduled successfully'); + } + +// Helper function to get the next instance of a specific hour and minute + Future _scheduleNotificationForTime(int hour, int minute, String title, + String message, NotificationDetails details) async { + // Initialize and set Cairo timezone + tz.initializeTimeZones(); + var cairoLocation; + if (box.read(BoxName.countryCode).toString() == 'Egypt') { + cairoLocation = tz.getLocation('Africa/Cairo'); + } else {} // todo get for location country + // Set Cairo timezone + + final now = tz.TZDateTime.now( + cairoLocation); // Use Cairo timezone for the current time + tz.TZDateTime scheduledDate = tz.TZDateTime( + cairoLocation, now.year, now.month, now.day, hour, minute); + + // If scheduled time is already past today, schedule it for the next day + if (scheduledDate.isBefore(now)) { + scheduledDate = scheduledDate.add(const Duration(days: 1)); + } + + print('Current time (Cairo): $now'); + print('Scheduling notification for: $scheduledDate'); + + await _flutterLocalNotificationsPlugin.zonedSchedule( + 0, // Use unique IDs if you want to manage each notification separately + title, + message, + scheduledDate, + details, + androidAllowWhileIdle: true, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: DateTimeComponents.time, + ); + print('Notification scheduled successfully for Cairo timezone'); } } diff --git a/lib/controller/functions/add_error.dart b/lib/controller/functions/add_error.dart new file mode 100644 index 0000000..320a996 --- /dev/null +++ b/lib/controller/functions/add_error.dart @@ -0,0 +1,19 @@ +import '../../constant/box_name.dart'; +import '../../constant/links.dart'; +import '../../main.dart'; +import 'crud.dart'; + +addError(String error, where) async { + CRUD().post(link: AppLink.addError, payload: { + 'error': error.toString(), // Example error description + 'userId': box.read(BoxName.driverID) ?? + box.read(BoxName.passengerID), // Example user ID + 'userType': box.read(BoxName.driverID) != null + ? 'Driver' + : 'passenger', // Example user type + 'phone': box.read(BoxName.phone) ?? + box.read(BoxName.phoneDriver), // Example phone number + + 'device': where + }); +} diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 1525659..8c0e3a3 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -1,15 +1,21 @@ import 'dart:convert'; +import 'dart:io'; +import 'dart:ui'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/main.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:SEFER/env/env.dart'; +import 'package:http_parser/http_parser.dart'; +import 'package:mime/mime.dart'; import '../../constant/api_key.dart'; +import '../../constant/colors.dart'; import '../../print.dart'; import '../../views/widgets/elevated_btn.dart'; +import 'add_error.dart'; import 'upload_image.dart'; class CRUD { @@ -29,8 +35,9 @@ class CRUD { 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', }, ); - Log.print('payload: ${payload}'); + Log.print('response.request: ${response.request}'); + Log.print('payload: ${payload}'); Log.print('response.reasonPhrase: ${response.reasonPhrase}'); Log.print('response.body: ${response.body}'); @@ -44,7 +51,6 @@ class CRUD { return jsonData['status']; } - // } Future getTokenParent({ required String link, Map? payload, @@ -264,36 +270,83 @@ class CRUD { } else {} } + // Future post({ + // required String link, + // Map? payload, + // }) async { + // // String? basicAuthCredentials = + // // await storage.read(key: BoxName.basicAuthCredentials); + // var url = Uri.parse( + // link, + // ); + // var response = await http.post( + // url, + // body: payload, + // headers: { + // "Content-Type": "application/x-www-form-urlencoded", + // 'Authorization': + // 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + // }, + // ); + // Log.print('payload: ${payload}'); + // Log.print('response.request: ${response.request}'); + // Log.print('response.body: ${response.body}'); + // var jsonData = jsonDecode(response.body); + // if (response.statusCode == 200) { + // if (jsonData['status'] == 'success') { + // return response.body; + // } else { + // return (jsonData['status']); + // } + // } else { + // return response.statusCode; + // } + // } Future post({ required String link, Map? payload, }) async { - // String? basicAuthCredentials = - // await storage.read(key: BoxName.basicAuthCredentials); - var url = Uri.parse( - link, - ); - var response = await http.post( - url, - body: payload, - headers: { - "Content-Type": "application/x-www-form-urlencoded", - 'Authorization': - 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', - }, - ); - Log.print('payload: ${payload}'); - Log.print('response.request: ${response.request}'); - Log.print('response.body: ${response.body}'); - var jsonData = jsonDecode(response.body); - if (response.statusCode == 200) { - if (jsonData['status'] == 'success') { - return response.body; + var url = Uri.parse(link); + try { + var response = await http.post( + url, + body: payload, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}', + }, + ); + + Log.print('Response.request: ${response.request}'); + Log.print('Payload: $payload'); + // Log.print('Response.statusCode: ${response.statusCode}'); + Log.print('Response.body: ${response.body}'); + + if (response.statusCode == 200) { + try { + var jsonData = jsonDecode(response.body); + + if (jsonData['status'] == 'success') { + return jsonData; + } else { + return jsonData['status']; + } + } catch (e) { + Log.print('JSON parsing error: $e'); + addError(e.toString(), 'crud().post'); + return 'failure'; // Return a recognizable failure string for JSON errors + } } else { - return (jsonData['status']); + Log.print('Non-200 response code: ${response.statusCode}'); + addError( + 'Non-200 response code: ${response.statusCode}', 'crud().post'); + return 'failure'; // Handle unexpected status codes as failures } - } else { - return response.statusCode; + } catch (e) { + Log.print('HTTP request error: $e'); + addError('HTTP request error: $e', 'crud().post'); + return 'failure'; // Handle HTTP request errors as failures } } diff --git a/lib/controller/functions/sms_controller.dart b/lib/controller/functions/sms_controller.dart index fc0ec9c..53e3422 100644 --- a/lib/controller/functions/sms_controller.dart +++ b/lib/controller/functions/sms_controller.dart @@ -29,7 +29,7 @@ class SmsEgyptController extends GetxController { Future sendSmsEgypt(String phone, otp) async { String sender = await getSender(); var body = jsonEncode({ - "username": AppInformation.appName, + "username": 'Sefer', "password": AK.smsPasswordEgypt, "message": "${AppInformation.appName} app code is $otp\ncopy it to app", "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', diff --git a/lib/controller/functions/tts.dart b/lib/controller/functions/tts.dart index c541c4f..5bd1b6a 100644 --- a/lib/controller/functions/tts.dart +++ b/lib/controller/functions/tts.dart @@ -1,49 +1,50 @@ import 'package:SEFER/constant/box_name.dart'; -import 'package:SEFER/main.dart'; import 'package:flutter/material.dart'; import 'package:flutter_tts/flutter_tts.dart'; import 'package:get/get.dart'; +import '../../main.dart'; + class TextToSpeechController extends GetxController { final flutterTts = FlutterTts(); - // Initialize TTS in initState @override void onInit() { super.onInit(); initTts(); } - // Dispose of TTS when controller is closed @override void onClose() { + flutterTts.stop(); // Stop any ongoing TTS super.onClose(); - flutterTts.completionHandler; } - // Function to initialize TTS engine + // Initialize TTS engine with language check Future initTts() async { - String? lang = - WidgetsBinding.instance.platformDispatcher.locale.countryCode; - await flutterTts - .setLanguage(box.read(BoxName.lang).toString()); //'en-US' Set language - // await flutterTts.setLanguage('ar-SA'); //'en-US' Set language - // await flutterTts.setLanguage(lang!); //'en-US' Set language - await flutterTts.setSpeechRate(0.5); // Adjust speech rate - await flutterTts.setVolume(1.0); // Set volume + try { + String langCode = box.read(BoxName.lang) ?? 'en-US'; + bool isAvailable = await flutterTts.isLanguageAvailable(langCode); + + // If language is unavailable, default to 'en-US' + if (!isAvailable) { + langCode = 'en-US'; + } + + await flutterTts.setLanguage(langCode); + await flutterTts.setSpeechRate(0.5); // Adjust speech rate + await flutterTts.setVolume(1.0); // Set volume + } catch (error) { + Get.snackbar('Error', 'Failed to initialize TTS: $error'); + } } // Function to speak the given text Future speakText(String text) async { try { await flutterTts.awaitSpeakCompletion(true); - var result = await flutterTts.speak(text); - if (result == 1) { - // TTS operation has started - // You can perform additional operations here, if needed - } + await flutterTts.speak(text); } catch (error) { - // Handle error gracefully, e.g., show a message Get.snackbar('Error', 'Failed to speak text: $error'); } } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 36e5dbd..a500876 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -769,7 +769,8 @@ class MapPassengerController extends GetxController { if (res != 'failure') { var decode = jsonDecode(res); - if (decode['data']['status'] != 'Apply') { + // if (decode['data']['status'] != 'Apply') { + if (decode['data']['status'] == 'Begin') { timeToPassengerFromDriverAfterApplied = 0; remainingTime = 0; remainingTimeToPassengerFromDriverAfterApplied = 0; @@ -1077,7 +1078,7 @@ class MapPassengerController extends GetxController { // licensePlate = nearestDriverData['car_plate'].toString(); // startCarLocationSearch(box.read(BoxName.carType)); await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 4500); + box.read(BoxName.carType), 3000); // await getCarsLocationByPassengerAndReloadMarker( // box.read(BoxName.carType), 7000); // await getNearestDriverByPassengerLocation(); @@ -1112,26 +1113,28 @@ class MapPassengerController extends GetxController { isDriversTokensSend = false; update(); - await CRUD() - .post(link: "${AppLink.endPoint}/ride/rides/add.php", payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) { + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/add.php", + payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }).then((value) { // List body = [ rideId = jsonDecode(value)['message']; List body = [ @@ -1188,6 +1191,29 @@ class MapPassengerController extends GetxController { Log.print( 'dataCarsLocationByPassenger[data]: ${dataCarsLocationByPassenger['data'][carsOrder]['token']}'); }); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: "${AppLink.endPoint}/ride/rides/add.php", payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + } delayAndFetchRideStatus(rideId, box.read(BoxName.carType)); if (shouldFetch == false) { startTimer(); @@ -1211,10 +1237,11 @@ class MapPassengerController extends GetxController { } } + String driverOrderStatus = 'yet'; bool isDriversTokensSend = false; - confirmRideForAllDriverAvailable() async { + confirmRideForAllDriverAvailable0() async { await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 4500); + box.read(BoxName.carType), 3500); if (dataCarsLocationByPassenger != 'failure') { // driversToken.remove(driverToken); PaymentController paymentController = Get.find(); @@ -1291,33 +1318,38 @@ class MapPassengerController extends GetxController { // Log.print('body: ${body}'); FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderSpeed', - rideId.toString(), - dataCarsLocationByPassenger['data'][i]['token'].toString(), - body, - 'order.wav'); + 'OrderSpeed', + rideId.toString(), + dataCarsLocationByPassenger['data'][i]['token'].toString(), + body, + 'order.wav', + ); + driverOrderStatus = 'recive'; } }); (rideId); // - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + } delayAndFetchRideStatusForAllDriverAvailable(rideId); update(); @@ -1330,6 +1362,344 @@ class MapPassengerController extends GetxController { } } + Set notifiedDrivers = {}; + + confirmRideForAllDriverAvailable() async { + // Fetch car locations + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + + // Ensure dataCarsLocationByPassenger is not 'failure' or null + if (dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null) { + // Check if 'data' key exists and is not null + if (dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null) { + PaymentController paymentController = Get.find(); + rideConfirm = true; + shouldFetch = true; + isBottomSheetShown = false; + timeToPassengerFromDriverAfterApplied = 60; + + // Add ride to database + await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/add.php", + payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }).then((value) { + if (value is String) { + final parsedValue = jsonDecode(value); + rideId = parsedValue['message']; + } else if (value is Map) { + rideId = value['message']; + } else { + Log.print('Unexpected response type: ${value.runtimeType}'); + } + // Log.print('value: ${value}'); + // rideId = jsonDecode(value)['message']; + // rideId = jsonDecode(value)['message'].toString(); + + // Timer for 5 iterations, runs every 2 seconds + int iteration = 0; + Timer.periodic(const Duration(seconds: 2), (timer) async { + if (iteration >= 5) { + timer.cancel(); + return; + } + iteration++; + + // Reload driver locations + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + + // Ensure dataCarsLocationByPassenger and data key are still valid + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null) { + // Notify only new drivers + for (var driverData in dataCarsLocationByPassenger['data']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); + + // Prepare body payload for notification + List body = [ + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + totalPassenger.toStringAsFixed(2), + totalDriver.toStringAsFixed(2), + durationToRide.toString(), + distance.toStringAsFixed(2), + driverId, + box.read(BoxName.passengerID).toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.tokenFCM).toString(), + box.read(BoxName.phone).toString(), + durationByPassenger.toString(), + distanceByPassenger.toString(), + paymentController.isWalletChecked.toString(), + driverData['token'].toString(), + durationToPassenger.toString(), + rideId, + rideTimerBegin.toString(), + driverId, + durationToRide.toString(), + Get.find().wayPoints.length > 1 + ? 'haveSteps' + : 'startEnd', + placesCoordinate[0], + placesCoordinate[1], + placesCoordinate[2], + placesCoordinate[3], + placesCoordinate[4], + costForDriver.toStringAsFixed(2), + (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + ? double.parse(box.read(BoxName.passengerWalletTotal)) + .toStringAsFixed(2) + : '0'), + box.read(BoxName.email).toString(), + data[0]['start_address'], + data[0]['end_address'], + box.read(BoxName.carType), + kazan.toStringAsFixed(0), + passengerRate.toStringAsFixed(2), + ]; + + // Send notification to the driver + FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderSpeed', + rideId, + driverData['token'].toString(), + body, + 'order.wav', + ); + } + } + } + }); + }); + + // Check for additional server endpoint + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + } + delayAndFetchRideStatusForAllDriverAvailable(rideId); + update(); + } else { + // Show dialog if no drivers found in data key + MyDialog().getDialog("No Car or Driver Found in your area.".tr, + "No Car or Driver Found in your area.".tr, () { + Get.back(); + Get.offAll(const MapPagePassenger()); + }); + } + } else { + // Show dialog if dataCarsLocationByPassenger is 'failure' or null + MyDialog().getDialog("No Car or Driver Found in your area.".tr, + "No Car or Driver Found in your area.".tr, () { + Get.back(); + Get.offAll(const MapPagePassenger()); + }); + } + } + + confirmRideForAllDriverAvailable1() async { + int attempts = 0; + const int maxAttempts = 4; + const Duration delayDuration = Duration(seconds: 2); + + // Initial data fetch + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger != 'failure') { + PaymentController paymentController = Get.find(); + rideConfirm = true; + shouldFetch = true; + isBottomSheetShown = false; + timeToPassengerFromDriverAfterApplied = 60; + + // Create a set to keep track of notified driver IDs + Set notifiedDriverIds = {}; + + // Send the initial ride request once + rideId = await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/add.php", + payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }).then((value) => jsonDecode(value)['message']); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": //'${data[0]['start_address']}', + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": //'${data[0]['end_address']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder] + ['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }); + } + // Add the initially available drivers to the notified set + for (var driver in dataCarsLocationByPassenger['data']) { + notifiedDriverIds.add(driver['driver_id'].toString()); + } + + // Periodically check for new drivers + Timer.periodic(delayDuration, (Timer timer) async { + attempts++; + + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + + if (dataCarsLocationByPassenger != 'failure') { + // Check for new drivers and notify them + for (var driver in dataCarsLocationByPassenger['data']) { + String driverId = driver['driver_id'].toString(); + + // Only notify new drivers + if (!notifiedDriverIds.contains(driverId)) { + notifiedDriverIds.add(driverId); + + // Prepare notification body + List body = [ + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + totalPassenger.toStringAsFixed(2), + totalDriver.toStringAsFixed(2), + durationToRide.toString(), + distance.toStringAsFixed(2), + driverId, + box.read(BoxName.passengerID).toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.tokenFCM).toString(), + box.read(BoxName.phone).toString(), + durationByPassenger.toString(), + distanceByPassenger.toString(), + paymentController.isWalletChecked.toString(), + driver['token'].toString(), + durationToPassenger.toString(), + rideId, + rideTimerBegin.toString(), + durationToRide.toString(), + Get.find().wayPoints.length > 1 + ? 'haveSteps' + : 'startEnd', + placesCoordinate[0], + placesCoordinate[1], + placesCoordinate[2], + placesCoordinate[3], + placesCoordinate[4], + costForDriver.toStringAsFixed(2), + double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + ? double.parse(box.read(BoxName.passengerWalletTotal)) + .toStringAsFixed(2) + : '0', + box.read(BoxName.email).toString(), + data[0]['start_address'], + data[0]['end_address'], + box.read(BoxName.carType), + kazan.toStringAsFixed(0), + passengerRate.toStringAsFixed(2), + ]; + + // Send notification to the new driver + FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderSpeed', + rideId.toString(), + driver['token'].toString(), + body, + 'order.wav', + ); + } + } + } else { + MyDialog().getDialog("No Car or Driver Found in your area.".tr, + "No Car or Driver Found in your area.".tr, () { + Get.back(); + Get.offAll(const MapPagePassenger()); + }); + } + + // Stop after max attempts + if (attempts >= maxAttempts) { + timer.cancel(); + } + }); + } else { + MyDialog().getDialog("No Car or Driver Found in your area.".tr, + "No Car or Driver Found in your area.".tr, () { + Get.back(); + Get.offAll(const MapPagePassenger()); + }); + } + } + icreaseForSameRideAndDelay() { PaymentController paymentController = Get.find(); rideConfirm = true; @@ -1398,19 +1768,20 @@ class MapPassengerController extends GetxController { String res = await getRideStatus(rideId); Log.print('tick: $tick'); - - if ((res.toString() == 'waiting' || res.toString() == 'Refused') && + String rideStatusDelayed = res.toString(); + if ((rideStatusDelayed == 'waiting' || + rideStatusDelayed == 'Refused') && tick >= 15) { timer.cancel(); // Stop the current timer showAndResearchForCaptain(); //TODO add to wait - await getCarsLocationByPassengerAndReloadMarker(carType, 4500); + await getCarsLocationByPassengerAndReloadMarker(carType, 3000); // await getNearestDriverByPassengerLocationAPIGOOGLE(); // getCarForFirstConfirm(carType); confirmRideForAllDriverAvailable(); // delayAndFetchRideStatusForAllDriverAvailable(rideId); - } else if (res.toString() == 'Apply') { - Log.print('res.toString() == Apply: ${res.toString()}'); + } else if (rideStatusDelayed == 'Apply') { + Log.print('rideStatusDelayed == Apply: ${rideStatusDelayed}'); // todo play sound Get.find() .playSoundFromAssets('assets/start.wav'); @@ -1422,7 +1793,7 @@ class MapPassengerController extends GetxController { isSearchingWindow = false; update(); startTimerFromDriverToPassengerAfterApplied(); - } else if (res.toString() == 'Refused') { + } else if (rideStatusDelayed == 'Refused') { statusRide = 'Refused'; if (isDriversTokensSend == false) { confirmRideForAllDriverAvailable(); @@ -1473,17 +1844,22 @@ class MapPassengerController extends GetxController { attemptCounter++; tick++; var res = await getRideStatus(rideId); + String rideStatusDelayed = res.toString(); - if (res.toString() == 'Apply' || res.toString() == 'Applied') { + if (rideStatusDelayed == 'Apply' || rideStatusDelayed == 'Applied') { await getUpdatedRideForDriverApply(rideId); isApplied = true; shouldFetch = false; statusRide = 'Apply'; rideConfirm = false; isSearchingWindow = false; + + startTimer(); + update(); startTimerFromDriverToPassengerAfterApplied(); - } else if (attemptCounter >= maxAttempts && statusRide != 'Cancel') { + } else if (attemptCounter >= maxAttempts && + rideStatusDelayed != 'Cancel') { shouldFetch = false; // If the status is still not "Apply" after 15 attempts MyDialog().getDialog('upgrade price'.tr, @@ -1573,7 +1949,7 @@ class MapPassengerController extends GetxController { reSearchAfterCanceledFromDriver() async { await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 4500); + box.read(BoxName.carType), 3000); confirmRideForAllDriverAvailable(); shouldFetch = true; // Stop further fetches @@ -1616,8 +1992,9 @@ class MapPassengerController extends GetxController { } Future getRideStatus(String rideId) async { - final response = - await CRUD().get(link: AppLink.getRideStatus, payload: {'id': rideId}); + final response = await CRUD().get( + link: "${AppLink.endPoint}/ride/rides/getRideStatus.php", + payload: {'id': rideId}); return jsonDecode(response)['data']; } @@ -1638,7 +2015,7 @@ class MapPassengerController extends GetxController { make = response['data']['make']; licensePlate = response['data']['car_plate']; firstName = response['data']['first_name']; - driverName = response['data']['driverName']; + driverName = response['data']['driverName'].toString().split(' ')[0]; driverToken = response['data']['token']; Log.print('driverToken updated: $driverToken'); carYear = response['data']['year']; @@ -1646,10 +2023,11 @@ class MapPassengerController extends GetxController { } // driversToken.remove(driverToken); // for (var i = 1; i < driversToken.length; i++) { - FirebaseMessagesController().sendNotificationToAnyWithoutData( + FirebaseMessagesController().sendNotificationToDriverMAP( 'Order Applied'.tr, '$driverName Apply order\nTake attention in other order'.tr, driverToken, + [], 'start.wav', ); // } @@ -1871,6 +2249,7 @@ class MapPassengerController extends GetxController { longitude >= 31.215009 && longitude <= 31.532186) { box.write(BoxName.serverChosen, AppLink.seferCairoServer); + return 'Cairo'; } else if (latitude >= 29.904975 && latitude <= 30.143372 && @@ -2380,12 +2759,13 @@ class MapPassengerController extends GetxController { double tripDurationInMinutes = durationToRide / 6; int loopCount = tripDurationInMinutes.ceil(); // If the trip duration is less than or equal to 50 minutes, then break the loop. + clearMarkersExceptStartEnd(); for (var i = 0; i < loopCount; i++) { // Wait for 50 seconds. await Future.delayed(const Duration(seconds: 4)); - if (rideTimerBegin == true && statusRide == 'Apply') { - await getDriverCarsLocationToPassengerAfterApplied(); - } + // if (rideTimerBegin == true && statusRide == 'Apply') { + await getDriverCarsLocationToPassengerAfterApplied(); + // } reloadMarkerDriverCarsLocationToPassengerAfterApplied(); } } @@ -2517,79 +2897,66 @@ class MapPassengerController extends GetxController { } Future cancelRide() async { - if (rideConfirm == false && statusRide == 'Apply' || - statusRide == 'Applied' || - statusRide == 'waiting') { - clearPlacesDestination(); - clearPolyline(); - // clearPolylineAll(); - data = []; - changeCancelRidePageShow(); - if (rideId != 'yet') { - await CRUD().post(link: AppLink.updateDriverOrder, payload: { - "order_id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - FirebaseMessagesController().sendNotificationToDriverMAP( - 'Cancel Trip', - 'Trip Cancelled'.tr, - driverToken, - [], - 'cancel.wav', - ); - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post( - link: "$AppLink.endPoint/ride/driver_order/update.php", - payload: { - "order_id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - } - await CRUD().post(link: AppLink.updateRides, payload: { + // if (rideConfirm == true || + // statusRide == 'Apply' || + // statusRide == 'Applied' || + // statusRide == 'wait' || + // statusRide == 'waiting') { + clearPlacesDestination(); + clearPolyline(); + // clearPolylineAll(); + data = []; + changeCancelRidePageShow(); + if (rideId != 'yet') { + Log.print('cancelRide: 1'); + FirebaseMessagesController().sendNotificationToDriverMAP( + 'Cancel Trip'.tr, + 'Trip Cancelled'.tr, + driverToken, + [], + 'cancel.wav', + ); + + await Future.wait([ + CRUD().post(link: AppLink.updateRides, payload: { "id": rideId.toString(), // Convert to String "status": 'Cancel' - }); - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post( - link: "${AppLink.endPoint}/ride/rides/update.php", - payload: { - "id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - } - + }), + CRUD().post(link: AppLink.updateDriverOrder, payload: { + "order_id": rideId.toString(), // Convert to String + "status": 'Cancel' + }), CRUD().post(link: AppLink.updateWaitingTrip, payload: { "id": rideId.toString(), // Convert to String "status": 'Cancel' + }), + ]); + + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: "${AppLink.endPoint}/ride/driver_order/update.php", + payload: { + "order_id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); + CRUD() + .post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' }); - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post( - link: - "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", - payload: { - "id": rideId.toString(), // Convert to String - "status": 'Cancel' - }); - } - - print('Cancel'); + CRUD().post( + link: + "${AppLink.endPoint}/ride/notificationCaptain/updateWaitingTrip.php", + payload: { + "id": rideId.toString(), // Convert to String + "status": 'Cancel' + }); } - - Get.offAll(const MapPagePassenger()); - } else { - clearPlacesDestination(); - clearPolyline(); - data = []; - // await CRUD().post(link: AppLink.updateDriverOrder, payload: { - // "order_id": rideId.toString(), // Convert to String - // "status": 'Cancel' - // }); - // await CRUD().post(link: AppLink.updateRides, payload: { - // "id": rideId.toString(), // Convert to String - // "status": 'Cancel' - // }); - Get.offAll(const MapPagePassenger()); + print('Cancel'); + // } } + Future.delayed(const Duration(seconds: 1)); + Get.offAll(() => const MapPagePassenger()); } void changePickerShown() { @@ -2942,28 +3309,28 @@ class MapPassengerController extends GetxController { ? LatLng(_locationData.latitude!, _locationData.longitude!) : null)!; getLocationArea(passengerLocation.latitude, passengerLocation.longitude); + Log.print('AppLink.endPoint: ${AppLink.endPoint}'); + // Log.print('BoxName.serverChosen: ${box.read(BoxName.serverChosen)}'); + newStartPointLocation = passengerLocation; + Log.print('passengerLocation: ${passengerLocation}'); speed = _locationData.speed!; // //print location details isLoading = false; update(); } - LatLngBounds calculateBounds( - double centerLat, double centerLng, double radius) { - // double radius = 4000; // 10 km in meters + LatLngBounds calculateBounds(double lat, double lng, double radiusInMeters) { + const double earthRadius = 6378137.0; // Earth's radius in meters - southwest = LatLng( - centerLat - (radius / 111000), - centerLng - (radius / (111000 * cos(centerLat))), + double latDelta = radiusInMeters / earthRadius * (180 / pi); + double lngDelta = + radiusInMeters / (earthRadius * cos(pi * lat / 180)) * (180 / pi); + + return LatLngBounds( + southwest: LatLng(lat - latDelta, lng - lngDelta), + northeast: LatLng(lat + latDelta, lng + lngDelta), ); - - northeast = LatLng( - centerLat + (radius / 111000), - centerLng + (radius / (111000 * cos(centerLat))), - ); - - return LatLngBounds(southwest: southwest, northeast: northeast); } GoogleMapController? mapController; @@ -2992,8 +3359,6 @@ class MapPassengerController extends GetxController { bool reloadStartApp = false; int reloadCount = 0; startMarkerReloading() async { - Log.print('AppLink.endPoint: ${AppLink.endPoint}'); - if (reloadStartApp == false) { Timer.periodic(const Duration(seconds: 5), (timer) async { reloadCount++; @@ -3233,7 +3598,7 @@ class MapPassengerController extends GetxController { remainingTime = 25; //to make cancel every call // startCarLocationSearch(box.read(BoxName.carType)); await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 7000); + box.read(BoxName.carType), 5000); // await getCarsLocationByPassengerAndReloadMarker(); var coordDestination = destination.split(','); double latPassengerDestination = double.parse(coordDestination[0]); @@ -4093,55 +4458,77 @@ class MapPassengerController extends GetxController { try { // Prepare trip data Map tripData = { - 'id': driver['id'], + 'id': driver['id'].toString(), // Ensure the id is a string 'phone': driver['phone'], 'gender': driver['gender'], - 'name': driver['name'], + 'name': driver['NAME'], 'name_english': driver['name_english'], 'address': driver['address'], 'religion': driver['religion'], - 'age': driver['age'], + 'age': driver['age'].toString(), // Convert age to String 'education': driver['education'], 'license_type': driver['license_type'], 'national_number': driver['national_number'], 'car_plate': driver['car_plate'], 'make': driver['make'], 'model': driver['model'], - 'year': driver['year'], + 'year': driver['year'].toString(), // Convert year to String 'color': driver['color'], 'color_hex': driver['color_hex'], 'displacement': driver['displacement'], 'fuel': driver['fuel'], 'token': driver['token'], - 'rating': driver['rating'], - 'countRide': driver['countRide'], + 'rating': driver['rating'].toString(), // Convert rating to String + 'countRide': + driver['countRide'].toString(), // Convert countRide to String 'passengerId': box.read(BoxName.passengerID), 'timeSelected': tripDateTime.toIso8601String(), - 'status': 'pending', // Or other appropriate status + 'status': 'pending', }; + // Log.print('tripData: $tripData'); // Send data to server var response = await CRUD().post(link: AppLink.addMishwari, payload: tripData); + // Log.print('response: $response'); if (response != 'failure') { // Trip saved successfully Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); + var id = response['message'].toString(); if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post( + await CRUD().post( link: "${AppLink.endPoint}/ride/mishwari/add.php", payload: tripData); } - // Set up local notification + // Optionally, set up local notification or send a push notification // await setLocalNotification(tripDateTime); - - // Send notification to driver - // await FirebaseMessagesController().sendNotificationToDriverMAP(); + await FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderVIP', + rideId.toString(), + driver['token'].toString(), + [ + id, + driver['id'], + passengerLocation.latitude.toString(), + passengerLocation.longitude.toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.phone).toString(), + box.read(BoxName.email).toString(), + box.read(BoxName.passengerPhotoUrl).toString(), + box.read(BoxName.tokenFCM).toString(), + driver['token'].toString(), + ], + 'order.wav'); } else { throw Exception('Failed to save trip'); } } catch (e) { - Get.snackbar('Error'.tr, 'Failed to book trip: $e'.tr); + // Show error message with more details for debugging + Get.snackbar('Error'.tr, 'Failed to book trip: $e'.tr, + backgroundColor: AppColor.redColor); + Log.print('Error: $e'); } } @@ -4253,8 +4640,8 @@ class MapPassengerController extends GetxController { addCustomStepIcon(); addCustomStartIcon(); addCustomEndIcon(); - addToken(); - getLocation(); + // addToken(); + await getLocation(); getPassengerLocationUniversity(); _initializePolygons(); // await addToken(); diff --git a/lib/controller/home/profile/complaint_controller.dart b/lib/controller/home/profile/complaint_controller.dart index b3f774f..3e3aa42 100644 --- a/lib/controller/home/profile/complaint_controller.dart +++ b/lib/controller/home/profile/complaint_controller.dart @@ -1,7 +1,10 @@ import 'dart:convert'; +import 'dart:io'; +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:http/http.dart' as http; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/links.dart'; @@ -9,11 +12,38 @@ import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/functions/crud.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; +import 'package:http_parser/http_parser.dart'; +import 'package:mime/mime.dart'; + +import '../../../constant/api_key.dart'; +import '../../../print.dart'; class ComplaintController extends GetxController { bool isLoading = false; final formKey = GlobalKey(); final complaintController = TextEditingController(); + final suggestionController = TextEditingController(); + List feedBack = []; + @override + void onInit() { + super.onInit(); + getLatestRidesForPassengers(); + } + + getLatestRidesForPassengers() async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.getFeedBack, payload: { + 'passengerId': box.read(BoxName.passengerID).toString(), + }); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + feedBack = d; + } + + isLoading = false; + update(); + } void addComplaint() async { isLoading = true; @@ -34,11 +64,175 @@ class ComplaintController extends GetxController { title: 'Ok'.tr, onPressed: () { Get.back(); - Get.back(); + // Get.back(); })); } isLoading = false; update(); } + + var isUploading = false.obs; + var uploadSuccess = false.obs; + late String audioLink = ''; + Future uploadAudioFile(File audioFile) async { + try { + isUploading.value = true; + + // Prepare the file upload + var uri = Uri.parse('${AppLink.seferCairoServer}/upload_audio.php'); + var request = http.MultipartRequest('POST', uri); + + // Add the file to the request with MIME type + var mimeType = lookupMimeType(audioFile.path); + request.headers.addAll({ + 'Authorization': + 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', + }); + request.files.add( + await http.MultipartFile.fromPath( + 'audio', + audioFile.path, + contentType: mimeType != null ? MediaType.parse(mimeType) : null, + ), + ); + + // Send the request + var response = await request.send(); + + // Convert response to string for parsing + var responseBody = await http.Response.fromStream(response); + + // After the upload request + if (response.statusCode == 200) { + var jsonResponse = jsonDecode(responseBody.body); + + if (jsonResponse['status'] == 'Audio file uploaded successfully.') { + uploadSuccess.value = true; + audioLink = jsonResponse['link']; // Get the audio link + Get.back(); + Get.snackbar('Success'.tr, 'Audio uploaded successfully.'.tr, + backgroundColor: const Color.fromARGB(255, 89, 185, 115)); + } else { + uploadSuccess.value = false; + } + } else { + uploadSuccess.value = false; + } + } catch (e) { + uploadSuccess.value = false; + } finally { + isUploading.value = false; + } + } + + var customerServiceSolutions; + var passengerReport; + var driverReport; + var isloading = false; + Future geminiAudio(payload, String audioLink, String complain) async { + String prompt = ''' + Analyze the following complaint between a passenger and driver in a ride-hailing service. The complaint includes an audio link for reference. Provide two possible solutions for customer service to resolve the issue, and generate a detailed report for both the passenger and the driver. + + Complaint details: + - Passenger: $complain + - Driver: [Driver's complaint] + - Ride Information: {ride details such as start_location, end_location, date, price, status, and rating details} + - Audio Link: [$audioLink] + + Output the result in JSON format with the following structure: + { + "customerServiceSolutions": [ + "solution1", + "solution2" + ], + "passengerReport": { + "solution": "Passenger's solution" if passenger right, + "complaint": "Passenger's complaint", + "rideDetails": {detailed ride info} + }, + "driverReport": { + "complaint": "Driver's complaint", + "rideDetails": {detailed ride info} + } + } the response in arabic language with egypt + '''; + + var requestBody = jsonEncode({ + "contents": [ + { + "parts": [ + {"text": "$payload $prompt"} + ] + } + ], + "generationConfig": { + "temperature": 1, + "topK": 64, + "topP": 0.95, + "maxOutputTokens": 8192, + "stopSequences": [] + }, + "safetySettings": [ + { + "category": "HARM_CATEGORY_HARASSMENT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_HATE_SPEECH", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + }, + { + "category": "HARM_CATEGORY_DANGEROUS_CONTENT", + "threshold": "BLOCK_MEDIUM_AND_ABOVE" + } + ] + }); + + final response = await http.post( + Uri.parse( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro:generateContent?key=${AK.geminiApi}'), + headers: {'Content-Type': 'application/json'}, + body: requestBody, + ); + + if (response.statusCode == 200) { + var responseData = jsonDecode(response.body); + var result = responseData['candidates'][0]['content']['parts'][0]['text']; + Log.print('result: ${result}'); + + // Clean up the result by removing surrounding backticks if they exist + result = result.replaceAll(RegExp(r'^```json\s*|\s*```$'), ''); + + // Attempt to decode the cleaned result as JSON + try { + var jsonResult = jsonDecode(result); + + // Access customer service solutions and reports for both passenger and driver + customerServiceSolutions = jsonResult['customerServiceSolutions']; + passengerReport = jsonResult['passengerReport']; + driverReport = jsonResult['driverReport']; + update(); + // Use the data accordingly + // For example, log the reports or display them in a UI dialog + + update(); + } catch (e) { + MyDialog().getDialog( + 'Error'.tr, + 'Unable to parse the response as JSON. Please check the format and try again.' + .tr, () { + Get.back(); + }); + } + } else { + Get.snackbar( + 'Error', "Request failed with status: ${response.statusCode}", + backgroundColor: AppColor.redColor); + } + } } diff --git a/lib/controller/home/profile/invit_controller.dart b/lib/controller/home/profile/invit_controller.dart new file mode 100644 index 0000000..50ed888 --- /dev/null +++ b/lib/controller/home/profile/invit_controller.dart @@ -0,0 +1,280 @@ +import 'dart:convert'; + +import 'package:SEFER/constant/box_name.dart'; +import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/links.dart'; +import 'package:SEFER/controller/functions/crud.dart'; +import 'package:SEFER/controller/home/payment/captain_wallet_controller.dart'; +import 'package:SEFER/controller/payment/payment_controller.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_contacts/contact.dart'; +import 'package:flutter_contacts/flutter_contacts.dart'; +import 'package:get/get.dart'; +import 'package:share/share.dart'; + +import '../../../main.dart'; +import '../../../views/widgets/my_dialog.dart'; +import '../../functions/launch.dart'; +import '../../notification/notification_captain_controller.dart'; + +class InviteController extends GetxController { + final TextEditingController invitePhoneController = TextEditingController(); + List driverInvitationData = []; + List driverInvitationDataToPassengers = []; + String? couponCode; + String? driverCouponCode; + + int selectedTab = 0; + PassengerStats passengerStats = PassengerStats(); + void updateSelectedTab(int index) { + selectedTab = index; + update(); + } + + Future shareCouponCode() async { + // TODO: Implement sharing functionality + // You can use share_plus package to share the coupon code + } + Future shareDriverCode() async { + if (driverCouponCode != null) { + final String shareText = ''' +Join SEFER as a driver using my referral code! +Use code: $driverCouponCode +Download the SEFER Driver app now and earn rewards! +'''; + await Share.share(shareText); + } + } + + Future sharePassengerCode() async { + if (couponCode != null) { + final String shareText = ''' +Get a discount on your first SEFER ride! +Use my referral code: $couponCode +Download the SEFER app now and enjoy your ride! +'''; + await Share.share(shareText); + } + } + + @override + void onInit() { + super.onInit(); + // fetchDriverStats(); + } + + void fetchDriverStats() async { + try { + var response = await CRUD().get(link: AppLink.getInviteDriver, payload: { + "driverId": box.read(BoxName.driverID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationData = data['message']; + update(); + } + } catch (e) {} + } + + void fetchDriverStatsPassengers() async { + try { + var response = await CRUD() + .get(link: AppLink.getDriverInvitationToPassengers, payload: { + "driverId": box.read(BoxName.passengerID), + }); + if (response != 'failure') { + var data = jsonDecode(response); + driverInvitationDataToPassengers = data['message']; + update(); + } + } catch (e) {} + } + + void selectPhone(String phone) { + if (box.read(BoxName.countryCode) == 'Egypt') { + invitePhoneController.text = phone; + update(); + Get.back(); + } + } + + Future saveContactsToServer() async { + try { + // TODO: Implement the actual server upload logic here + // Simulating a server request + await Future.delayed(Duration(seconds: 2)); + Get.snackbar('Success'.tr, + '${selectedContacts.length} contacts saved to server'.tr); + } catch (e) { + Get.snackbar('Error'.tr, + 'An error occurred while saving contacts to server: $e'.tr); + } + } + + List contacts = []; + List selectedContacts = []; + RxList> contactMaps = >[].obs; + + Future pickContacts() async { + try { + if (await FlutterContacts.requestPermission(readonly: true)) { + final List fetchedContacts = + await FlutterContacts.getContacts(withProperties: true); + contacts = fetchedContacts; + + // Convert contacts to a list of maps + contactMaps.value = fetchedContacts.map((contact) { + return { + 'name': contact.displayName, + 'phones': + contact.phones.map((phone) => phone.normalizedNumber).toList(), + 'emails': contact.emails.map((email) => email.address).toList(), + }; + }).toList(); + update(); + + if (contacts.isEmpty) { + Get.snackbar('No contacts available'.tr, + 'Please add contacts to your phone.'.tr); + } + } else { + Get.snackbar('Permission denied'.tr, + 'Contact permission is required to pick contacts'.tr); + } + } catch (e) { + Get.snackbar( + 'Error'.tr, 'An error occurred while picking contacts: $e'.tr); + } + } + + void onSelectPassengerInvitation(int index) async { + MyDialog().getDialog( + driverInvitationDataToPassengers[index]['countOfInvitDriver'] < 2 + ? '${'When'.tr} ${driverInvitationDataToPassengers[index]['passengerName']} ${"complete, you can claim your gift".tr} ' + : 'You deserve the gift'.tr, + '${driverInvitationDataToPassengers[index]['passengerName']} ${driverInvitationDataToPassengers[index]['countOfInvitDriver']} / 2 ${'Trip'.tr}', + () async { + if (driverInvitationDataToPassengers[index]['countOfInvitDriver'] < 2) { + Get.back(); + } else { + // Claim the gift if 100 trips are completed + if (driverInvitationDataToPassengers[index]['isGiftToken'] + .toString() == + '0') { + Get.back(); + // Add wallet to the inviter + await Get.find().addPassengersWallet('20'); + // add for invitor too + // await Get.find().addDriverWalletToInvitor( + // 'paymentMethod', + // driverInvitationData[index]['driverInviterId'], + // '50'); + // Update invitation as claimed + await CRUD().post( + link: AppLink.updatePassengerGift, + payload: {'id': driverInvitationDataToPassengers[index]['id']}, + ); + // Notify the inviter + NotificationCaptainController().addNotificationCaptain( + driverInvitationDataToPassengers[index]['passengerInviterId'] + .toString(), + "You have got a gift for invitation".tr, + '${"You have 20".tr} ${'LE'}', + false, + ); + } else { + Get.back(); + MyDialog().getDialog( + "You have got a gift".tr, + "Share the app with another new passenger".tr, + () { + Get.back(); + }, + ); + } + } + }, + ); + } + + savePhoneToServer() async { + for (var i = 0; i < contactMaps.length; i++) { + var phones = contactMaps[i]['phones']; + if (phones != null && phones.isNotEmpty && phones[0].isNotEmpty) { + var res = await CRUD().post(link: AppLink.savePhones, payload: { + "name": contactMaps[i]['name'] ?? 'none', + "phones": phones[0] ?? 'none', + "phones2": phones.join(', ') ?? + 'none', // Convert List to a comma-separated string + }); + if (res != 'failure') {} + } else {} + } + } + + String formatPhoneNumber(String input) { + // Remove any non-digit characters + String digitsOnly = input.replaceAll(RegExp(r'\D'), ''); + + // Ensure the number starts with the country code + if (digitsOnly.startsWith('20')) { + digitsOnly = digitsOnly.substring(1); + } + + return digitsOnly; + } + + void sendInviteToPassenger() async { + if (invitePhoneController.text.isEmpty) { + Get.snackbar('Error', 'Please enter an phone address'.tr); + return; + } + + // try { + String phoneNumber = formatPhoneNumber(invitePhoneController.text); + + var response = + await CRUD().post(link: AppLink.addInvitationPassenger, payload: { + "driverId": box.read(BoxName.passengerID), + "inviterPassengerPhone": '+2$phoneNumber' + }); + + if (response != 'failure') { + var d = jsonDecode(response); + Get.snackbar('Success', 'Invite sent successfully'.tr); + + String message = '${'*SEFER APP CODE*'.tr}\n\n' + '${"Use this code in registration".tr}\n' + '${"To get a gift for both".tr}\n\n' + '${"The period of this code is 1 hour".tr}\n\n' + '${'before'.tr} *${d['message']['expirationTime'].toString()}*\n\n' + '_*${d['message']['inviteCode'].toString()}*_\n\n' + '${"Install our app:".tr}\n' + '*Android:* https://play.google.com/store/apps/details?id=com.mobileapp.store.ride\n\n\n' + '*iOS:* https://apps.apple.com/us/app/sefer/id6458734951'; + + launchCommunication('whatsapp', '+2$phoneNumber', message); + + invitePhoneController.clear(); + } else { + Get.snackbar('Error'.tr, "Invite code already used".tr, + backgroundColor: AppColor.redColor, + duration: const Duration(seconds: 4)); + } + // } catch (e) { + // Get.snackbar('Error', 'An error occurred'.tr); + // } + } +} + +class PassengerStats { + final int totalInvites; + final int activeUsers; + final double totalEarnings; + + PassengerStats({ + this.totalInvites = 0, + this.activeUsers = 0, + this.totalEarnings = 0.0, + }); +} diff --git a/lib/controller/home/profile/promos_controller.dart b/lib/controller/home/profile/promos_controller.dart index e09fefc..8fe0e36 100644 --- a/lib/controller/home/profile/promos_controller.dart +++ b/lib/controller/home/profile/promos_controller.dart @@ -1,10 +1,11 @@ import 'dart:convert'; +import 'package:SEFER/constant/box_name.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/links.dart'; -import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/functions/crud.dart'; -import 'package:SEFER/views/widgets/elevated_btn.dart'; + +import '../../../main.dart'; class PromosController extends GetxController { List promoList = []; @@ -17,7 +18,9 @@ class PromosController extends GetxController { } Future getPromoByToday() async { - var res = await CRUD().get(link: AppLink.getPromoBytody, payload: {}); + var res = await CRUD().get(link: AppLink.getPromoBytody, payload: { + 'passengerID': box.read(BoxName.passengerID).toString(), + }); if (res.toString() == 'failure') { // Get.defaultDialog( // title: 'No Promo for today .'.tr, diff --git a/lib/controller/local/local_controller.dart b/lib/controller/local/local_controller.dart index 8eb2a76..1f61cb8 100644 --- a/lib/controller/local/local_controller.dart +++ b/lib/controller/local/local_controller.dart @@ -94,7 +94,7 @@ class LocaleController extends GetxController { @override void onInit() { - String storedLang = box.read(BoxName.lang) ?? ""; + String storedLang = box.read(BoxName.lang) ?? "ar"; switch (storedLang) { case "ar": language = const Locale("ar"); diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 5a8e001..64f8e7a 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -56,8 +56,7 @@ class MyTranslation extends Translations { "I want to order for someone else": "أريد أن أطلب لشخص آخر", "Cancel Trip from driver": "إلغاء الرحلة من السائق", "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", - "We will look for a new driver.\nPlease wait.": - "سنبحث عن سائق جديد.\nمن فضلك انتظر.", + "upgrade price": "رفع السعر", 'airport': 'مطار', "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": @@ -234,15 +233,76 @@ iOS [https://getapp.cc/app/6458734951] "Capture an Image of Your ID Document front": "التقط صورة للواجهة الأمامية لوثيقة هويتك", "NationalID": "الرقم القومي", + 'You can share the SEFER App with your friends and earn rewards for rides they take using your code': + 'يمكنك مشاركة تطبيق SEFER مع أصدقائك وكسب مكافآت من الرحلات التي يقومون بها باستخدام كودك.', "FullName": "الاسم الكامل", + "No invitation found yet!": "لم يتم العثور على دعوات حتى الآن!", "InspectionResult": "نتيجة الفحص", - "Criminal Record": "السجل الجنائي", + "Criminal Record": "السجل الجنائي", 'Share App': 'شارك التطبيق', "The email or phone number is already registered.": "البريد الإلكتروني أو رقم الهاتف مسجل بالفعل.", 'To become a ride-sharing driver on the Sefer app, you need to upload your driver\'s license, ID document, and car registration document. Our AI system will instantly review and verify their authenticity in just 2-3 minutes. If your documents are approved, you can start working as a driver on the Sefer app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.': 'لِتُصْبِحَ سَائِقَاً لِلرُّكوبِ المُشْتَرَكِ عَلَى تَطْبِيق سَفَر، يَجِبُ عَلَيْكَ تَحْمِيل رُخْصَةِ القِيَادَةِ، وَثِيقَةِ الهُوِيَّةِ، وَوَثِيقَةَ تَسْجِيل السَّيَّارَةِ. سَيَقُومُ نِظَامُ الذَّكَاءِ الاِصْطِنَاعِيِّ لَدَيْنَا بِمُرَاجَعَةِ وَتَحْقِيقِ صِحَّةِ الوَثَائِقِ فِي غُضُونِ ٢-٣ دَقَائِقَ فَقَطْ. إِذَا تَمَّتْ المُوَافَقَةُ عَلَى وَثَائِقِكَ، يُمْكِنُكَ البَدْءُ فِي العَمَلِ كَسَائِقٍ عَلَى تَطْبِيق سَفَر. يُرْجَى مُلَاحَظَةُ، تَقْدِيمُ وَثَائِقَ مُزَورَةٍ يُعَدُّ جَرِيمَةً خَطِيرَةً وَقَدْ يَتَرَتَّبُ عَلَيْهِ اِنهَاءُ الحِسَابِ فَوْرِيَّاً وَعَوَاقِبُ قَانُونِيَّة.', "Documents check": "فحص الوثائق", "Driver's License": "رخصة القيادة", + + "for your first registration!": "للتسجيل الأول!", + "Get it Now!": "احصل عليه الآن!", + "before": "قبل", + "Code not approved": "الرمز غير موافق عليه", + "3000 LE": "3000 جنيه مصري", + "Do you have an invitation code from another driver?": + "هل لديك كود دعوة من سائق آخر؟", + "Paste the code here": "الصق الكود هنا", + "No, I don't have a code": "لا، لا أملك كودا", + "Code approved": "تمت الموافقة على الكود", + "Install our app:": "قم بتثبيت تطبيقنا:", + "Invite another driver and both get a gift after he completes 100 trips!": + "ادع صديقًا ليكون سائقًا واحصلا على هدية بعد إكماله 100 مشوار!", + "Share App": "شارك التطبيق", + "Invite": "دعوة", "Are you sure?": "هل أنت متأكد؟", + "This will delete all recorded files from your device.": + "سيؤدي هذا إلى حذف جميع الملفات المسجلة من جهازك.", + "Select a file": "اختر ملفاً", + "Select a File": "اختر ملفاً", "Delete": "حذف", + 'attach audio of complain': 'إرفاق صوت للشكوى', + "Phone Number Check": "فحص رقم الهاتف", + "Drivers received orders": "السائقون استقبلوا الطلبات", + 'No audio files recorded.': 'لا توجد ملفات صوتية مسجلة.', + 'This is for delivery or a motorcycle.': + "هذا للتوصيل أو للدراجة النارية.", + "We will look for a new driver.\nPlease wait.": + "سوف نبحث عن سائق جديد.\nيرجى الانتظار", + "Sefer Reminder": "تطبيق سفر", + "It's time to check the Sefer app!": "حان وقت استخدام تطبيق سفر", + "The email or phone number is already registered.": + "البريد الإلكتروني أو رقم الهاتف مسجل بالفعل.", + "you must insert token code": "يجب إدخال رمز التحقق.", + "Something went wrong. Please try again.": + "حدث خطأ ما. يرجى المحاولة مرة أخرى.", + "This is for delivery or a motorcycle.": + "هذا للتوصيل أو للدراجة النارية.", + "Trip Details": "تفاصيل الرحلة", + 'The context does not provide any complaint details, so I cannot provide a solution to this issue. Please provide the necessary information, and I will be happy to assist you.': + "لا تتوفر تفاصيل الشكوى في السياق، لذا لا أستطيع تقديم حل لهذه المشكلة. يرجى تقديم المعلومات اللازمة، وسأكون سعيدًا بمساعدتك", + 'Submit Your Complaint': "أرسل شكواك", + "Date": "التاريخ", + "Price": "السعر", + "Status": "الحالة", + "Choose from contact": "اختر من جهات الاتصال", + 'attach correct audio': "إرفاق صوت للشكوى", + 'be sure': 'كن متأكدًا', + 'Audio uploaded successfully.': 'تم رفع الصوت بنجاح', + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire": + "مثالي للركاب الذين يبحثون عن أحدث موديلات السيارات مع حرية اختيار أي طريق يرغبون به", + "Share this code with your friends and earn rewards when they use it!": + "شارك هذا الرمز مع أصدقائك واحصل على مكافآت عند استخدامهم له!", + "Enter phone": "أدخل رقم الهاتف", + 'You deserve the gift': "أنت تستحق الهدية", + "complete, you can claim your gift": " يمكنك المطالبة بهديتك", + "When": "‏عندما يكمل", + "Enter driver's phone": "أدخل رقم هاتف السائق", + "Send Invite": "أرسل الدعوة", "Show Invitations": "عرض الدعوات", "License Type": "نوع الرخصة", "National Number": "الرقم الوطني", "Name (Arabic)": "الاسم بالعربي", diff --git a/lib/controller/profile/profile_controller.dart b/lib/controller/profile/profile_controller.dart index 49b759f..e5b893c 100644 --- a/lib/controller/profile/profile_controller.dart +++ b/lib/controller/profile/profile_controller.dart @@ -1,5 +1,7 @@ import 'dart:convert'; +import 'package:SEFER/constant/colors.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; @@ -48,40 +50,41 @@ class ProfileController extends GetxController { } updatField(String columnName, TextInputType type) async { - Get.defaultDialog( - title: '${'Update'.tr} $columnName', - content: Column( - children: [ - SizedBox( - width: Get.width * .7, - child: MyTextForm( - controller: txtController, - label: 'type here'.tr, - hint: 'type here', - type: type) - // TextField( - // controller: txtController, - // decoration: const InputDecoration( - // border: OutlineInputBorder(), hintText: 'type here'), - // ), - + Get.dialog( + CupertinoAlertDialog( + title: Text('${'Update'.tr} $columnName'), + content: Column( + children: [ + const SizedBox(height: 16), // Add spacing between title and input + CupertinoTextField( + controller: txtController, + placeholder: 'type here'.tr, + keyboardType: type, + padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + decoration: BoxDecoration( + border: Border.all(color: CupertinoColors.lightBackgroundGray), + borderRadius: BorderRadius.circular(8), ), - MyElevatedButton( - title: 'Update'.tr, - onPressed: () async { - Get.back(); - await updateColumn({ - 'id': box.read(BoxName.passengerID), - columnName: txtController.text, - }); - if (columnName == 'first_name') { - box.write(BoxName.name, txtController.text); - } + ), + const SizedBox(height: 20), + CupertinoButton( + color: AppColor.blueColor, + onPressed: () async { + Get.back(); + await updateColumn({ + 'id': box.read(BoxName.passengerID), + columnName: txtController.text, + }); + if (columnName == 'first_name') { + box.write(BoxName.name, txtController.text); + } - txtController.clear(); - }, - ) - ], + txtController.clear(); + }, + child: Text('Update'.tr), + ), + ], + ), ), ); } diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 7a4531a..32f2b90 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -70,10 +70,11 @@ class RateController extends GetxController { 'token': token1, }); if (res != 'failure') { - FirebaseMessagesController().sendNotificationToAnyWithoutData( + FirebaseMessagesController().sendNotificationToDriverMAP( 'You Have Tips'.tr, '${'${tip.toString()}\$${' tips\nTotal is'.tr}'} ${tip + (Get.find().totalPassenger)}', Get.find().driverToken.toString(), + [], 'ding.wav', ); } diff --git a/lib/main.dart b/lib/main.dart index 028dc86..4bf3b65 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'dart:io'; +import 'dart:math'; import 'package:SEFER/controller/payment/paymob/paymob_response.dart'; import 'package:firebase_core/firebase_core.dart'; @@ -12,6 +13,7 @@ import 'package:flutter/services.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; import 'constant/api_key.dart'; import 'constant/info.dart'; +import 'constant/notification.dart'; import 'controller/firebase/firbase_messge.dart'; import 'controller/firebase/local_notification.dart'; import 'controller/local/local_controller.dart'; @@ -40,10 +42,24 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); WakelockPlus.enable(); // await LocationController().startLocationUpdates(); - if (Platform.isAndroid) { - await NotificationController().initNotifications(); - } + // if (Platform.isAndroid) { + NotificationController notificationController = + Get.put(NotificationController()); + await notificationController.initNotifications(); + // Generate a random index to pick a message + final random = Random(); + final randomMessage = messages[random.nextInt(messages.length)]; + + // Schedule the notification with the random message + notificationController.scheduleDailyNotifications( + randomMessage.split(':')[0], + randomMessage.split(':')[1], + "ding", + ); + + // await NotificationController().initNotifications(); + // } await GetStorage.init(); // Get.put(DriverCallController()); // await AC().gAK(); diff --git a/lib/views/auth/sms_verfy_page.dart b/lib/views/auth/sms_verfy_page.dart index 352b8b4..837c85f 100644 --- a/lib/views/auth/sms_verfy_page.dart +++ b/lib/views/auth/sms_verfy_page.dart @@ -19,7 +19,7 @@ class SmsSignupEgypt extends StatelessWidget { Widget build(BuildContext context) { Get.put(RegisterController()); return MyScafolld( - title: 'Phone Check'.tr, + title: "Phone Number Check".tr, body: [ GetBuilder(builder: (registerController) { return ListView( @@ -99,13 +99,16 @@ class SmsSignupEgypt extends StatelessWidget { // Submit button registerController.isLoading ? const MyCircularProgressIndicator() - : MyElevatedButton( - onPressed: () async { - !registerController.isSent - ? await registerController.sendOtpMessage() - : await registerController.verifySMSCode(); - }, - title: 'Submit'.tr, + : Padding( + padding: const EdgeInsets.all(16.0), + child: MyElevatedButton( + onPressed: () async { + !registerController.isSent + ? await registerController.sendOtpMessage() + : await registerController.verifySMSCode(); + }, + title: 'Submit'.tr, + ), ), ], ); diff --git a/lib/views/home/HomePage/about_page.dart b/lib/views/home/HomePage/about_page.dart index 99347f8..7b487ca 100644 --- a/lib/views/home/HomePage/about_page.dart +++ b/lib/views/home/HomePage/about_page.dart @@ -1,101 +1,153 @@ import 'package:SEFER/constant/box_name.dart'; -import 'package:SEFER/constant/style.dart'; import 'package:SEFER/main.dart'; -import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:flutter/cupertino.dart'; class AboutPage extends StatelessWidget { const AboutPage({super.key}); @override Widget build(BuildContext context) { - return MyScafolld( - title: 'About Us'.tr, - body: [ - // Company Logo (consider adding an image asset) - ListView( + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('About Us'.tr), + ), + child: SafeArea( + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, children: [ + // Company Logo Center( - child: Image.asset( - 'assets/images/logo.png', // Replace with your logo image asset path - height: 100.0, - width: 100.0, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Image.asset( + 'assets/images/logo.png', // Replace with your logo image asset path + height: 100.0, + width: 100.0, + ), ), - ), // Company Name and Location + ), + + // Company Name and Location Padding( padding: const EdgeInsets.all(16.0), child: Text( 'SEFER LLC\n${box.read(BoxName.countryCode).toString().tr}', - style: AppStyle.headTitle2, + style: + CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22.0, + fontWeight: FontWeight.bold, + ), textAlign: TextAlign.center, ), ), + + // About Us Description Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Text( 'SEFER is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:' .tr, - style: AppStyle.title, + style: + CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 16.0, + ), textAlign: TextAlign.center, ), - ), // Security Features List - const SizedBox( - height: 20, ), + + const SizedBox(height: 20), + + // Security Features Padding( padding: const EdgeInsets.symmetric(horizontal: 24.0), child: Column( children: [ Row( children: [ - const Icon(Icons.lock, color: Colors.blue), + const Icon(CupertinoIcons.lock_fill, + color: CupertinoColors.activeBlue), const SizedBox(width: 8.0), - Text( - 'Most Secure Methods'.tr, - style: AppStyle.title, + Expanded( + child: Text( + 'Most Secure Methods'.tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith( + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), + ), ), ], ), const SizedBox(height: 8.0), Row( children: [ - const Icon(Icons.phone, color: Colors.blue), + const Icon(CupertinoIcons.phone_fill, + color: CupertinoColors.activeBlue), const SizedBox(width: 8.0), - Text( - 'In-App VOIP Calls'.tr, - style: AppStyle.title, + Expanded( + child: Text( + 'In-App VOIP Calls'.tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith( + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), + ), ), ], ), const SizedBox(height: 8.0), Row( children: [ - const Icon(Icons.videocam, color: Colors.blue), + const Icon(CupertinoIcons.videocam_fill, + color: CupertinoColors.activeBlue), const SizedBox(width: 8.0), - Text( - 'Recorded Trips for Safety'.tr, - style: AppStyle.title, + Expanded( + child: Text( + 'Recorded Trips for Safety'.tr, + style: CupertinoTheme.of(context) + .textTheme + .textStyle + .copyWith( + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), + ), ), ], ), ], ), - ), // Affordability Highlight + ), + + // Affordability Highlight Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Text( '\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.' .tr, - style: AppStyle.title, + style: + CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), textAlign: TextAlign.center, ), ), + + const SizedBox(height: 20), ], ), - - // About Us Text - ], - isleading: true); + ), + ), + ); } } diff --git a/lib/views/home/HomePage/share_app_page.dart b/lib/views/home/HomePage/share_app_page.dart new file mode 100644 index 0000000..312afca --- /dev/null +++ b/lib/views/home/HomePage/share_app_page.dart @@ -0,0 +1,437 @@ +import 'package:SEFER/constant/style.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; +import '../../../controller/home/profile/invit_controller.dart'; +import '../../../main.dart'; + +class ShareAppPage extends StatelessWidget { + final InviteController controller = Get.put(InviteController()); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: CupertinoColors.systemBackground, + appBar: AppBar( + backgroundColor: CupertinoColors.systemBackground, + elevation: 0, + title: Text( + 'Invite'.tr, + style: const TextStyle(color: CupertinoColors.label), + ), + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: AppColor.blueColor), + onPressed: () => Get.back(), + ), + ), + body: SafeArea( + child: GetBuilder( + builder: (controller) { + return Column( + children: [ + Expanded( + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: _buildPassengerTab(context), + ), + ), + ], + ); + }, + ), + ), + ); + } + + Widget _buildPassengerTab(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + children: [ + Text( + "Share this code with your friends and earn rewards when they use it!" + .tr, + textAlign: TextAlign.center, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 13, + ), + ), + ], + ), + ), + const SizedBox(height: 20), + _buildPhoneInput(), + const SizedBox(height: 20), + _buildActionButtonsPassengers(), + const SizedBox(height: 20), + const SizedBox(height: 20), + _buildInvitationsListPassengers(context), + ], + ); + } + + Widget _buildPhoneInput() { + return Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + children: [ + Expanded( + child: CupertinoTextField.borderless( + controller: controller.invitePhoneController, + placeholder: 'Enter phone'.tr, + padding: const EdgeInsets.all(12), + keyboardType: TextInputType.phone, + ), + ), + CupertinoButton( + child: const Icon(CupertinoIcons.person_badge_plus, + color: AppColor.blueColor), + onPressed: () async { + await controller.pickContacts(); + if (controller.contacts.isNotEmpty) { + if (box.read(BoxName.isSavedPhones) == null) { + controller.savePhoneToServer(); + box.write(BoxName.isSavedPhones, true); + } + _showContactsDialog(Get.context!); + } + }, + ), + ], + ), + ); + } + + Widget _buildActionButtonsPassengers() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 20.0, horizontal: 16.0), + child: Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + onPressed: controller.sendInviteToPassenger, + child: Text( + 'Send Invite'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + ), + ), + ), + const SizedBox(width: 16), + Expanded( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.1), + blurRadius: 6, + offset: const Offset(0, 3), + ), + ], + ), + child: CupertinoButton( + color: AppColor.blueColor, + borderRadius: BorderRadius.circular(10), + padding: const EdgeInsets.symmetric(vertical: 14), + child: Text( + 'Show Invitations'.tr, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: CupertinoColors.white, + ), + ), + onPressed: () async { + controller.fetchDriverStatsPassengers(); + }, + ), + ), + ), + ], + ), + ); + } + + Widget _buildInvitationsListPassengers(BuildContext context) { + return SizedBox( + height: Get.height * .4, + child: controller.driverInvitationDataToPassengers.isEmpty + ? Center( + child: Text( + "No invitation found yet!".tr, + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 17, + ), + ), + ) + : ListView.builder( + itemCount: controller.driverInvitationDataToPassengers.length, + itemBuilder: (context, index) { + return _buildInvitationItemPassengers(context, index); + }, + ), + ); + } + + Widget _buildInvitationItemPassengers(BuildContext context, int index) { + // Extracting the data from the sample JSON-like structure + var invitation = controller.driverInvitationDataToPassengers[index]; + + int countOfInvitDriver = + int.tryParse(invitation['countOfInvitDriver']?.toString() ?? '0') ?? 0; + double progressValue = (countOfInvitDriver / 10.0).clamp(0.0, 1.0); + + return GestureDetector( + onTap: () { + controller.onSelectPassengerInvitation(index); + }, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + invitation['passengerName'] + .toString(), // Handle null or missing data + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 8), + ClipRRect( + borderRadius: BorderRadius.circular(4), + child: LinearProgressIndicator( + value: progressValue, + backgroundColor: CupertinoColors.systemGrey4, + valueColor: + const AlwaysStoppedAnimation(AppColor.blueColor), + minHeight: 6, + ), + ), + const SizedBox(height: 4), + Text( + '$countOfInvitDriver / 2 ${'Trip'.tr}', // Show trips completed + style: const TextStyle( + fontSize: 13, + color: CupertinoColors.secondaryLabel, + ), + ), + ], + ), + ), + ); + } + + Widget _buildPassengerStats(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Your Rewards".tr, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.w600, + color: CupertinoColors.label, + ), + ), + const SizedBox(height: 16), + _buildStatItem( + context, + "Total Invites".tr, + controller.driverInvitationDataToPassengers[0]['countOfInvitDriver'] + .toString(), + ), + _buildStatItem( + context, + "Active Users".tr, + controller.driverInvitationDataToPassengers[0]['passengerName'] + .toString(), + ), + ], + ), + ); + } + + Widget _buildStatItem(BuildContext context, String label, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 15, + ), + ), + Text( + value, + style: const TextStyle( + fontWeight: FontWeight.w600, + color: AppColor.blueColor, + fontSize: 15, + ), + ), + ], + ), + ); + } + + void _showContactsDialog(BuildContext context) { + showCupertinoModalPopup( + context: context, + builder: (BuildContext context) => Container( + height: 400, + decoration: BoxDecoration( + color: CupertinoColors.systemBackground, + borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), + boxShadow: [ + BoxShadow( + color: CupertinoColors.black.withOpacity(0.2), + offset: const Offset(0, -4), + blurRadius: 10, + ), + ], + ), + child: Column( + children: [ + // Header with cancel and title + Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: const BoxDecoration( + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + color: CupertinoColors.systemGrey6, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + CupertinoButton( + padding: EdgeInsets.zero, + child: Text( + 'Cancel'.tr, + style: const TextStyle(color: CupertinoColors.systemBlue), + ), + onPressed: () => Navigator.pop(context), + ), + Container( + child: Text('Choose from contact'.tr, + style: AppStyle.title)), + const SizedBox(width: 60), // Balance for Cancel button + ], + ), + ), + + // Contact list + Expanded( + child: ListView.builder( + itemCount: controller.contactMaps.length, + itemBuilder: (context, index) { + final contact = controller.contactMaps[index]; + return CupertinoButton( + padding: EdgeInsets.zero, + onPressed: () { + controller.selectPhone(contact['phones'].toString()); + }, + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: CupertinoColors.systemBackground, + border: Border( + bottom: BorderSide( + color: CupertinoColors.separator.withOpacity(0.5), + ), + ), + ), + child: Row( + children: [ + // Display contact name and phone number + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + contact['name'], + style: const TextStyle( + color: CupertinoColors.label, + fontSize: 17, + fontWeight: FontWeight.w500, + ), + ), + Text( + controller.formatPhoneNumber( + contact['phones'][0].toString()), + style: const TextStyle( + color: CupertinoColors.secondaryLabel, + fontSize: 15, + ), + ), + ], + ), + ), + // Chevron icon for selection + const Icon( + CupertinoIcons.chevron_forward, + color: CupertinoColors.systemGrey2, + ), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/views/home/HomePage/trip_record_page.dart b/lib/views/home/HomePage/trip_record_page.dart index d98674e..c3d9ee5 100644 --- a/lib/views/home/HomePage/trip_record_page.dart +++ b/lib/views/home/HomePage/trip_record_page.dart @@ -1,14 +1,11 @@ import 'package:SEFER/views/widgets/my_scafold.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:share/share.dart'; import 'package:path/path.dart' as path; -import '../../../constant/colors.dart'; -import '../../../constant/style.dart'; import '../../../controller/functions/audio_record1.dart'; -import '../../../controller/functions/tts.dart'; -import '../../widgets/elevated_btn.dart'; class TripsRecordedPage extends StatelessWidget { const TripsRecordedPage({ @@ -21,132 +18,193 @@ class TripsRecordedPage extends StatelessWidget { title: 'Trips recorded'.tr, body: [ GetBuilder(builder: (audio) { - return Column( - children: [ - FutureBuilder>( - future: audio.getRecordedFiles(), - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) { - return const CircularProgressIndicator(); - } else if (snapshot.hasData) { - final recordedFiles = snapshot.data!; - return DropdownButton( - value: audio.selectedFilePath, - onChanged: (value) { - audio.selectedFilePath = value; - audio.playRecordedFile(value!); - audio.update(); - }, - items: recordedFiles - .map((file) => DropdownMenuItem( - value: file, - child: Text(path.basename(file)), - )) - .toList(), - ); - } else { - return Text('Error: ${snapshot.error}'); - } - }, - ), - Slider( - value: audio.currentPosition, - max: audio.totalDuration, - inactiveColor: AppColor.accentColor, - label: audio.currentPosition.toString(), - onChanged: (value) { - audio.currentPosition = value; - audio.audioPlayer.seek(Duration(seconds: value.toInt())); - }, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - IconButton( - icon: Icon( - audio.isPlaying ? Icons.pause : Icons.play_arrow), - onPressed: () { - if (audio.isPlaying) { - audio.pausePlayback(); - } else { - audio.resumePlayback(); - } - audio.update(); - }, - ), - IconButton( - icon: const Icon(Icons.stop), - onPressed: () { - audio.stopPlayback(); - audio.update(); - }, - ), - IconButton( - icon: const Icon(Icons.delete), - onPressed: () async { - Get.defaultDialog( - title: 'Are you sure to delete recorded files'.tr, - content: Column( - children: [ - IconButton( - onPressed: () { - Get.find().speakText( - 'this will delete all files from your device' - .tr); - }, - icon: const Icon(Icons.headphones), - ), - Text( - 'this will delete all files from your device' - .tr, - textAlign: TextAlign.center, - style: AppStyle.title, - ), - ], - ), - titleStyle: AppStyle.title, - confirm: MyElevatedButton( - title: 'Delete'.tr, - kolor: AppColor.redColor, + return SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + FutureBuilder>( + future: audio.getRecordedFiles(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center( + child: CupertinoActivityIndicator()); + } else if (snapshot.hasData) { + final recordedFiles = snapshot.data!; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: CupertinoButton( + padding: EdgeInsets.zero, onPressed: () async { - await audio.deleteAllRecordedFiles(); - Get.back(); - Get.back(); + String? selectedFile = + await showCupertinoModalPopup( + context: context, + builder: (BuildContext context) { + return CupertinoActionSheet( + title: Text('Select a File'.tr), + actions: recordedFiles + .map( + (file) => CupertinoActionSheetAction( + child: Text(path.basename(file)), + onPressed: () { + Navigator.of(context).pop(file); + }, + ), + ) + .toList(), + ); + }, + ); + if (selectedFile != null) { + audio.selectedFilePath = selectedFile; + audio.playRecordedFile(selectedFile); + audio.update(); + } }, + child: Text( + audio.selectedFilePath != null + ? path.basename(audio.selectedFilePath!) + : 'Select a File'.tr, + style: CupertinoTheme.of(context) + .textTheme + .actionTextStyle + .copyWith(color: CupertinoColors.activeBlue), + ), ), ); + } else { + return Padding( + padding: const EdgeInsets.all(16.0), + child: Text('Error: ${snapshot.error}'), + ); + } + }, + ), + + // Cupertino-style slider for seeking audio + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: CupertinoSlider( + value: audio.totalDuration > 0 + ? audio.currentPosition / audio.totalDuration + : 0.0, // Normalize to a value between 0.0 and 1.0 + min: 0.0, + max: 1.0, // Maximum value is now 1.0 + activeColor: CupertinoColors.activeBlue, + onChanged: (value) { + final newPosition = value * audio.totalDuration; + audio.currentPosition = newPosition; + audio.audioPlayer + .seek(Duration(seconds: newPosition.toInt())); + audio.update(); }, ), - ], - ), - Align( - alignment: Alignment.bottomCenter, - child: Container( - padding: const EdgeInsets.all(16.0), - color: Colors.grey[200], + ), + + // iOS-style playback controls + Padding( + padding: const EdgeInsets.symmetric( + vertical: 16.0, horizontal: 16.0), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Text( - audio.selectedFilePath != null - ? '${'Selected file:'.tr} ${path.basename(audio.selectedFilePath!)}' - : 'No file selected'.tr, - style: AppStyle.subtitle, - ), - if (audio.selectedFilePath != null) - IconButton( - icon: const Icon(Icons.share), - onPressed: () { - Share.shareFiles([audio.selectedFilePath!]); - }, + CupertinoButton( + padding: EdgeInsets.zero, + child: Icon( + audio.isPlaying + ? CupertinoIcons.pause + : CupertinoIcons.play_arrow, + color: CupertinoColors.activeBlue, ), + onPressed: () { + if (audio.isPlaying) { + audio.pausePlayback(); + } else { + audio.resumePlayback(); + } + audio.update(); + }, + ), + CupertinoButton( + padding: EdgeInsets.zero, + child: const Icon(CupertinoIcons.stop, + color: CupertinoColors.destructiveRed), + onPressed: () { + audio.stopPlayback(); + audio.update(); + }, + ), + CupertinoButton( + padding: EdgeInsets.zero, + child: const Icon(CupertinoIcons.delete, + color: CupertinoColors.destructiveRed), + onPressed: () async { + showCupertinoModalPopup( + context: context, + builder: (BuildContext context) { + return CupertinoActionSheet( + title: Text('Are you sure?'.tr), + message: Text( + 'This will delete all recorded files from your device.' + .tr, + textAlign: TextAlign.center, + ), + actions: [ + CupertinoActionSheetAction( + isDestructiveAction: true, + onPressed: () async { + await audio.deleteAllRecordedFiles(); + Navigator.pop(context); + audio.update(); + }, + child: Text('Delete'.tr), + ), + ], + cancelButton: CupertinoActionSheetAction( + onPressed: () { + Navigator.pop(context); + }, + child: Text('Cancel'.tr), + ), + ); + }, + ); + }, + ), ], ), ), - ), - ], + + // File selection and sharing + if (audio.selectedFilePath != null) + Align( + alignment: Alignment.bottomCenter, + child: Container( + padding: const EdgeInsets.all(16.0), + color: CupertinoColors.systemGrey6, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Selected file: ${path.basename(audio.selectedFilePath!)}', + style: CupertinoTheme.of(context) + .textTheme + .textStyle, + ), + CupertinoButton( + padding: EdgeInsets.zero, + child: const Icon(CupertinoIcons.share), + onPressed: () { + Share.shareFiles([audio.selectedFilePath!]); + }, + ), + ], + ), + ), + ), + ], + ), ); - }), + }) ], isleading: true); } diff --git a/lib/views/home/home_page.dart b/lib/views/home/home_page.dart index 7819ba6..9c58f41 100644 --- a/lib/views/home/home_page.dart +++ b/lib/views/home/home_page.dart @@ -8,6 +8,7 @@ import 'package:SEFER/views/widgets/my_scafold.dart'; import 'HomePage/about_page.dart'; import 'HomePage/frequentlyQuestionsPage.dart'; +import 'HomePage/share_app_page.dart'; import 'HomePage/trip_record_page.dart'; import 'profile/passenger_profile_page.dart'; @@ -21,7 +22,7 @@ class HomePage extends StatelessWidget { isleading: true, title: 'Home Page'.tr, body: [ - Column( + ListView( children: [ ListTile( onTap: () { @@ -116,6 +117,19 @@ class HomePage extends StatelessWidget { ), onTap: () => Get.to(() => const AboutPage()), ), + ListTile( + leading: const Icon(Icons.share), + title: Text( + 'Share App'.tr, + style: AppStyle.headTitle2, + ), + subtitle: Text( + 'You can share the SEFER App with your friends and earn rewards for rides they take using your code' + .tr, + style: AppStyle.title, + ), + onTap: () => Get.to(() => ShareAppPage()), + ), ], ), ], diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index fdbe9c8..392c352 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -27,7 +27,7 @@ class ApplyOrderWidget extends StatelessWidget { right: 0, child: Container( decoration: AppStyle.boxDecoration, - height: Get.height * .35, + height: Get.height * .36, child: ListView( children: [ InkWell( @@ -87,11 +87,11 @@ class ApplyOrderWidget extends StatelessWidget { width: 10, ), Container( - height: Get.height * .3, + height: Get.height * .34, width: Get.width * .9, decoration: AppStyle.boxDecoration, child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.end, @@ -241,12 +241,13 @@ class ApplyOrderWidget extends StatelessWidget { InkWell( onTap: () { FirebaseMessagesController() - .sendNotificationToAnyWithoutData( - 'message From passenger', + .sendNotificationToDriverMAP( + 'message From passenger'.tr, 'Hello, I\'m at the agreed-upon location' .tr, controller.driverToken .toString(), + [], 'ding.wav', ); Get.back(); @@ -272,11 +273,12 @@ class ApplyOrderWidget extends StatelessWidget { InkWell( onTap: () { FirebaseMessagesController() - .sendNotificationToAnyWithoutData( + .sendNotificationToDriverMAP( 'message From passenger'.tr, 'My location is correct. You can search for me using the navigation app' .tr, controller.driverToken, + [], 'ding.wav', ); Get.back(); @@ -302,11 +304,12 @@ class ApplyOrderWidget extends StatelessWidget { InkWell( onTap: () { FirebaseMessagesController() - .sendNotificationToAnyWithoutData( + .sendNotificationToDriverMAP( 'message From passenger', 'My location is correct. You can search for me using the navigation app' .tr, controller.driverToken, + [], 'ding.wav', ); Get.back(); @@ -331,11 +334,12 @@ class ApplyOrderWidget extends StatelessWidget { InkWell( onTap: () { FirebaseMessagesController() - .sendNotificationToAnyWithoutData( + .sendNotificationToDriverMAP( 'message From passenger', "How much longer will you be?" .tr, controller.driverToken, + [], 'ding.wav', ); Get.back(); @@ -385,13 +389,14 @@ class ApplyOrderWidget extends StatelessWidget { IconButton( onPressed: () { FirebaseMessagesController() - .sendNotificationToAnyWithoutData( + .sendNotificationToDriverMAP( 'message From passenger', controller .messageToDriver .text, controller .driverToken, + [], 'ding.wav'); controller .messageToDriver @@ -466,7 +471,7 @@ class DriverArrivePassengerAndWaitMinute extends StatelessWidget { color: controller.remainingTimeDriverWaitPassenger5Minute < 60 ? AppColor.redColor : AppColor.greenColor, - minHeight: 25, + minHeight: 15, borderRadius: BorderRadius.circular(15), value: controller.progressTimerDriverWaitPassenger5Minute.toDouble(), @@ -513,7 +518,7 @@ class TimeDriverToPassenger extends StatelessWidget { Container( decoration: AppStyle.boxDecoration, width: Get.width * .7, - height: 35, + height: 15, // color: AppColor.yellowColor, ), Stack( diff --git a/lib/views/home/map_widget.dart/cancel_raide_page.dart b/lib/views/home/map_widget.dart/cancel_raide_page.dart index 8901377..286e2e6 100644 --- a/lib/views/home/map_widget.dart/cancel_raide_page.dart +++ b/lib/views/home/map_widget.dart/cancel_raide_page.dart @@ -3,11 +3,11 @@ import 'package:get/get.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/home/map_passenger_controller.dart'; - import '../../widgets/elevated_btn.dart'; GetBuilder cancelRidePage() { Get.put(MapPassengerController()); + final List reasons = [ "I don't need a ride anymore".tr, "I was just trying the application".tr, @@ -16,80 +16,74 @@ GetBuilder cancelRidePage() { "I don't have a reason".tr, "Other".tr, ]; + return GetBuilder( builder: (controller) => controller.isCancelRidePageShown ? Positioned( - left: Get.width * .1, - top: Get.width * .2, - right: Get.width * .1, - bottom: Get.width * .15, + left: 20, + top: Get.height * 0.15, + right: 20, + bottom: Get.height * 0.15, child: Container( + padding: const EdgeInsets.all(20), decoration: BoxDecoration( - color: AppColor.secondaryColor, + color: Colors.white, boxShadow: [ - const BoxShadow( - color: AppColor.accentColor, - offset: Offset(2, 2), - blurRadius: 5), BoxShadow( - color: AppColor.accentColor.withOpacity(.4), - offset: const Offset(-2, -2), - blurRadius: 5) + color: Colors.black.withOpacity(0.2), + offset: const Offset(0, 8), + blurRadius: 16, + ), ], - borderRadius: const BorderRadius.all(Radius.circular(15)), + borderRadius: BorderRadius.circular(20), ), - height: Get.height * .7, - width: Get.width * .7, child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Text( - 'Can we know why you want to cancel Ride ?'.tr, - style: AppStyle.title, - textAlign: TextAlign.center, - ), + Text( + 'Can we know why you want to cancel Ride ?'.tr, + style: AppStyle.title + .copyWith(fontSize: 18, fontWeight: FontWeight.bold), + textAlign: TextAlign.center, ), - SizedBox( - height: 380, - width: 300, - child: ListView.builder( + const SizedBox(height: 20), + Expanded( + child: ListView.separated( itemCount: reasons.length, + separatorBuilder: (context, index) => const Divider(), itemBuilder: (context, index) { return ListTile( - title: InkWell( - onTap: () { - controller.selectReason( - index, - reasons[index].toString(), - ); - }, - child: Text( - reasons[index], - style: AppStyle.title, - )), + title: Text( + reasons[index], + style: AppStyle.title.copyWith(fontSize: 16), + ), leading: Radio( value: index, groupValue: controller.selectedReason, onChanged: (int? value) { - controller.selectReason( - value!, - reasons[index].toString(), - ); + controller.selectReason(value!, reasons[index]); }, + activeColor: AppColor.primaryColor, ), + onTap: () { + controller.selectReason(index, reasons[index]); + }, ); }, ), ), + const SizedBox(height: 20), MyElevatedButton( title: 'Cancel Ride'.tr, onPressed: () { if (controller.selectedReason == -1) { - Get.snackbar('You Should be select reason.'.tr, '', - snackPosition: SnackPosition.BOTTOM, - backgroundColor: AppColor.redColor); + Get.snackbar( + 'You Should be select reason.'.tr, + '', + snackPosition: SnackPosition.BOTTOM, + backgroundColor: AppColor.redColor, + colorText: Colors.white, + ); } else { controller.cancelRide(); } diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart index aa6b2ff..52d5a4c 100644 --- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart +++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart @@ -586,7 +586,7 @@ class CarDetailsTypeToChoose extends StatelessWidget { textToSpeechController, image: 'assets/images/freeRide.png', text: - 'Perfect for adventure seekers who want to experience something new and exciting' + "Perfect for passengers seeking the latest car models with the freedom to choose any route they desire" .tr), confirm: MyElevatedButton( kolor: AppColor.greenColor, @@ -656,8 +656,10 @@ class CarDetailsTypeToChoose extends StatelessWidget { title: 'Next'.tr, onPressed: () { Get.back(); - if (box.read(BoxName.gender) != - null) { + if (box + .read(BoxName.gender) + .toString() != + '') { mapPassengerController .isBottomSheetShown = false; mapPassengerController.update(); @@ -710,59 +712,108 @@ class CarDetailsTypeToChoose extends StatelessWidget { MainAxisAlignment .spaceBetween, children: [ - Container( - decoration: AppStyle - .boxDecoration1, - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Column( - children: [ - Text('Awfar Car' - .tr), - Text(mapPassengerController - .totalPassengerRayehGaiBalash - .toStringAsFixed( - 0)), - ], - ), - )), - Container( - decoration: AppStyle - .boxDecoration1, - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Column( - children: [ - Text('Speed'.tr), - Text(mapPassengerController - .totalPassengerRayehGai - .toStringAsFixed( - 0)), - ], - ), - )), - Container( - decoration: AppStyle - .boxDecoration1, - child: Padding( - padding: - const EdgeInsets - .all(8.0), - child: Column( - children: [ - Text( - 'Comfort'.tr), - Text(mapPassengerController - .totalPassengerRayehGaiComfort - .toStringAsFixed( - 0)), - ], - ), - )) + GestureDetector( + onTap: () { + Get.back(); + mapPassengerController + .totalPassenger = + mapPassengerController + .totalPassengerRayehGaiBalash; + mapPassengerController + .isBottomSheetShown = + false; + mapPassengerController + .update(); + mapPassengerController + .changeCashConfirmPageShown(); + }, + child: Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text('Awfar Car' + .tr), + Text(mapPassengerController + .totalPassengerRayehGaiBalash + .toStringAsFixed( + 0)), + ], + ), + )), + ), + GestureDetector( + onTap: () { + Get.back(); + mapPassengerController + .totalPassenger = + mapPassengerController + .totalPassengerRayehGai; + mapPassengerController + .isBottomSheetShown = + false; + mapPassengerController + .update(); + mapPassengerController + .changeCashConfirmPageShown(); + }, + child: Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text( + 'Speed'.tr), + Text(mapPassengerController + .totalPassengerRayehGai + .toStringAsFixed( + 0)), + ], + ), + )), + ), + GestureDetector( + onTap: () { + Get.back(); + mapPassengerController + .totalPassenger = + mapPassengerController + .totalPassengerRayehGaiComfort; + mapPassengerController + .isBottomSheetShown = + false; + mapPassengerController + .update(); + mapPassengerController + .changeCashConfirmPageShown(); + }, + child: Container( + decoration: AppStyle + .boxDecoration1, + child: Padding( + padding: + const EdgeInsets + .all(8.0), + child: Column( + children: [ + Text('Comfort' + .tr), + Text(mapPassengerController + .totalPassengerRayehGaiComfort + .toStringAsFixed( + 0)), + ], + ), + )), + ) ], ), cancel: MyElevatedButton( @@ -951,9 +1002,16 @@ class BurcMoney extends StatelessWidget { } } -class HeaderDestination extends StatelessWidget { +class HeaderDestination extends StatefulWidget { const HeaderDestination({super.key}); + @override + _HeaderDestinationState createState() => _HeaderDestinationState(); +} + +class _HeaderDestinationState extends State { + bool _isExpanded = false; + @override Widget build(BuildContext context) { return GetBuilder( @@ -965,95 +1023,64 @@ class HeaderDestination extends StatelessWidget { top: Get.height * .08, left: 5, right: 5, - child: Container( - decoration: AppStyle.boxDecoration1, - height: Get.height * .15, - width: Get.width * .8, - child: InkWell( - onTap: () { - // mapPassengerController - // .getDialog('Are you want to change'.tr, '', () { - // Get.back(); - // mapPassengerController.cancelRide(); - // }); - MyDialog().getDialog( - "Change Route".tr, - 'You can change the destination by long-pressing any point on the map' - .tr, () { - Get.back(); - }); - }, + child: GestureDetector( + onTap: () { + setState(() { + _isExpanded = !_isExpanded; + }); + }, + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + decoration: AppStyle.boxDecoration1, + height: _isExpanded ? Get.height * .13 : Get.height * .06, + width: Get.width * .9, + padding: const EdgeInsets.all(8), child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, vertical: 2), - child: SizedBox( - height: Get.height * .08, - child: ListView( - // crossAxisAlignment: CrossAxisAlignment.start, - // - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - '🟢 ', + _isExpanded + ? Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text('🟢 ', style: AppStyle.subtitle), + Expanded( + child: Text( + mapPassengerController.startNameAddress, style: AppStyle.subtitle, + overflow: TextOverflow.ellipsis, ), - SizedBox( - // height: Get.height * .03, - width: Get.width * .8, - child: Text( - mapPassengerController.startNameAddress, - style: AppStyle.subtitle, - ), - ), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - '🔴 ', - style: AppStyle.subtitle, - ), - SizedBox( - // height: Get.height * .03, - width: Get.width * .8, - child: Text( - mapPassengerController.endNameAddress, - style: AppStyle.subtitle, - ), - ), - ], - ), - ], + ), + ], + ) + : const SizedBox(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('🔴 ', style: AppStyle.subtitle), + Expanded( + child: Text( + mapPassengerController.endNameAddress, + style: AppStyle.subtitle, + overflow: TextOverflow.ellipsis, + ), ), - ), + ], ), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 8), - child: Row( + if (_isExpanded) + Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - '📍 ', - style: AppStyle.subtitle, - ), - SizedBox( - width: Get.width * .8, + Text('📍', style: AppStyle.subtitle), + Expanded( child: Text( '${mapPassengerController.distance} ${'KM'.tr} ⌛ ${mapPassengerController.hours > 0 ? '${'Your Ride Duration is '.tr}${mapPassengerController.hours} ${'H and'.tr} ${mapPassengerController.minutes} ${'m'.tr}' : '${'Your Ride Duration is '.tr} ${mapPassengerController.minutes} ${'m'.tr}'}', style: AppStyle.subtitle, + overflow: TextOverflow.ellipsis, ), ), ], ), - ), ], ), ), diff --git a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart index f306cb1..63a997d 100644 --- a/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart +++ b/lib/views/home/map_widget.dart/cash_confirm_bottom_page.dart @@ -29,7 +29,8 @@ class CashConfirmPageShown extends StatelessWidget { ? controller.cashConfirmPageShown : 0, decoration: BoxDecoration( - color: box.read(BoxName.carType) == 'Lady' + color: box.read(BoxName.carType) == 'Lady' || + box.read(BoxName.carType) == 'Pink Bike' ? Colors.pink.shade100 : AppColor.secondaryColor, borderRadius: BorderRadius.circular(15)), diff --git a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart index bd2417b..a7bfdcc 100644 --- a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart +++ b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart @@ -419,7 +419,7 @@ class GoogleMapPassengerWidget extends StatelessWidget { }, mapType: - controller.mapType ? MapType.satellite : MapType.normal, + controller.mapType ? MapType.satellite : MapType.terrain, myLocationButtonEnabled: true, // liteModeEnabled: true, tiltGesturesEnabled: false, 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 c9a53d6..5d152bd 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 @@ -1,7 +1,13 @@ +import 'dart:math'; + +import 'package:SEFER/views/auth/login_page.dart'; +import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../../../constant/colors.dart'; +import '../../../constant/notification.dart'; +import '../../../controller/firebase/local_notification.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; @@ -89,17 +95,14 @@ GetBuilder leftMainMenuIcons() { // borderRadius: BorderRadius.circular(15)), // child: IconButton( // onPressed: () async { - // FirebaseMessagesController().sendNotificationToAnyWithoutData( - // 'Order'.tr, - // 'from: ', - // // jsonDecode(value)['message'].toString(), - // 'dEugS-JOT4Ka5riF4s5TEN:APA91bEDL_W7BuEQGbyL-RMaKiMWDlURXhFuaybe5WurTUV8K5eIooSGe22yY22_U2hEZcfPr46ig1v--l00dbOGiivazxvmTyhUyQQW6lJsuIN-wordGtBxtREyeYtEKvxIa1J4ApEu', - // 'order.wav' - - // // polylineCoordinates.toString() - // ); - // // print(box.read(BoxName.tokenFCM)); - // // + // final random = Random(); + // final randomMessage = + // messages[random.nextInt(messages.length)]; + // NotificationController().showNotification( + // randomMessage.split(':')[0], + // randomMessage.split(':')[1], + // "ding", + // ); // }, // icon: const Icon( // Icons.voice_chat, 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 abd71c7..3c71f0e 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -30,7 +30,7 @@ class RideBeginPassenger extends StatelessWidget { return Positioned( left: 10, right: 10, - bottom: 4, + bottom: 10, child: Container( decoration: AppStyle.boxDecoration, height: controller.statusRide == 'Begin' ? Get.height * .33 : 0, diff --git a/lib/views/home/map_widget.dart/searching_captain_window.dart b/lib/views/home/map_widget.dart/searching_captain_window.dart index e9d5342..5dc5d64 100644 --- a/lib/views/home/map_widget.dart/searching_captain_window.dart +++ b/lib/views/home/map_widget.dart/searching_captain_window.dart @@ -8,6 +8,121 @@ import 'package:SEFER/views/widgets/my_textField.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import '../../../constant/links.dart'; + +// class SearchingCaptainWindow extends StatelessWidget { +// const SearchingCaptainWindow({super.key}); + +// Widget _buildDriverAvatars(MapPassengerController controller) { +// // If no drivers yet, show loading indicator +// if (controller.isSearchingWindow) { +// // Check if dataCarsLocationByPassenger or its 'data' is null +// if (controller.dataCarsLocationByPassenger == null || +// controller.dataCarsLocationByPassenger['data'] == null || +// controller.dataCarsLocationByPassenger['data'].isEmpty) { +// return const SizedBox( +// height: 60, +// child: Center( +// child: CircularProgressIndicator( +// valueColor: +// AlwaysStoppedAnimation(AppColor.secondaryColor), +// ), +// ), +// ); +// } +// } + +// return SizedBox( +// height: 60, +// child: ListView.builder( +// scrollDirection: Axis.horizontal, +// itemCount: controller.dataCarsLocationByPassenger['data'].length, +// padding: const EdgeInsets.symmetric(horizontal: 16), +// itemBuilder: (context, index) { +// final driver = controller.dataCarsLocationByPassenger['data'][index]; +// return Padding( +// padding: const EdgeInsets.only(right: 8), +// child: Column( +// mainAxisSize: MainAxisSize.min, +// children: [ +// CircleAvatar( +// radius: 25, +// backgroundColor: AppColor.secondaryColor, +// child: ClipOval( +// child: Image.network( +// '${AppLink.server}/portrate_captain_image/${driver['driver_id']}.jpg', +// width: 50, +// height: 50, +// fit: BoxFit.cover, +// errorBuilder: (context, error, stackTrace) { +// return const Icon( +// Icons.person, +// color: Colors.white, +// size: 30, +// ); +// }, +// ), +// ), +// ), +// ], +// ), +// ); +// }, +// ), +// ); +// } + +// @override +// Widget build(BuildContext context) { +// return GetBuilder( +// builder: (mapPassengerController) { +// return mapPassengerController.isSearchingWindow +// ? Positioned( +// bottom: 0, +// left: 0, +// right: 0, +// child: Container( +// decoration: AppStyle.boxDecoration1, +// height: Get.height * +// .3, // Increased height to accommodate avatars +// child: Column( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// SizedBox( +// width: Get.width * .7, +// child: const LinearProgressIndicator( +// minHeight: 6, +// backgroundColor: AppColor.yellowColor, +// color: AppColor.secondaryColor, +// ), +// ), +// mapPassengerController.driverOrderStatus == 'recive' +// ? Text( +// "Drivers received orders".tr, +// style: AppStyle.title, +// ) +// : Text( +// "We are searching for the nearest driver to you" +// .tr, +// style: AppStyle.title, +// ), +// Text( +// 'please wait till driver accept your order'.tr, +// style: AppStyle.title, +// ), +// // New: Driver avatars section +// _buildDriverAvatars(mapPassengerController), +// _buildTimer(mapPassengerController), +// ], +// ), +// ), +// ) +// : const SizedBox(); +// }, +// ); +// } +// } + class SearchingCaptainWindow extends StatelessWidget { const SearchingCaptainWindow({super.key}); diff --git a/lib/views/home/map_widget.dart/select_driver_mishwari.dart b/lib/views/home/map_widget.dart/select_driver_mishwari.dart index 5e8d466..adda2c2 100644 --- a/lib/views/home/map_widget.dart/select_driver_mishwari.dart +++ b/lib/views/home/map_widget.dart/select_driver_mishwari.dart @@ -116,9 +116,10 @@ class CupertinoDriverListWidget extends StatelessWidget { width: 20, height: 20, decoration: BoxDecoration( - color: hexToColor( - driver['color_hex'].toString()) ?? - Colors.amber, + color: driver['color_hex'].toString() == 'null' + ? Colors.amber + : hexToColor( + driver['color_hex'].toString()), borderRadius: BorderRadius.circular(4), border: Border.all(), ), @@ -151,9 +152,11 @@ class CupertinoDriverListWidget extends StatelessWidget { width: 20, height: 20, decoration: BoxDecoration( - color: hexToColor( - driver['color_hex'].toString()) ?? - AppColor.bronze, + color: + driver['color_hex'].toString() == 'null' + ? Colors.amber + : hexToColor( + driver['color_hex'].toString()), borderRadius: BorderRadius.circular(4), border: Border.all(), ), @@ -204,7 +207,9 @@ class CupertinoDriverListWidget extends StatelessWidget { width: 20, height: 20, decoration: BoxDecoration( - color: hexToColor(driver['color_hex'].toString()), + color: driver['color_hex'].toString() == 'null' + ? Colors.amber + : hexToColor(driver['color_hex'].toString()), borderRadius: BorderRadius.circular(4), border: Border.all(), ), diff --git a/lib/views/home/profile/complaint_page.dart b/lib/views/home/profile/complaint_page.dart index a9f137b..eae4907 100644 --- a/lib/views/home/profile/complaint_page.dart +++ b/lib/views/home/profile/complaint_page.dart @@ -1,64 +1,199 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:SEFER/views/widgets/my_scafold.dart'; -import 'package:SEFER/views/widgets/mycircular.dart'; +import 'dart:convert'; -import '../../../controller/home/profile/complaint_controller.dart'; -import '../../widgets/elevated_btn.dart'; +import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/style.dart'; +import 'package:SEFER/controller/functions/crud.dart'; +import 'package:SEFER/controller/home/profile/complaint_controller.dart'; +import 'package:SEFER/views/widgets/my_dialog.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'dart:io'; + +import '../../../controller/functions/audio_record1.dart'; class ComplaintPage extends StatelessWidget { - // Rename class - ComplaintPage({super.key}); - ComplaintController complaintController = - Get.put(ComplaintController()); // Update controller instance + final ComplaintController complaintController = + Get.put(ComplaintController()); + final AudioRecorderController audioRecorderController = + Get.put(AudioRecorderController()); @override Widget build(BuildContext context) { - return MyScafolld( - title: 'Complaint'.tr, - body: [ - Padding( - padding: const EdgeInsets.all(26), - child: Form( - key: complaintController.formKey, - child: Column( - children: [ - TextFormField( - controller: complaintController.complaintController, - decoration: InputDecoration( - border: const OutlineInputBorder(), - hintText: 'Enter your complaint here'.tr, - labelText: 'Complaint'.tr, // Update label - ), - validator: (value) { - if (value == null || value.isEmpty) { - return 'Please enter your complaint.'.tr; - } - return null; - }, - ), - const SizedBox(height: 20), - complaintController.isLoading - ? const MyCircularProgressIndicator() - : MyElevatedButton( - onPressed: () { - if (complaintController.formKey.currentState! - .validate()) { - complaintController - .addComplaint(); // Update method name - - // Clear the complaint form - complaintController.formKey.currentState!.reset(); - } - }, - title: 'Submit'.tr, - ), - ], - ), - ), + return GetBuilder(builder: (complaintController) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Complaint'.tr, style: AppStyle.title), ), - ], - isleading: true, - ); + child: complaintController.isLoading + ? const Center(child: CupertinoActivityIndicator()) + : SafeArea( + child: Padding( + padding: const EdgeInsets.all(16), + child: Form( + key: complaintController.formKey, + child: ListView( + children: [ + // Complaint Text Field + CupertinoFormSection( + header: Text('Submit Your Complaint'.tr), + children: [ + CupertinoTextField( + controller: + complaintController.complaintController, + placeholder: 'Enter your complaint here'.tr, + padding: const EdgeInsets.symmetric( + vertical: 12, horizontal: 16), + maxLines: 5, + decoration: BoxDecoration( + border: Border.all( + color: CupertinoColors.systemGrey4), + borderRadius: BorderRadius.circular(10), + color: CupertinoColors.white, + ), + style: AppStyle.subtitle, + ), + ], + ), + const SizedBox(height: 24), + + // FutureBuilder to load recorded audio files + FutureBuilder>( + future: audioRecorderController.getRecordedFiles(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.waiting) { + return const Center( + child: CupertinoActivityIndicator()); + } else if (snapshot.hasError) { + return Text('Error: ${snapshot.error}', + style: AppStyle.subtitle); + } else if (snapshot.hasData && + snapshot.data!.isEmpty) { + return Text('No audio files recorded.'.tr, + style: AppStyle.subtitle); + } + + // List of recorded audio files + return CupertinoFormSection( + header: Text('attach audio of complain'.tr), + children: snapshot.data!.map((audioFilePath) { + final audioFile = File(audioFilePath); + return CupertinoListTile( + title: Text(audioFilePath.split('/').last, + style: AppStyle.title), + trailing: const Icon( + CupertinoIcons.play_arrow, + color: AppColor.accentColor), + onTap: () async { + MyDialogContent().getDialog( + 'be sure'.tr, + Text('attach correct audio'.tr), + () async { + await complaintController + .uploadAudioFile(audioFile); + }, + ); + }, + ); + }).toList(), + ); + }, + ), + const SizedBox(height: 24), + + // Trip Details Section + CupertinoFormSection( + header: Text('Trip Details'.tr), + children: [ + CupertinoListTile( + title: complaintController.feedBack.isEmpty + ? Text('No Ride found yet'.tr) + : Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Date'.tr}: ${complaintController.feedBack[0]['date']}', + style: AppStyle.title), + Text( + '${'Price'.tr}: ${complaintController.feedBack[0]['price']}', + style: AppStyle.title), + ], + ), + ), + ], + ), + const SizedBox(height: 24), + CupertinoFormSection( + header: Text('SEFER answer'.tr), + children: [ + SizedBox( + height: 100, + child: ListView( + children: [ + // Check if passengerReport is not null + if (complaintController.passengerReport != + null) + // Access the 'solution' key safely + Text( + complaintController + .passengerReport!['solution'] + ?.toString() ?? + 'No solution available', + style: AppStyle.title, + ) + else + const SizedBox(), // Fallback if passengerReport is null + ], + ), + ), + ], + ), + const SizedBox(height: 24), + // Submit Button + CupertinoButton( + color: AppColor.blueColor, + padding: const EdgeInsets.symmetric( + vertical: 14, horizontal: 30), + onPressed: () async { + if (complaintController.formKey.currentState! + .validate()) { + if (complaintController.audioLink.toString() == + '') { + MyDialogContent().getDialog( + 'title', + Text( + 'the audio file not uploaded yet \nDo you want to upload without audio file' + .tr), () async { + await complaintController.geminiAudio( + jsonEncode(complaintController.feedBack), + complaintController.audioLink, + complaintController + .complaintController.text); + complaintController.formKey.currentState! + .reset(); + }); + Get.back(); + } else { + await complaintController.geminiAudio( + jsonEncode(complaintController.feedBack), + complaintController.audioLink, + complaintController + .complaintController.text); + complaintController.formKey.currentState! + .reset(); + } + complaintController.addComplaint(); + } + }, + child: Text('Submit'.tr, style: AppStyle.title), + ), + ], + ), + ), + ), + ), + ); + }); } } diff --git a/lib/views/widgets/mycircular.dart b/lib/views/widgets/mycircular.dart index 2fe8e35..af68047 100644 --- a/lib/views/widgets/mycircular.dart +++ b/lib/views/widgets/mycircular.dart @@ -12,8 +12,8 @@ class MyCircularProgressIndicator extends StatelessWidget { Widget build(BuildContext context) { return Center( child: Container( - width: 110, - height: 110, + width: 140, + height: 140, decoration: BoxDecoration( color: backgroundColor, shape: BoxShape.circle, @@ -21,13 +21,11 @@ class MyCircularProgressIndicator extends StatelessWidget { child: Stack( children: [ const Center(child: CircularProgressIndicator()), - Column( - children: [ - Align( - alignment: Alignment.center, - child: Image.asset('assets/images/logo.gif'), - ), - ], + Image.asset( + 'assets/images/logo.gif', + width: 140, + height: 140, + fit: BoxFit.contain, ), ], ), diff --git a/pubspec.lock b/pubspec.lock index b7ac582..e214496 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -499,6 +499,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.0" + flutter_contacts: + dependency: "direct main" + description: + name: flutter_contacts + sha256: "388d32cd33f16640ee169570128c933b45f3259bddbfae7a100bb49e5ffea9ae" + url: "https://pub.dev" + source: hosted + version: "1.1.9+2" flutter_font_icons: dependency: "direct main" description: @@ -974,7 +982,7 @@ packages: source: hosted version: "3.2.1" http_parser: - dependency: transitive + dependency: "direct main" description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" @@ -1270,7 +1278,7 @@ packages: source: hosted version: "1.15.0" mime: - dependency: transitive + dependency: "direct main" description: name: mime sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" diff --git a/pubspec.yaml b/pubspec.yaml index cb6fd4d..5e19f7c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,6 +63,9 @@ dependencies: googleapis_auth: ^1.6.0 flutter_confetti: ^0.3.0 # intl_phone_field: ^3.1.0 + flutter_contacts: ^1.1.8 + mime: ^1.0.6 + http_parser: ^4.0.2 dev_dependencies: flutter_test: diff --git a/ride9-11.zip b/ride9-11.zip new file mode 100644 index 0000000000000000000000000000000000000000..a979ff00ea82b3e4f5d04263ed4e448cd9f90059 GIT binary patch literal 675295 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≷qO7P(ex`oee)jx?NoL}nC9t= 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
    m}X)$^B*J?ox5Ah3Mzx+UYHo`{e$T73jf~ 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

    e|yFM2cU@j3)P?bx%E%tP<_(l|Eh8Q65Umw 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

    L=$jy;weIJ*!62$#h}ABDN~KyM#Nd$y@Dq}x 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 N@krC8RD`dTPP(JHj?F14O#?qQ$_N5bO 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

    ^@)JIg7 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 Date: Tue, 12 Nov 2024 00:45:23 +0200 Subject: [PATCH 11/16] 11/11/1 --- android/app/build.gradle | 4 +- lib/controller/firebase/firbase_messge.dart | 45 ++--- .../firebase/local_notification.dart | 13 +- .../home/map_passenger_controller.dart | 155 ++++++++++++------ .../home/profile/invit_controller.dart | 2 +- lib/controller/local/translations.dart | 3 +- .../map_widget.dart/apply_order_widget.dart | 12 +- .../map_widget.dart/left_main_menu_icons.dart | 3 + 8 files changed, 156 insertions(+), 81 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4386811..3f33bef 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 = 93 - versionName = '1.5.93' + versionCode = 94 + versionName = '1.5.94' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index a8227a3..814766d 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -67,7 +67,7 @@ class FirebaseMessagesController extends GetxController { } NotificationController notificationController = - Get.find(); + Get.put(NotificationController()); Future getTokens() async { String? basicAuthCredentials = @@ -126,7 +126,11 @@ class FirebaseMessagesController extends GetxController { notificationController.showNotification( 'Order', message.notification!.body!, 'Order'); } - } else if (message.notification!.title! == 'Apply Ride'.tr) { + } else if (message.notification!.title! == 'Accepted Ride') { + if (Platform.isAndroid) { + notificationController.showNotification( + 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'ding'); + } var passengerList = message.data['passengerList']; var myList = jsonDecode(passengerList) as List; @@ -135,12 +139,7 @@ class FirebaseMessagesController extends GetxController { Get.find().statusRide == 'Apply'; Get.find().isSearchingWindow == false; Get.find().update(); - if (Platform.isAndroid) { - notificationController.showNotification( - 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); - //notificationController.showNotification( - // 'Apply Order'.tr, 'Driver Applied the Ride for You'.tr, 'order1'); - } + // driverAppliedTripSnakBar(); } else if (message.notification!.title! == 'Promo'.tr) { if (Platform.isAndroid) { @@ -177,7 +176,7 @@ class FirebaseMessagesController extends GetxController { } else if (message.notification!.title! == 'message From passenger') { if (Platform.isAndroid) { notificationController.showNotification( - 'message From passenger'.tr, ''.tr, 'tone2'); + 'message From passenger'.tr, ''.tr, 'ding'); } passengerDialog(message.notification!.body!); @@ -185,7 +184,7 @@ class FirebaseMessagesController extends GetxController { } else if (message.notification!.title! == 'message From Driver') { if (Platform.isAndroid) { notificationController.showNotification( - 'message From passenger'.tr, ''.tr, 'tone2'); + 'message From Driver'.tr, ''.tr, 'ding'); } passengerDialog(message.notification!.body!); @@ -204,19 +203,23 @@ class FirebaseMessagesController extends GetxController { // backgroundColor: AppColor.greenColor); if (Platform.isAndroid) { notificationController.showNotification( - 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'tone2'); + 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'ding'); } update(); - } else if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) { - driverArrivePassengerDialoge(); + } else if (message.notification!.title! == 'Hi ,I Arrive your site') { if (Platform.isAndroid) { notificationController.showNotification( - 'Hi ,I Arrive your site'.tr, ''.tr, 'tone2'); + 'Hi ,I Arrive your site'.tr, ''.tr, 'ding'); } + driverArrivePassengerDialoge(); + update(); } else if (message.notification!.title! == "Cancel Trip from driver".tr) { Get.back(); - + if (Platform.isAndroid) { + notificationController.showNotification("Cancel Trip from driver".tr, + "We will look for a new driver.\nPlease wait.".tr, 'cancel'); + } Get.defaultDialog( title: "The driver canceled your ride.".tr, middleText: "We will look for a new driver.\nPlease wait.".tr, @@ -321,13 +324,13 @@ class FirebaseMessagesController extends GetxController { notificationController.showNotification( 'Call End'.tr, message.notification!.body!, - 'tone2', + 'ding', ); } // Assuming GetMaterialApp is initialized and context is valid for navigation // Get.off(const CallPage()); } catch (e) {} - } else if (message.notification!.title! == 'Driver Cancel Your Trip'.tr) { + } else if (message.notification!.title! == 'Driver Cancelled Your Trip') { // Get.snackbar( // 'You will be pay the cost to driver or we will get it from you on next trip' // .tr, @@ -335,7 +338,7 @@ class FirebaseMessagesController extends GetxController { // backgroundColor: AppColor.redColor); if (Platform.isAndroid) { notificationController.showNotification( - 'Driver Cancel Your Trip'.tr, + 'Driver Cancelled Your Trip'.tr, 'you will pay to Driver you will be pay the cost of driver time look to your SEFER Wallet' .tr, 'cancel'); @@ -344,7 +347,7 @@ class FirebaseMessagesController extends GetxController { box.remove(BoxName.tokenParent); Get.find().restCounter(); - Get.offAll(const MapPagePassenger()); + Get.offAll(() => const MapPagePassenger()); } // else if (message.notification!.title! == 'Order Applied') { // Get.snackbar( @@ -401,7 +404,7 @@ class FirebaseMessagesController extends GetxController { title: 'Ok I will go now.'.tr, onPressed: () { FirebaseMessagesController().sendNotificationToPassengerToken( - 'Hi ,I will go now'.tr, + 'Hi ,I will go now', 'I will go now'.tr, Get.find().driverToken, [], @@ -418,7 +421,7 @@ class FirebaseMessagesController extends GetxController { Future passengerDialog(String message) { return Get.defaultDialog( barrierDismissible: false, - title: 'message From passenger'.tr, + title: 'message From Driver'.tr, titleStyle: AppStyle.title, middleTextStyle: AppStyle.title, middleText: message.tr, diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index b6d8c93..0370ab5 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -85,6 +85,8 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:timezone/data/latest.dart' as tz; import 'package:timezone/timezone.dart' as tz; +import '../../print.dart'; + class NotificationController extends GetxController { final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); @@ -185,13 +187,16 @@ class NotificationController extends GetxController { // Initialize and set Cairo timezone tz.initializeTimeZones(); var cairoLocation; - if (box.read(BoxName.countryCode).toString() == 'Egypt') { - cairoLocation = tz.getLocation('Africa/Cairo'); - } else {} // todo get for location country + // if (box.read(BoxName.countryCode).toString() == 'Egypt') { + cairoLocation = tz.getLocation('Africa/Cairo'); + // } else { + // cairoLocation = tz.getLocation('UTC'); + // } // todo get for location country // Set Cairo timezone - + Log.print('cairoLocation: ${cairoLocation}'); final now = tz.TZDateTime.now( cairoLocation); // Use Cairo timezone for the current time + tz.TZDateTime scheduledDate = tz.TZDateTime( cairoLocation, now.year, now.month, now.day, hour, minute); diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index a500876..4664b64 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1780,7 +1780,7 @@ class MapPassengerController extends GetxController { // getCarForFirstConfirm(carType); confirmRideForAllDriverAvailable(); // delayAndFetchRideStatusForAllDriverAvailable(rideId); - } else if (rideStatusDelayed == 'Apply') { + } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { Log.print('rideStatusDelayed == Apply: ${rideStatusDelayed}'); // todo play sound Get.find() @@ -3364,7 +3364,7 @@ class MapPassengerController extends GetxController { reloadCount++; Log.print('reloadCount: $reloadCount'); - if (!rideConfirm) { + if (rideConfirm == false) { clearMarkersExceptStartEnd(); // _smoothlyUpdateMarker(); // startCarLocationSearch(box.read(BoxName.carType)); @@ -3391,59 +3391,122 @@ class MapPassengerController extends GetxController { late Duration durationFromDriverToPassenger; double nearestDistance = double.infinity; - Future getNearestDriverByPassengerLocation() async { - if (polyLines.isEmpty || data.isEmpty) { - return null; // Early return if data is empty - } + // Future getNearestDriverByPassengerLocation() async { + // if (polyLines.isEmpty || data.isEmpty) { + // return null; // Early return if data is empty + // } + // if (!rideConfirm) { + // if (dataCarsLocationByPassenger != 'failure') { + // if (dataCarsLocationByPassenger != null) { + // if (dataCarsLocationByPassenger['message'].length > 0) { + // double nearestDistance = double + // .infinity; // Initialize nearest distance to a large number + // CarLocation? nearestCar; + + // for (var i = 0; + // i < dataCarsLocationByPassenger['message'].length; + // i++) { + // var carLocation = dataCarsLocationByPassenger['message'][i]; + + // // Calculate the distance between passenger's location and current driver's location + // final distance = Geolocator.distanceBetween( + // passengerLocation.latitude, + // passengerLocation.longitude, + // double.parse(carLocation['latitude']), + // double.parse(carLocation['longitude']), + // ); + + // // Calculate duration assuming an average speed of 25 km/h (adjust as needed) + // int durationToPassenger = + // (distance * 25 * (1000 / 3600)).round(); // 25 km/h in m/s + + // // Update the UI with the distance and duration for each car + // update(); + + // // If this distance is smaller than the nearest distance found so far, update nearestCar + // if (distance < nearestDistance) { + // nearestDistance = distance; + + // nearestCar = CarLocation( + // distance: distance, + // duration: durationToPassenger.toDouble(), + // id: carLocation['driver_id'], + // latitude: double.parse(carLocation['latitude']), + // longitude: double.parse(carLocation['longitude']), + // ); + + // // Update the UI with the nearest driver + // update(); + // } + // } + + // // Return the nearest car found + // return nearestCar; + // } + // } + // } + // } + + // // Return null if no drivers are found or if ride is confirmed + // return null; + // } + Future getNearestDriverByPassengerLocation() async { + // if (polyLines.isEmpty && data.isEmpty) { + // return null; // Early return if data is empty + // } + // Log.print('rideConfirm: ${rideConfirm}'); + // Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); if (!rideConfirm) { if (dataCarsLocationByPassenger != 'failure') { - if (dataCarsLocationByPassenger != null) { - if (dataCarsLocationByPassenger['message'].length > 0) { - double nearestDistance = double - .infinity; // Initialize nearest distance to a large number - CarLocation? nearestCar; + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger['message'] != null && + dataCarsLocationByPassenger['message'].length > 0) { + double nearestDistance = + double.infinity; // Initialize nearest distance + CarLocation? nearestCar; - for (var i = 0; - i < dataCarsLocationByPassenger['message'].length; - i++) { - var carLocation = dataCarsLocationByPassenger['message'][i]; + for (var i = 0; + i < dataCarsLocationByPassenger['message'].length; + i++) { + var carLocation = dataCarsLocationByPassenger['message'][i]; + Log.print('carLocation: ${carLocation}'); - // Calculate the distance between passenger's location and current driver's location - final distance = Geolocator.distanceBetween( - passengerLocation.latitude, - passengerLocation.longitude, - double.parse(carLocation['latitude']), - double.parse(carLocation['longitude']), + // Calculate distance between passenger's location and current driver's location + final distance = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + double.parse(carLocation['latitude']), + double.parse(carLocation['longitude']), + ); + + // Calculate duration assuming an average speed of 25 km/h (adjust as needed) + int durationToPassenger = (distance * 25 * (1000 / 3600)).round(); + Log.print('distance: ${distance}'); + Log.print('durationToPassenger: ${durationToPassenger}'); + + // Update the UI with the distance and duration for each car + update(); + + // If this distance is smaller than the nearest distance found so far, update nearestCar + if (distance < nearestDistance) { + nearestDistance = distance; + + nearestCar = CarLocation( + distance: distance, + duration: durationToPassenger.toDouble(), + id: carLocation['driver_id'], + latitude: double.parse(carLocation['latitude']), + longitude: double.parse(carLocation['longitude']), ); - - // Calculate duration assuming an average speed of 25 km/h (adjust as needed) - int durationToPassenger = - (distance * 25 * (1000 / 3600)).round(); // 25 km/h in m/s - - // Update the UI with the distance and duration for each car + Log.print('nearestCar: ${nearestCar}'); + // Update the UI with the nearest driver update(); - - // If this distance is smaller than the nearest distance found so far, update nearestCar - if (distance < nearestDistance) { - nearestDistance = distance; - - nearestCar = CarLocation( - distance: distance, - duration: durationToPassenger.toDouble(), - id: carLocation['driver_id'], - latitude: double.parse(carLocation['latitude']), - longitude: double.parse(carLocation['longitude']), - ); - - // Update the UI with the nearest driver - update(); - } } - - // Return the nearest car found - return nearestCar; } + + // Return the nearest car found + return nearestCar; } } } diff --git a/lib/controller/home/profile/invit_controller.dart b/lib/controller/home/profile/invit_controller.dart index 50ed888..13e1628 100644 --- a/lib/controller/home/profile/invit_controller.dart +++ b/lib/controller/home/profile/invit_controller.dart @@ -240,7 +240,7 @@ Download the SEFER app now and enjoy your ride! }); if (response != 'failure') { - var d = jsonDecode(response); + var d = response; Get.snackbar('Success', 'Invite sent successfully'.tr); String message = '${'*SEFER APP CODE*'.tr}\n\n' diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 64f8e7a..d46e785 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -56,7 +56,8 @@ class MyTranslation extends Translations { "I want to order for someone else": "أريد أن أطلب لشخص آخر", "Cancel Trip from driver": "إلغاء الرحلة من السائق", "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", - + "Ok I will go now.": "حسنًا، سأذهب الآن.", + "Hi, I will go now": "مرحبًا، سأذهب الآن.", "upgrade price": "رفع السعر", 'airport': 'مطار', "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index 392c352..1f61c68 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -87,11 +87,11 @@ class ApplyOrderWidget extends StatelessWidget { width: 10, ), Container( - height: Get.height * .34, + height: Get.height * .31, width: Get.width * .9, decoration: AppStyle.boxDecoration, child: Column( - mainAxisAlignment: MainAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Row( mainAxisAlignment: MainAxisAlignment.end, @@ -231,7 +231,7 @@ class ApplyOrderWidget extends StatelessWidget { IconButton( onPressed: () async { Get.defaultDialog( - title: 'Select one message'.tr, + title: 'Select one message', titleStyle: AppStyle.title, content: SizedBox( width: 300, @@ -242,7 +242,7 @@ class ApplyOrderWidget extends StatelessWidget { onTap: () { FirebaseMessagesController() .sendNotificationToDriverMAP( - 'message From passenger'.tr, + 'message From passenger', 'Hello, I\'m at the agreed-upon location' .tr, controller.driverToken @@ -274,7 +274,7 @@ class ApplyOrderWidget extends StatelessWidget { onTap: () { FirebaseMessagesController() .sendNotificationToDriverMAP( - 'message From passenger'.tr, + 'message From passenger', 'My location is correct. You can search for me using the navigation app' .tr, controller.driverToken, @@ -471,7 +471,7 @@ class DriverArrivePassengerAndWaitMinute extends StatelessWidget { color: controller.remainingTimeDriverWaitPassenger5Minute < 60 ? AppColor.redColor : AppColor.greenColor, - minHeight: 15, + minHeight: 25, borderRadius: BorderRadius.circular(15), value: controller.progressTimerDriverWaitPassenger5Minute.toDouble(), 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 5d152bd..b8f2985 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 @@ -5,11 +5,13 @@ import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; +import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/notification.dart'; import '../../../controller/firebase/local_notification.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; +import '../../../main.dart'; GetBuilder leftMainMenuIcons() { final textToSpeechController = Get.put(TextToSpeechController()); @@ -103,6 +105,7 @@ GetBuilder leftMainMenuIcons() { // randomMessage.split(':')[1], // "ding", // ); + // print(box.read(BoxName.countryCode).toString()); // }, // icon: const Icon( // Icons.voice_chat, From f796f4bc48f81cbff75bc6b27f7dab2666ac13ec Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 17 Nov 2024 12:02:54 +0200 Subject: [PATCH 12/16] 11/17/1 --- android/app/build.gradle | 4 +- ios/Runner/Info.plist | 4 +- .../firebase/local_notification.dart | 152 ++----- lib/controller/functions/crud.dart | 58 ++- .../home/map_passenger_controller.dart | 409 +++++++++--------- .../home/profile/invit_controller.dart | 63 ++- lib/controller/local/local_controller.dart | 77 +--- lib/controller/local/translations.dart | 5 + .../payment/payment_controller.dart | 3 +- lib/main.dart | 29 +- lib/views/home/HomePage/share_app_page.dart | 221 ++++++++-- .../map_widget.dart/left_main_menu_icons.dart | 10 +- lib/views/widgets/mysnakbar.dart | 69 +++ 13 files changed, 611 insertions(+), 493 deletions(-) create mode 100644 lib/views/widgets/mysnakbar.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 3f33bef..d93fa6f 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 = 94 - versionName = '1.5.94' + versionCode = 97 + versionName = '1.5.97' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ad2e15e..bef9833 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 67 + 69 CFBundleSignature ???? CFBundleVersion - 4.3.67 + 4.3.69 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index 0370ab5..e471e04 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -1,92 +1,12 @@ -// import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -// import 'package:get/get.dart'; -// import 'package:timezone/data/latest.dart' as tz; -// import 'package:timezone/timezone.dart' as tz; - -// class NotificationController extends GetxController { -// final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = -// FlutterLocalNotificationsPlugin(); - -// // Initializes the local notifications plugin -// Future initNotifications() async { -// const AndroidInitializationSettings android = -// AndroidInitializationSettings('@mipmap/launcher_icon'); -// const InitializationSettings initializationSettings = -// InitializationSettings(android: android); -// await _flutterLocalNotificationsPlugin.initialize(initializationSettings); -// } - -// // Displays a notification with the given title and message -// void showNotification(String title, String message, String tone) async { -// AndroidNotificationDetails android = AndroidNotificationDetails( -// 'high_importance_channel', -// 'High Importance Notifications', -// importance: Importance.max, -// priority: Priority.high, -// showWhen: false, -// sound: RawResourceAndroidNotificationSound(tone), -// ); -// DarwinNotificationDetails ios = const DarwinNotificationDetails( -// sound: 'default', -// presentAlert: true, -// presentBadge: true, -// presentSound: true, -// ); -// NotificationDetails details = -// NotificationDetails(android: android, iOS: ios); -// await _flutterLocalNotificationsPlugin.show(0, title, message, details); -// } - -// // Schedules a notification after 1 minute -// void scheduleNotificationAfter1Minute( -// String title, String message, String tone) async { -// AndroidNotificationDetails android = AndroidNotificationDetails( -// 'high_importance_channel', 'High Importance Notifications', -// importance: Importance.max, -// priority: Priority.high, -// showWhen: false, -// sound: RawResourceAndroidNotificationSound(tone)); - -// DarwinNotificationDetails ios = const DarwinNotificationDetails( -// sound: 'default', -// presentAlert: true, -// presentBadge: true, -// presentSound: true, -// ); - -// NotificationDetails details = -// NotificationDetails(android: android, iOS: ios); - -// // Schedule the notification to be shown after 1 minute -// final now = tz.TZDateTime.now(tz.local); -// final scheduledTime = now.add(const Duration(minutes: 1)); - -// await _flutterLocalNotificationsPlugin.zonedSchedule( -// 0, -// title, -// message, -// scheduledTime, -// details, -// androidAllowWhileIdle: true, -// uiLocalNotificationDateInterpretation: -// UILocalNotificationDateInterpretation.absoluteTime, -// matchDateTimeComponents: DateTimeComponents.time, -// ); -// } -// } import 'dart:async'; import 'dart:io'; -import 'package:SEFER/constant/box_name.dart'; -import 'package:SEFER/main.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:timezone/data/latest.dart' as tz; import 'package:timezone/timezone.dart' as tz; -import '../../print.dart'; - class NotificationController extends GetxController { final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); @@ -139,8 +59,11 @@ class NotificationController extends GetxController { await _flutterLocalNotificationsPlugin.show(0, title, message, details); print('Notification shown: $title - $message'); } +// /Users/hamzaaleghwairyeen/development/App/ride 2/lib/controller/firebase/local_notification.dart - void scheduleDailyNotifications( +// Assume _flutterLocalNotificationsPlugin is initialized somewhere in your code + + void scheduleNotificationsForSevenDays( String title, String message, String tone) async { final AndroidNotificationDetails android = AndroidNotificationDetails( 'high_importance_channel', @@ -172,53 +95,68 @@ class NotificationController extends GetxController { } } - // Schedule notifications for 10:00 AM and 3:00 PM daily - await _scheduleNotificationForTime(8, 0, title, message, details); - await _scheduleNotificationForTime(15, 0, title, message, details); - await _scheduleNotificationForTime(20, 0, title, message, details); - // await _scheduleNotificationForTime(0, 22, title, message, details); + // Schedule notifications for the next 7 days + for (int day = 0; day < 7; day++) { + // Schedule for 8:00 AM + await _scheduleNotificationForTime( + day, 8, 0, title, message, details, day * 1000 + 1); // Unique ID - print('Daily notifications scheduled successfully'); + // Schedule for 3:00 PM + await _scheduleNotificationForTime( + day, 15, 0, title, message, details, day * 1000 + 2); // Unique ID + + // Schedule for 8:00 PM + await _scheduleNotificationForTime( + day, 20, 0, title, message, details, day * 1000 + 3); // Unique ID + } + + print('Notifications scheduled successfully for the next 7 days'); } -// Helper function to get the next instance of a specific hour and minute - Future _scheduleNotificationForTime(int hour, int minute, String title, - String message, NotificationDetails details) async { + Future _scheduleNotificationForTime( + int dayOffset, + int hour, + int minute, + String title, + String message, + NotificationDetails details, + int notificationId, + ) async { // Initialize and set Cairo timezone tz.initializeTimeZones(); - var cairoLocation; - // if (box.read(BoxName.countryCode).toString() == 'Egypt') { - cairoLocation = tz.getLocation('Africa/Cairo'); - // } else { - // cairoLocation = tz.getLocation('UTC'); - // } // todo get for location country - // Set Cairo timezone - Log.print('cairoLocation: ${cairoLocation}'); - final now = tz.TZDateTime.now( - cairoLocation); // Use Cairo timezone for the current time + var cairoLocation = tz.getLocation('Africa/Cairo'); + final now = tz.TZDateTime.now(cairoLocation); tz.TZDateTime scheduledDate = tz.TZDateTime( - cairoLocation, now.year, now.month, now.day, hour, minute); + cairoLocation, + now.year, + now.month, + now.day + dayOffset, // Add offset to schedule for the next days + hour, + minute, + ); - // If scheduled time is already past today, schedule it for the next day + // If the scheduled time is in the past, move it to the next day if (scheduledDate.isBefore(now)) { - scheduledDate = scheduledDate.add(const Duration(days: 1)); + scheduledDate = scheduledDate.add(Duration(days: 1)); } print('Current time (Cairo): $now'); print('Scheduling notification for: $scheduledDate'); await _flutterLocalNotificationsPlugin.zonedSchedule( - 0, // Use unique IDs if you want to manage each notification separately + notificationId, // Unique ID for each notification title, message, scheduledDate, details, - androidAllowWhileIdle: true, + androidScheduleMode: AndroidScheduleMode.exact, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime, - matchDateTimeComponents: DateTimeComponents.time, + matchDateTimeComponents: + null, // Don't repeat automatically; we handle 7 days manually ); - print('Notification scheduled successfully for Cairo timezone'); + + print('Notification scheduled successfully for: $scheduledDate'); } } diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 8c0e3a3..96995b0 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -1,18 +1,13 @@ import 'dart:convert'; -import 'dart:io'; -import 'dart:ui'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/main.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:SEFER/env/env.dart'; -import 'package:http_parser/http_parser.dart'; -import 'package:mime/mime.dart'; import '../../constant/api_key.dart'; -import '../../constant/colors.dart'; import '../../print.dart'; import '../../views/widgets/elevated_btn.dart'; import 'add_error.dart'; @@ -79,17 +74,20 @@ class CRUD { } Future sendWhatsAppAuth(String to, String token) async { + var res = await CRUD() + .get(link: AppLink.getApiKey, payload: {'keyName': 'whatsapp_key'}); + var accesstoken = jsonDecode(res)['message']['whatsapp_key']; var headers = { - 'Authorization': 'Bearer ${Env.whatsapp}', + 'Authorization': 'Bearer $accesstoken', 'Content-Type': 'application/json' }; - var request = http.Request( - 'POST', - Uri.parse( - 'https://graph.facebook.com/v20.0/${Env.whatappID}/messages')); - request.body = json.encode({ + + var url = 'https://graph.facebook.com/v20.0/${Env.whatappID}/messages'; + var request = http.Request('POST', Uri.parse(url)); + + var body = json.encode({ "messaging_product": "whatsapp", - "to": to, //"962798583052", + "to": to, "type": "template", "template": { "name": "sefer1", @@ -107,22 +105,38 @@ class CRUD { ] } }); + + request.body = body; request.headers.addAll(headers); - http.StreamedResponse response = await request.send(); + try { + print('Sending request to $url'); + print('Request headers: $headers'); + print('Request body: $body'); - if (response.statusCode == 200) { - print(await response.stream.bytesToString()); - Get.defaultDialog( + http.StreamedResponse response = await request.send(); + + if (response.statusCode == 200) { + String responseBody = await response.stream.bytesToString(); + print('Response: $responseBody'); + + Get.defaultDialog( title: 'You will receive a code in WhatsApp Messenger'.tr, middleText: 'wait 1 minute to recive message'.tr, confirm: MyElevatedButton( - title: 'OK'.tr, - onPressed: () { - Get.back(); - })); - } else { - print(response.reasonPhrase); + title: 'OK'.tr, + onPressed: () { + Get.back(); + }, + ), + ); + } else { + String errorBody = await response.stream.bytesToString(); + print('Error ${response.statusCode}: ${response.reasonPhrase}'); + print('Error body: $errorBody'); + } + } catch (e) { + print('Exception occurred: $e'); } } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 4664b64..f17c4f5 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1,8 +1,11 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:math' show Random, cos, pi, pow, sin, sqrt; +import 'dart:math' show Random, cos, max, min, pi, pow, sin, sqrt; import 'dart:math' as math; +import 'dart:ui'; import 'package:SEFER/constant/univeries_polygon.dart'; +import 'package:SEFER/controller/firebase/local_notification.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter_confetti/flutter_confetti.dart'; import 'package:vector_math/vector_math.dart' show radians, degrees; @@ -1364,7 +1367,7 @@ class MapPassengerController extends GetxController { Set notifiedDrivers = {}; - confirmRideForAllDriverAvailable() async { + confirmRideForAllDriverAvailable11() async { // Fetch car locations await getCarsLocationByPassengerAndReloadMarker( box.read(BoxName.carType), 3000); @@ -1419,7 +1422,7 @@ class MapPassengerController extends GetxController { // Timer for 5 iterations, runs every 2 seconds int iteration = 0; Timer.periodic(const Duration(seconds: 2), (timer) async { - if (iteration >= 5) { + if (iteration >= 10) { timer.cancel(); return; } @@ -1539,94 +1542,117 @@ class MapPassengerController extends GetxController { } } - confirmRideForAllDriverAvailable1() async { - int attempts = 0; - const int maxAttempts = 4; - const Duration delayDuration = Duration(seconds: 2); + Future confirmRideForAllDriverAvailable() async { + // Try to fetch car locations up to 4 times with a 2-second delay + bool driversFound = false; + for (int attempt = 0; attempt < 4; attempt++) { + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); - // Initial data fetch - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger != 'failure') { - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - timeToPassengerFromDriverAfterApplied = 60; - - // Create a set to keep track of notified driver IDs - Set notifiedDriverIds = {}; - - // Send the initial ride request once - rideId = await CRUD().post( - link: "${AppLink.seferCairoServer}/ride/rides/add.php", - payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) => jsonDecode(value)['message']); - - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - } - // Add the initially available drivers to the notified set - for (var driver in dataCarsLocationByPassenger['data']) { - notifiedDriverIds.add(driver['driver_id'].toString()); + // Check if dataCarsLocationByPassenger is valid and contains drivers + if (dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null) { + driversFound = true; + break; // Exit loop if drivers are found } - // Periodically check for new drivers - Timer.periodic(delayDuration, (Timer timer) async { - attempts++; + // Wait 2 seconds before next attempt + await Future.delayed(const Duration(seconds: 2)); + } + // If no drivers were found after 4 attempts, show a dialog + if (!driversFound) { + Get.dialog( + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: CupertinoAlertDialog( + title: Text( + "No Car or Driver Found in your area.".tr, + style: AppStyle.title.copyWith( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + content: Text( + "No Car or Driver Found in your area.".tr, + style: AppStyle.title.copyWith(fontSize: 16), + ), + actions: [ + CupertinoDialogAction( + onPressed: () { + Get.back(); + Get.offAll(() => const MapPagePassenger()); + }, + child: Text('OK'.tr, + style: const TextStyle(color: AppColor.greenColor)), + ), + ], + ), + ), + barrierDismissible: false, + ); + + return; + } + + // Proceed with the rest of the function if drivers are found + PaymentController paymentController = Get.find(); + rideConfirm = true; + shouldFetch = true; + isBottomSheetShown = false; + timeToPassengerFromDriverAfterApplied = 60; + + // Add ride to database + await CRUD() + .post(link: "${AppLink.seferCairoServer}/ride/rides/add.php", payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }).then((value) { + if (value is String) { + final parsedValue = jsonDecode(value); + rideId = parsedValue['message']; + } else if (value is Map) { + rideId = value['message']; + } else { + Log.print('Unexpected response type: ${value.runtimeType}'); + } + + // Timer to notify drivers every 2 seconds for 5 iterations + int iteration = 0; + Timer.periodic(const Duration(seconds: 2), (timer) async { + if (iteration >= 5) { + timer.cancel(); + return; + } + iteration++; + + // Reload driver locations and notify available drivers await getCarsLocationByPassengerAndReloadMarker( box.read(BoxName.carType), 3000); - - if (dataCarsLocationByPassenger != 'failure') { - // Check for new drivers and notify them - for (var driver in dataCarsLocationByPassenger['data']) { - String driverId = driver['driver_id'].toString(); - - // Only notify new drivers - if (!notifiedDriverIds.contains(driverId)) { - notifiedDriverIds.add(driverId); - - // Prepare notification body + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null) { + for (var driverData in dataCarsLocationByPassenger['data']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); List body = [ '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', @@ -1642,10 +1668,11 @@ class MapPassengerController extends GetxController { durationByPassenger.toString(), distanceByPassenger.toString(), paymentController.isWalletChecked.toString(), - driver['token'].toString(), + driverData['token'].toString(), durationToPassenger.toString(), rideId, rideTimerBegin.toString(), + driverId, durationToRide.toString(), Get.find().wayPoints.length > 1 ? 'haveSteps' @@ -1656,10 +1683,10 @@ class MapPassengerController extends GetxController { placesCoordinate[3], placesCoordinate[4], costForDriver.toStringAsFixed(2), - double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 ? double.parse(box.read(BoxName.passengerWalletTotal)) .toStringAsFixed(2) - : '0', + : '0'), box.read(BoxName.email).toString(), data[0]['start_address'], data[0]['end_address'], @@ -1667,37 +1694,43 @@ class MapPassengerController extends GetxController { kazan.toStringAsFixed(0), passengerRate.toStringAsFixed(2), ]; - - // Send notification to the new driver FirebaseMessagesController().sendNotificationToDriverMAP( 'OrderSpeed', - rideId.toString(), - driver['token'].toString(), + rideId, + driverData['token'].toString(), body, 'order.wav', ); } } - } else { - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); - }); - } - - // Stop after max attempts - if (attempts >= maxAttempts) { - timer.cancel(); } }); - } else { - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); + }); + + // If an additional endpoint is available, post data there as well + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), }); } + delayAndFetchRideStatusForAllDriverAvailable(rideId); + update(); } icreaseForSameRideAndDelay() { @@ -1781,7 +1814,7 @@ class MapPassengerController extends GetxController { confirmRideForAllDriverAvailable(); // delayAndFetchRideStatusForAllDriverAvailable(rideId); } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { - Log.print('rideStatusDelayed == Apply: ${rideStatusDelayed}'); + Log.print('rideStatusDelayed == Apply: $rideStatusDelayed'); // todo play sound Get.find() .playSoundFromAssets('assets/start.wav'); @@ -1837,17 +1870,29 @@ class MapPassengerController extends GetxController { int attemptCounter = 0; bool isApplied = false; tick = 0; - Log.print('tick delayAndFetchRideStatusForAllDriverAvailable: $tick'); + bool shouldContinueSearching = true; // Flag to control searching void fetchRideStatus() async { - if (attemptCounter < maxAttempts && isApplied == false || tick < 15) { + if (attemptCounter < maxAttempts && + !isApplied && + shouldContinueSearching) { attemptCounter++; tick++; var res = await getRideStatus(rideId); String rideStatusDelayed = res.toString(); - if (rideStatusDelayed == 'Apply' || rideStatusDelayed == 'Applied') { + if (rideStatusDelayed == 'Cancel') { + shouldContinueSearching = false; // Stop searching + attemptCounter = maxAttempts + 1; + NotificationController().showNotification( + "Order Cancelled".tr, "you canceled order".tr, 'ding'); + } else if (rideStatusDelayed == 'Apply' || + rideStatusDelayed == 'Applied') { await getUpdatedRideForDriverApply(rideId); + NotificationController().showNotification( + 'Order Accepted'.tr, + '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', + 'ding'); isApplied = true; shouldFetch = false; statusRide = 'Apply'; @@ -1855,89 +1900,14 @@ class MapPassengerController extends GetxController { isSearchingWindow = false; startTimer(); - update(); startTimerFromDriverToPassengerAfterApplied(); + shouldContinueSearching = false; // Stop searching if applied } else if (attemptCounter >= maxAttempts && rideStatusDelayed != 'Cancel') { - shouldFetch = false; - // If the status is still not "Apply" after 15 attempts - MyDialog().getDialog('upgrade price'.tr, - 'You can upgrade price to may driver accept your order'.tr, () { - Get.back(); - Get.defaultDialog( - barrierDismissible: false, - title: "Increase Your Trip Fee (Optional)".tr, - titleStyle: AppStyle.title, - content: Column( - children: [ - Text( - "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers." - .tr, - style: AppStyle.title, - textAlign: TextAlign.center, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - IconButton( - onPressed: () { - increasFeeFromPassenger.text = - (totalPassenger + 6).toStringAsFixed(1); - update(); - }, - icon: Column( - children: [ - Text( - '6', - style: AppStyle.number, - ), - Container( - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: AppColor.greenColor), - child: const Icon( - Icons.arrow_circle_up, - size: 30, - color: AppColor.secondaryColor, - ), - ), - ], - ), - ), - SizedBox( - width: 100, - child: Form( - key: increaseFeeFormKey, - child: MyTextForm( - controller: increasFeeFromPassenger, - label: totalPassenger.toStringAsFixed(2), - hint: totalPassenger.toStringAsFixed(2), - type: TextInputType.number), - ), - ), - ], - ) - ], - ), - actions: [ - MyElevatedButton( - title: "No, thanks", - onPressed: () async { - await cancelRide(); - Get.back(); - }), - MyElevatedButton( - title: "Increase Fee".tr, - kolor: AppColor.greenColor, - onPressed: () { - increaseFeeByPassengerAndReOrder(); - }) - ], - ); - }); + shouldContinueSearching = false; // Stop searching + // Show dialog to increase fee... update(); - print('Stopped fetching ride status after 15 attempts.'); } else { Timer(const Duration(seconds: 2), fetchRideStatus); } @@ -2026,7 +1996,7 @@ class MapPassengerController extends GetxController { FirebaseMessagesController().sendNotificationToDriverMAP( 'Order Applied'.tr, '$driverName Apply order\nTake attention in other order'.tr, - driverToken, + driverToken.toString(), [], 'start.wav', ); @@ -2912,7 +2882,7 @@ class MapPassengerController extends GetxController { FirebaseMessagesController().sendNotificationToDriverMAP( 'Cancel Trip'.tr, 'Trip Cancelled'.tr, - driverToken, + driverToken.toString(), [], 'cancel.wav', ); @@ -3313,23 +3283,56 @@ class MapPassengerController extends GetxController { // Log.print('BoxName.serverChosen: ${box.read(BoxName.serverChosen)}'); newStartPointLocation = passengerLocation; - Log.print('passengerLocation: ${passengerLocation}'); + Log.print('passengerLocation: $passengerLocation'); speed = _locationData.speed!; // //print location details isLoading = false; update(); } + // LatLngBounds calculateBounds(double lat, double lng, double radiusInMeters) { + // const double earthRadius = 6378137.0; // Earth's radius in meters + + // double latDelta = radiusInMeters / earthRadius * (180 / pi); + // double lngDelta = + // radiusInMeters / (earthRadius * cos(pi * lat / 180)) * (180 / pi); + + // return LatLngBounds( + // southwest: LatLng(lat - latDelta, lng - lngDelta), + // northeast: LatLng(lat + latDelta, lng + lngDelta), + // ); + // } LatLngBounds calculateBounds(double lat, double lng, double radiusInMeters) { const double earthRadius = 6378137.0; // Earth's radius in meters - double latDelta = radiusInMeters / earthRadius * (180 / pi); + double latDelta = (radiusInMeters / earthRadius) * (180 / pi); double lngDelta = - radiusInMeters / (earthRadius * cos(pi * lat / 180)) * (180 / pi); + (radiusInMeters / (earthRadius * cos(pi * lat / 180))) * (180 / pi); + + double minLat = lat - latDelta; + double maxLat = lat + latDelta; + + double minLng = lng - lngDelta; + double maxLng = lng + lngDelta; + + // Ensure the latitude is between -90 and 90 + minLat = max(-90.0, minLat); + maxLat = min(90.0, maxLat); + + // Ensure the longitude is between -180 and 180 + minLng = (minLng + 180) % 360 - 180; + maxLng = (maxLng + 180) % 360 - 180; + + // Ensure the bounds are in the correct order + if (minLng > maxLng) { + double temp = minLng; + minLng = maxLng; + maxLng = temp; + } return LatLngBounds( - southwest: LatLng(lat - latDelta, lng - lngDelta), - northeast: LatLng(lat + latDelta, lng + lngDelta), + southwest: LatLng(minLat, minLng), + northeast: LatLng(maxLat, maxLng), ); } @@ -3470,7 +3473,7 @@ class MapPassengerController extends GetxController { i < dataCarsLocationByPassenger['message'].length; i++) { var carLocation = dataCarsLocationByPassenger['message'][i]; - Log.print('carLocation: ${carLocation}'); + Log.print('carLocation: $carLocation'); // Calculate distance between passenger's location and current driver's location final distance = Geolocator.distanceBetween( @@ -3482,8 +3485,8 @@ class MapPassengerController extends GetxController { // Calculate duration assuming an average speed of 25 km/h (adjust as needed) int durationToPassenger = (distance * 25 * (1000 / 3600)).round(); - Log.print('distance: ${distance}'); - Log.print('durationToPassenger: ${durationToPassenger}'); + Log.print('distance: $distance'); + Log.print('durationToPassenger: $durationToPassenger'); // Update the UI with the distance and duration for each car update(); @@ -3499,7 +3502,7 @@ class MapPassengerController extends GetxController { latitude: double.parse(carLocation['latitude']), longitude: double.parse(carLocation['longitude']), ); - Log.print('nearestCar: ${nearestCar}'); + Log.print('nearestCar: $nearestCar'); // Update the UI with the nearest driver update(); } @@ -4283,7 +4286,7 @@ class MapPassengerController extends GetxController { totalCostPassenger = totalDriver1 + (totalDriver1 * kazan / 100); totalPassenger = costSpeed + (costSpeed * kazan / 100); if (isInUniversity) { - Log.print('isInUniversity: ${isInUniversity}'); + Log.print('isInUniversity: $isInUniversity'); totalPassengerComfort = 20 + (costComfort + (costComfort * kazan / 100)).ceilToDouble(); totalPassengerLady = @@ -4325,7 +4328,7 @@ class MapPassengerController extends GetxController { totalME = totalCostPassenger - tax; costForDriver = fuelPrice * (20 / 210) * distance; } else { - Log.print('isInUniversity: ${isInUniversity}'); + Log.print('isInUniversity: $isInUniversity'); totalPassengerComfort = (costComfort + (costComfort * kazan / 100)).ceilToDouble(); totalPassengerLady = diff --git a/lib/controller/home/profile/invit_controller.dart b/lib/controller/home/profile/invit_controller.dart index 13e1628..e7307f2 100644 --- a/lib/controller/home/profile/invit_controller.dart +++ b/lib/controller/home/profile/invit_controller.dart @@ -4,8 +4,8 @@ import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/controller/functions/crud.dart'; -import 'package:SEFER/controller/home/payment/captain_wallet_controller.dart'; import 'package:SEFER/controller/payment/payment_controller.dart'; +import 'package:SEFER/views/widgets/mysnakbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_contacts/contact.dart'; import 'package:flutter_contacts/flutter_contacts.dart'; @@ -13,6 +13,7 @@ import 'package:get/get.dart'; import 'package:share/share.dart'; import '../../../main.dart'; +import '../../../print.dart'; import '../../../views/widgets/my_dialog.dart'; import '../../functions/launch.dart'; import '../../notification/notification_captain_controller.dart'; @@ -117,23 +118,49 @@ Download the SEFER app now and enjoy your ride! Future pickContacts() async { try { + // Request contacts permission if (await FlutterContacts.requestPermission(readonly: true)) { - final List fetchedContacts = - await FlutterContacts.getContacts(withProperties: true); - contacts = fetchedContacts; + // Fetch all contacts with full properties + final List allContacts = await FlutterContacts.getContacts( + withProperties: true, + withThumbnail: false, + withPhoto: true, + ); - // Convert contacts to a list of maps - contactMaps.value = fetchedContacts.map((contact) { - return { - 'name': contact.displayName, - 'phones': - contact.phones.map((phone) => phone.normalizedNumber).toList(), - 'emails': contact.emails.map((email) => email.address).toList(), - }; - }).toList(); - update(); + // Check if contacts are available + if (allContacts.isNotEmpty) { + // Store the contacts + contacts = allContacts; + Log.print('contacts: $contacts'); - if (contacts.isEmpty) { + // Convert contacts to a list of maps + contactMaps.value = await Future.wait(contacts.map((contact) async { + Log.print('Contact name: ${contact.displayName}'); + + // Fetch phone numbers separately + final phones = await contact.phones; + Log.print('Contact phones: $phones'); + + // Fetch email addresses separately + final emails = await contact.emails; + Log.print('Contact emails: $emails'); + + // Handle empty or null values + return { + 'name': contact.displayName ?? '', + 'phones': phones + .where((phone) => phone.normalizedNumber != null) + .map((phone) => phone.normalizedNumber ?? 'No number') + .toList(), + 'emails': emails + .where((email) => email.address != null) + .map((email) => email.address ?? 'No email') + .toList(), + }; + }).toList()); + + update(); + } else { Get.snackbar('No contacts available'.tr, 'Please add contacts to your phone.'.tr); } @@ -225,8 +252,10 @@ Download the SEFER app now and enjoy your ride! } void sendInviteToPassenger() async { - if (invitePhoneController.text.isEmpty) { - Get.snackbar('Error', 'Please enter an phone address'.tr); + if (invitePhoneController.text.isEmpty || + invitePhoneController.text.length < 11) { + mySnackeBarError('Please enter a correct phone'.tr); + return; } diff --git a/lib/controller/local/local_controller.dart b/lib/controller/local/local_controller.dart index 1f61cb8..ebb51cb 100644 --- a/lib/controller/local/local_controller.dart +++ b/lib/controller/local/local_controller.dart @@ -20,72 +20,58 @@ class LocaleController extends GetxController { case "ar": locale = const Locale("ar"); appTheme = themeArabic; - box.write(BoxName.lang, 'ar'); break; case "en": locale = const Locale("en"); appTheme = themeEnglish; - box.write(BoxName.lang, 'en'); break; case "tr": locale = const Locale("tr"); appTheme = themeEnglish; - box.write(BoxName.lang, 'tr'); break; case "fr": locale = const Locale("fr"); appTheme = themeEnglish; - box.write(BoxName.lang, 'fr'); break; case "it": locale = const Locale("it"); appTheme = themeEnglish; - box.write(BoxName.lang, 'it'); break; case "de": locale = const Locale("de"); appTheme = themeEnglish; - box.write(BoxName.lang, 'de'); break; case "el": locale = const Locale("el"); appTheme = themeEnglish; - box.write(BoxName.lang, 'el'); break; case "es": locale = const Locale("es"); appTheme = themeEnglish; - box.write(BoxName.lang, 'es'); break; case "fa": locale = const Locale("fa"); - appTheme = themeEnglish; - box.write(BoxName.lang, 'fa'); + appTheme = themeArabic; break; case "zh": locale = const Locale("zh"); appTheme = themeEnglish; - box.write(BoxName.lang, 'zh'); break; case "ru": locale = const Locale("ru"); appTheme = themeEnglish; - box.write(BoxName.lang, 'ru'); break; case "hi": locale = const Locale("hi"); appTheme = themeEnglish; - box.write(BoxName.lang, 'hi'); break; default: locale = Locale(Get.deviceLocale!.languageCode); - box.write(BoxName.lang, Get.deviceLocale!.languageCode); appTheme = themeEnglish; break; } box.write(BoxName.lang, langcode); - // box.write(BoxName.lang, langcode); Get.changeTheme(appTheme); Get.updateLocale(locale); restartApp(); @@ -94,62 +80,15 @@ class LocaleController extends GetxController { @override void onInit() { - String storedLang = box.read(BoxName.lang) ?? "ar"; - switch (storedLang) { - case "ar": - language = const Locale("ar"); - appTheme = themeArabic; - break; - case "en": - language = const Locale("en"); - appTheme = themeEnglish; - break; - case "tr": - language = const Locale("tr"); - appTheme = themeEnglish; - break; - case "fr": - language = const Locale("fr"); - appTheme = themeEnglish; - break; - case "it": - language = const Locale("it"); - appTheme = themeEnglish; - break; - case "de": - language = const Locale("de"); - appTheme = themeEnglish; - break; - case "el": - language = const Locale("el"); - appTheme = themeEnglish; - break; - case "es": - language = const Locale("es"); - appTheme = themeEnglish; - break; - case "fa": - language = const Locale("fa"); - appTheme = themeArabic; - break; - case "zh": - language = const Locale("zh"); - appTheme = themeEnglish; - break; - case "ru": - language = const Locale("ru"); - appTheme = themeEnglish; - break; - case "hi": - language = const Locale("hi"); - appTheme = themeEnglish; - break; - default: - language = Locale(Get.deviceLocale!.languageCode); - appTheme = themeEnglish; - break; + String? storedLang = box.read(BoxName.lang); + if (storedLang == null) { + // Use device language if no language is stored + storedLang = Get.deviceLocale!.languageCode; + box.write(BoxName.lang, storedLang); } + changeLang(storedLang); + super.onInit(); } } diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index d46e785..2f75fa8 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -52,13 +52,18 @@ class MyTranslation extends Translations { "Pick or Tap to confirm": "حدد أو انقر للتأكيد", "Select Order Type": "حدد نوع الطلب", "Choose who this order is for": "اختر لمن هذا الطلب", + "Order Accepted": "تم قبول الطلب", "with type": "مع النوع", + "accepted your order at price": "قبل طلبك بالسعر", "I want to order for myself": "أريد أن أطلب لنفسي", "I want to order for someone else": "أريد أن أطلب لشخص آخر", "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "Order Cancelled": "تم إلغاء الطلب", + "you canceled order": "لقد قمت بإلغاء الطلب", "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", "Ok I will go now.": "حسنًا، سأذهب الآن.", "Hi, I will go now": "مرحبًا، سأذهب الآن.", "upgrade price": "رفع السعر", + 'Please enter a correct phone': 'يرجى إدخال رقم هاتف صحيح', 'airport': 'مطار', "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": "أفضل اختيار لسيارة مريحة مع طريق ونقاط توقف مرنة. يقدم هذا المطار تأشيرة دخول بهذا السعر.", diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index b698d24..4aa3bd7 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -699,7 +699,8 @@ class PaymentController extends GetxController { ); // if (response!.success == true && response.responseCode == '200') { - if (response!.responseCode == '200' && response.success == true) { + if (response!.responseCode.toString() == '200' && + response.success == true) { // Log.print('transactionID wewer: ${response.transactionID}'); Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); method(); diff --git a/lib/main.dart b/lib/main.dart index 4bf3b65..534e1a2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -45,18 +45,6 @@ void main() async { // if (Platform.isAndroid) { NotificationController notificationController = Get.put(NotificationController()); - await notificationController.initNotifications(); - - // Generate a random index to pick a message - final random = Random(); - final randomMessage = messages[random.nextInt(messages.length)]; - - // Schedule the notification with the random message - notificationController.scheduleDailyNotifications( - randomMessage.split(':')[0], - randomMessage.split(':')[1], - "ding", - ); // await NotificationController().initNotifications(); // } @@ -100,13 +88,18 @@ void main() async { userTokenExpiration: 200, iFrameID: 837992, ); - // Get device information - // List> deviceDataList = - // await DeviceInfoPlus.getDeviceInfo(); - // - // // Print all device data - // DeviceInfoPlus.printDeviceInfo(); + await notificationController.initNotifications(); + // Generate a random index to pick a message + final random = Random(); + final randomMessage = messages[random.nextInt(messages.length)]; + + // Schedule the notification with the random message + notificationController.scheduleNotificationsForSevenDays( + randomMessage.split(':')[0], + randomMessage.split(':')[1], + "tone1", + ); runApp(const MyApp()); } diff --git a/lib/views/home/HomePage/share_app_page.dart b/lib/views/home/HomePage/share_app_page.dart index 312afca..c5b28d2 100644 --- a/lib/views/home/HomePage/share_app_page.dart +++ b/lib/views/home/HomePage/share_app_page.dart @@ -7,6 +7,7 @@ import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../controller/home/profile/invit_controller.dart'; import '../../../main.dart'; +import '../../../print.dart'; class ShareAppPage extends StatelessWidget { final InviteController controller = Get.put(InviteController()); @@ -81,6 +82,40 @@ class ShareAppPage extends StatelessWidget { ); } + // Widget _buildPhoneInput() { + // return Container( + // decoration: BoxDecoration( + // color: CupertinoColors.systemGrey6, + // borderRadius: BorderRadius.circular(8), + // ), + // child: Row( + // children: [ + // Expanded( + // child: CupertinoTextField.borderless( + // controller: controller.invitePhoneController, + // placeholder: 'Enter phone'.tr, + // padding: const EdgeInsets.all(12), + // keyboardType: TextInputType.phone, + // ), + // ), + // CupertinoButton( + // child: const Icon(CupertinoIcons.person_badge_plus, + // color: AppColor.blueColor), + // onPressed: () async { + // await controller.pickContacts(); + // if (controller.contacts.isNotEmpty) { + // if (box.read(BoxName.isSavedPhones) == null) { + // controller.savePhoneToServer(); + // box.write(BoxName.isSavedPhones, true); + // } + // _showContactsDialog(Get.context!); + // } + // }, + // ), + // ], + // ), + // ); + // } Widget _buildPhoneInput() { return Container( decoration: BoxDecoration( @@ -102,12 +137,15 @@ class ShareAppPage extends StatelessWidget { color: AppColor.blueColor), onPressed: () async { await controller.pickContacts(); + Log.print('contacts: ${controller.contacts}'); if (controller.contacts.isNotEmpty) { - if (box.read(BoxName.isSavedPhones) == null) { - controller.savePhoneToServer(); - box.write(BoxName.isSavedPhones, true); - } - _showContactsDialog(Get.context!); + _showContactsDialog(Get + .context!); // Show contacts dialog after loading contacts + } else { + Get.snackbar( + 'No contacts available'.tr, + 'Please add contacts to your phone.'.tr, + ); } }, ), @@ -326,48 +364,38 @@ class ShareAppPage extends StatelessWidget { } void _showContactsDialog(BuildContext context) { - showCupertinoModalPopup( - context: context, - builder: (BuildContext context) => Container( + Get.defaultDialog( + title: 'Choose from contact'.tr, + content: SizedBox( height: 400, - decoration: BoxDecoration( - color: CupertinoColors.systemBackground, - borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), - boxShadow: [ - BoxShadow( - color: CupertinoColors.black.withOpacity(0.2), - offset: const Offset(0, -4), - blurRadius: 10, - ), - ], - ), + width: 400, child: Column( children: [ // Header with cancel and title - Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), - decoration: const BoxDecoration( - borderRadius: BorderRadius.vertical(top: Radius.circular(20)), - color: CupertinoColors.systemGrey6, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - CupertinoButton( - padding: EdgeInsets.zero, - child: Text( - 'Cancel'.tr, - style: const TextStyle(color: CupertinoColors.systemBlue), - ), - onPressed: () => Navigator.pop(context), - ), - Container( - child: Text('Choose from contact'.tr, - style: AppStyle.title)), - const SizedBox(width: 60), // Balance for Cancel button - ], - ), - ), + // Container( + // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + // decoration: const BoxDecoration( + // borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + // color: CupertinoColors.systemGrey6, + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CupertinoButton( + // padding: EdgeInsets.zero, + // child: Text( + // 'Cancel'.tr, + // style: const TextStyle(color: CupertinoColors.systemBlue), + // ), + // onPressed: () => Navigator.pop(context), + // ), + // Container( + // child: Text('Choose from contact'.tr, + // style: AppStyle.title)), + // const SizedBox(width: 60), // Balance for Cancel button + // ], + // ), + // ), // Contact list Expanded( @@ -433,5 +461,112 @@ class ShareAppPage extends StatelessWidget { ), ), ); + // showCupertinoModalPopup( + // context: context, + // builder: (BuildContext context) => Container( + // height: 400, + // decoration: BoxDecoration( + // color: CupertinoColors.systemBackground, + // borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), + // boxShadow: [ + // BoxShadow( + // color: CupertinoColors.black.withOpacity(0.2), + // offset: const Offset(0, -4), + // blurRadius: 10, + // ), + // ], + // ), + // child: Column( + // children: [ + // // Header with cancel and title + // Container( + // padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + // decoration: const BoxDecoration( + // borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + // color: CupertinoColors.systemGrey6, + // ), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CupertinoButton( + // padding: EdgeInsets.zero, + // child: Text( + // 'Cancel'.tr, + // style: const TextStyle(color: CupertinoColors.systemBlue), + // ), + // onPressed: () => Navigator.pop(context), + // ), + // Container( + // child: Text('Choose from contact'.tr, + // style: AppStyle.title)), + // const SizedBox(width: 60), // Balance for Cancel button + // ], + // ), + // ), + + // // Contact list + // Expanded( + // child: ListView.builder( + // itemCount: controller.contactMaps.length, + // itemBuilder: (context, index) { + // final contact = controller.contactMaps[index]; + // return CupertinoButton( + // padding: EdgeInsets.zero, + // onPressed: () { + // controller.selectPhone(contact['phones'].toString()); + // }, + // child: Container( + // padding: const EdgeInsets.symmetric( + // horizontal: 16, vertical: 12), + // decoration: BoxDecoration( + // color: CupertinoColors.systemBackground, + // border: Border( + // bottom: BorderSide( + // color: CupertinoColors.separator.withOpacity(0.5), + // ), + // ), + // ), + // child: Row( + // children: [ + // // Display contact name and phone number + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text( + // contact['name'], + // style: const TextStyle( + // color: CupertinoColors.label, + // fontSize: 17, + // fontWeight: FontWeight.w500, + // ), + // ), + // Text( + // controller.formatPhoneNumber( + // contact['phones'][0].toString()), + // style: const TextStyle( + // color: CupertinoColors.secondaryLabel, + // fontSize: 15, + // ), + // ), + // ], + // ), + // ), + // // Chevron icon for selection + // const Icon( + // CupertinoIcons.chevron_forward, + // color: CupertinoColors.systemGrey2, + // ), + // ], + // ), + // ), + // ); + // }, + // ), + // ), + // ], + // ), + // ), + // ); } } 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 b8f2985..1d9caad 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 @@ -97,15 +97,7 @@ GetBuilder leftMainMenuIcons() { // borderRadius: BorderRadius.circular(15)), // child: IconButton( // onPressed: () async { - // final random = Random(); - // final randomMessage = - // messages[random.nextInt(messages.length)]; - // NotificationController().showNotification( - // randomMessage.split(':')[0], - // randomMessage.split(':')[1], - // "ding", - // ); - // print(box.read(BoxName.countryCode).toString()); + // Get.to(SmsSignupEgypt()); // }, // icon: const Icon( // Icons.voice_chat, diff --git a/lib/views/widgets/mysnakbar.dart b/lib/views/widgets/mysnakbar.dart new file mode 100644 index 0000000..8b7e73b --- /dev/null +++ b/lib/views/widgets/mysnakbar.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../constant/colors.dart'; + +SnackbarController mySnackeBarError(String message) { + return Get.snackbar( + 'Error'.tr, + message, + backgroundColor: AppColor.redColor.withOpacity(0.9), + colorText: AppColor.secondaryColor, + icon: const Icon(Icons.error, color: AppColor.secondaryColor), + shouldIconPulse: true, + snackPosition: SnackPosition.TOP, + margin: const EdgeInsets.all(10), + borderRadius: 10, + animationDuration: const Duration(milliseconds: 500), + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInBack, + titleText: Text( + 'Error'.tr, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 16, + ), + ), + messageText: Text( + message, + style: TextStyle( + color: Colors.white.withOpacity(0.9), + fontSize: 14, + ), + ), + ); +} + +SnackbarController mySnackbarSuccess(String message) { + return Get.snackbar( + 'Success'.tr, + message, + backgroundColor: AppColor.greenColor + .withOpacity(0.9), // Assuming green color for success + colorText: AppColor.secondaryColor, + icon: const Icon(Icons.check_circle, color: AppColor.secondaryColor), + shouldIconPulse: true, + snackPosition: SnackPosition.TOP, + margin: const EdgeInsets.all(10), + borderRadius: 10, + animationDuration: const Duration(milliseconds: 500), + forwardAnimationCurve: Curves.easeOutBack, + reverseAnimationCurve: Curves.easeInBack, + titleText: Text( + 'Success'.tr, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 16, + ), + ), + messageText: Text( + message, + style: TextStyle( + color: Colors.white.withOpacity(0.9), + fontSize: 14, + ), + ), + ); +} From 231405ce9fec7a33cd742ec36e7c627c85727172 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 20 Nov 2024 20:24:49 +0200 Subject: [PATCH 13/16] 11/20/1 --- android/app/build.gradle | 4 +- ios/Podfile.lock | 20 +- ios/Runner.xcodeproj/project.pbxproj | 3 + ios/Runner/Info.plist | 4 +- lib/constant/links.dart | 1 + .../firebase/local_notification.dart | 100 ++++- .../home/map_passenger_controller.dart | 213 ++++++++--- lib/controller/home/vip_waitting_page.dart | 190 ++++++++++ lib/controller/local/translations.dart | 26 ++ .../payment/payment_controller.dart | 3 +- .../car_details_widget_to_go.dart | 3 +- .../map_widget.dart/left_main_menu_icons.dart | 156 +------- .../select_driver_mishwari.dart | 347 ++++++++++-------- .../my_wallet/passenger_wallet_dialoge.dart | 6 +- 14 files changed, 725 insertions(+), 351 deletions(-) create mode 100644 lib/controller/home/vip_waitting_page.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index d93fa6f..c61fdff 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 = 97 - versionName = '1.5.97' + versionCode = 98 + versionName = '1.5.98' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/ios/Podfile.lock b/ios/Podfile.lock index caf939e..7975ed8 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -28,7 +28,7 @@ PODS: - Firebase/Messaging (= 11.0.0) - firebase_core - Flutter - - FirebaseAppCheckInterop (11.2.0) + - FirebaseAppCheckInterop (11.5.0) - FirebaseAuth (11.0.0): - FirebaseAppCheckInterop (~> 11.0) - FirebaseAuthInterop (~> 11.0) @@ -38,16 +38,16 @@ PODS: - GoogleUtilities/Environment (~> 8.0) - GTMSessionFetcher/Core (~> 3.4) - RecaptchaInterop (~> 100.0) - - FirebaseAuthInterop (11.2.0) + - FirebaseAuthInterop (11.5.0) - FirebaseCore (11.0.0): - FirebaseCoreInternal (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/Logger (~> 8.0) - - FirebaseCoreExtension (11.2.0): + - FirebaseCoreExtension (11.4.1): - FirebaseCore (~> 11.0) - - FirebaseCoreInternal (11.2.0): + - FirebaseCoreInternal (11.5.0): - "GoogleUtilities/NSData+zlib (~> 8.0)" - - FirebaseInstallations (11.2.0): + - FirebaseInstallations (11.4.0): - FirebaseCore (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) @@ -356,13 +356,13 @@ SPEC CHECKSUMS: firebase_auth: 16ac5db3d064db837ecd845080d7e18e4be7c66d firebase_core: ceec591a66629daaee82d3321551692c4a871493 firebase_messaging: 15d8b557010f3bb7b98d0302e1c7c8fbcd244425 - FirebaseAppCheckInterop: ea21450529cf0ebd132788dd8916a0269abc684f + FirebaseAppCheckInterop: d265d9f4484e7ec1c591086408840fdd383d1213 FirebaseAuth: d5cf28be74d7e82257f6a3f717509eff70d3cf4a - FirebaseAuthInterop: 47c09558af5d1b31f16fb352387c72d4804f4a24 + FirebaseAuthInterop: 1219bee9b23e6ebe84c256a0d95adab53d11c331 FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383 - FirebaseCoreExtension: cda74ddfb001224bd8fd1d6e74698b4ed07803de - FirebaseCoreInternal: 0c569513412da9f3b31bd0b340013bbee8f295c5 - FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a + FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e + FirebaseCoreInternal: f47dd28ae7782e6a4738aad3106071a8fe0af604 + FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 FirebaseMessaging: d2d1d9c62c46dd2db49a952f7deb5b16ad2c9742 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0f46ccb..382ae34 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -467,6 +467,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -594,6 +595,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -651,6 +653,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index bef9833..44be063 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 69 + 70 CFBundleSignature ???? CFBundleVersion - 4.3.69 + 4.3.70 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/constant/links.dart b/lib/constant/links.dart index 803a4bb..d823265 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -171,6 +171,7 @@ class AppLink { //-----------------mishwari------------------ static String addMishwari = "$ride/mishwari/add.php"; + static String cancelMishwari = "$ride/mishwari/cancel.php"; static String getMishwari = "$ride/mishwari/get.php"; //-----------------DriverOrder------------------ diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index e471e04..73ba3ff 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -113,6 +113,104 @@ class NotificationController extends GetxController { print('Notifications scheduled successfully for the next 7 days'); } + void scheduleNotificationsForTimeSelected( + String title, String message, String tone, DateTime timeSelected) async { + final AndroidNotificationDetails android = AndroidNotificationDetails( + 'high_importance_channel', + 'High Importance Notifications', + importance: Importance.max, + priority: Priority.high, + sound: RawResourceAndroidNotificationSound(tone), + ); + + const DarwinNotificationDetails ios = DarwinNotificationDetails( + sound: 'default', + presentAlert: true, + presentBadge: true, + presentSound: true, + ); + + final NotificationDetails details = + NotificationDetails(android: android, iOS: ios); + + // Check for the exact alarm permission on Android 12 and above + if (Platform.isAndroid) { + if (await Permission.scheduleExactAlarm.isDenied) { + if (await Permission.scheduleExactAlarm.request().isGranted) { + print('SCHEDULE_EXACT_ALARM permission granted'); + } else { + print('SCHEDULE_EXACT_ALARM permission denied'); + return; + } + } + } + + // Schedule notifications for 10 and 30 minutes before the timeSelected + await _scheduleNotificationForTimeVIP( + timeSelected.subtract(const Duration(minutes: 10)), // 10 minutes before + title, + message, + details, + 1, // Unique ID for 10-minute before notification + ); + + await _scheduleNotificationForTimeVIP( + timeSelected.subtract(const Duration(minutes: 30)), // 30 minutes before + title, + message, + details, + 2, // Unique ID for 30-minute before notification + ); + + print('Notifications scheduled successfully for the time selected'); + } + + Future _scheduleNotificationForTimeVIP( + DateTime scheduledDate, + String title, + String message, + NotificationDetails details, + int notificationId, + ) async { + // Initialize and set Cairo timezone + tz.initializeTimeZones(); + var cairoLocation = tz.getLocation('Africa/Cairo'); + + final now = tz.TZDateTime.now(cairoLocation); + + // Convert to Cairo time + tz.TZDateTime scheduledTZDateTime = + tz.TZDateTime.from(scheduledDate, cairoLocation); + + // Check if 10 minutes before the scheduled time is in the past + if (scheduledTZDateTime + .subtract(const Duration(minutes: 10)) + .isBefore(now)) { + // If the 10 minutes before the scheduled time is in the past, don't schedule + print( + 'Scheduled time minus 10 minutes is in the past. Skipping notification.'); + return; // Skip this notification + } + + print('Current time (Cairo): $now'); + print('Scheduling notification for: $scheduledTZDateTime'); + + await _flutterLocalNotificationsPlugin.zonedSchedule( + notificationId, // Unique ID for each notification + title, + message, + scheduledTZDateTime, + details, + androidScheduleMode: AndroidScheduleMode.exact, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + matchDateTimeComponents: + null, // Don't repeat automatically; we handle manually + ); + + print('Notification scheduled successfully for: $scheduledTZDateTime'); + } + Future _scheduleNotificationForTime( int dayOffset, int hour, @@ -138,7 +236,7 @@ class NotificationController extends GetxController { // If the scheduled time is in the past, move it to the next day if (scheduledDate.isBefore(now)) { - scheduledDate = scheduledDate.add(Duration(days: 1)); + scheduledDate = scheduledDate.add(const Duration(days: 1)); } print('Current time (Cairo): $now'); diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index f17c4f5..1a79e5b 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -5,6 +5,7 @@ import 'dart:math' as math; import 'dart:ui'; import 'package:SEFER/constant/univeries_polygon.dart'; import 'package:SEFER/controller/firebase/local_notification.dart'; +import 'package:SEFER/views/widgets/mysnakbar.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_confetti/flutter_confetti.dart'; import 'package:vector_math/vector_math.dart' show radians, degrees; @@ -42,6 +43,7 @@ import '../functions/crud.dart'; import '../functions/launch.dart'; import '../functions/secure_storage.dart'; import '../payment/payment_controller.dart'; +import 'vip_waitting_page.dart'; class MapPassengerController extends GetxController { bool isLoading = true; @@ -3069,20 +3071,41 @@ class MapPassengerController extends GetxController { } Future getPlaces() async { + var languageCode; + +// Check if `placeDestinationController.text` contains English characters + if (RegExp(r'[a-zA-Z]').hasMatch(placeDestinationController.text)) { + languageCode = 'en'; + } else { + languageCode = 'ar'; + } var url = // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; - + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; + print(url); var response = await CRUD().getGoogleApi(link: url, payload: {}); + Log.print('response: ${response}'); placesDestination = response['results']; update(); } Future getPlacesStart() async { + var languageCode = wayPoint0Controller.text; + + // Regular expression to check for English alphabet characters + final englishRegex = RegExp(r'[a-zA-Z]'); + + // Check if text contains English characters + if (englishRegex.hasMatch(languageCode)) { + languageCode = 'en'; + } else { + languageCode = 'ar'; + } + var url = // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeStartController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeStartController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; var response = await CRUD().getGoogleApi(link: url, payload: {}); @@ -3091,15 +3114,45 @@ class MapPassengerController extends GetxController { } Future getPlacesListsWayPoint(int index) async { + var languageCode = wayPoint0Controller.text; + + // Regular expression to check for English alphabet characters + final englishRegex = RegExp(r'[a-zA-Z]'); + + // Check if text contains English characters + if (englishRegex.hasMatch(languageCode)) { + languageCode = 'en'; + } else { + languageCode = 'ar'; + } + var url = - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; - var response = await CRUD().getGoogleApi(link: url, payload: {}); + try { + var response = await CRUD().getGoogleApi(link: url, payload: {}); - wayPoint0 = response['results']; - placeListResponseAll[index] = response['results']; - update(); + if (response != null && response['results'] != null) { + wayPoint0 = response['results']; + placeListResponseAll[index] = response['results']; + update(); + } else { + print('Error: Invalid response from Google Places API'); + } + } catch (e) { + print('Error fetching places: $e'); + } } + // Future getPlacesListsWayPoint(int index) async { + // var url = + // '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=80000&language=${}&key=${AK.mapAPIKEY.toString()}'; + + // var response = await CRUD().getGoogleApi(link: url, payload: {}); + + // wayPoint0 = response['results']; + // placeListResponseAll[index] = response['results']; + // update(); + // } LatLng fromString(String location) { List parts = location.split(','); @@ -3677,7 +3730,7 @@ class MapPassengerController extends GetxController { isLoading = false; update(); var url = - ('${AppLink.googleMapsLink}directions/json?&language=ar&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); + ('${AppLink.googleMapsLink}directions/json?&language=${box.read(BoxName.lang) ?? 'ar'}&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); var response = await CRUD().getGoogleApi(link: url, payload: {}); data = response['routes'][0]['legs']; @@ -4488,15 +4541,51 @@ class MapPassengerController extends GetxController { } List driversForMishwari = []; + Future selectDriverAndCarForMishwariTrip() async { - var res = await CRUD() - .get(link: AppLink.selectDriverAndCarForMishwariTrip, payload: {}); - if (res != 'failure') { - var d = jsonDecode(res); - driversForMishwari = d['message']; - update(); - } else { - return 'No driver available now try later time\nthanks for using our app' + // Calculate the bounds for 20km + double latitudeOffset = 0.1795; // 20km range in latitude + double longitudeOffset = 0.2074; // 20km range in longitude + + // Calculate bounding box based on passenger's location + double southwestLat = passengerLocation.latitude - latitudeOffset; + double northeastLat = passengerLocation.latitude + latitudeOffset; + double southwestLon = passengerLocation.longitude - longitudeOffset; + double northeastLon = passengerLocation.longitude + longitudeOffset; + + // Create the payload with calculated bounds + var payload = { + 'southwestLat': southwestLat.toString(), + 'northeastLat': northeastLat.toString(), + 'southwestLon': southwestLon.toString(), + 'northeastLon': northeastLon.toString(), + }; + + try { + // Fetch data from the API + var res = await CRUD().get( + link: AppLink.selectDriverAndCarForMishwariTrip, payload: payload); + + if (res != 'failure') { + // Check if response is valid JSON + try { + var d = jsonDecode(res); + driversForMishwari = d['message']; + Log.print('driversForMishwari: ${driversForMishwari}'); + update(); + } catch (e) { + // Handle invalid JSON format + print("Error decoding JSON: $e"); + return 'Server returned invalid data. Please try again later.'; + } + } else { + return 'No driver available now, try again later. Thanks for using our app.' + .tr; + } + } catch (e) { + // Handle network or other exceptions + print("Error fetching data: $e"); + return 'There was an issue connecting to the server. Please try again later.' .tr; } } @@ -4519,22 +4608,23 @@ class MapPassengerController extends GetxController { // changeCashConfirmPageShown(); } + var driverIdVip = ''; Future saveTripData( Map driver, DateTime tripDateTime) async { try { // Prepare trip data Map tripData = { - 'id': driver['id'].toString(), // Ensure the id is a string + 'id': driver['driver_id'].toString(), // Ensure the id is a string 'phone': driver['phone'], 'gender': driver['gender'], 'name': driver['NAME'], 'name_english': driver['name_english'], 'address': driver['address'], - 'religion': driver['religion'], + 'religion': driver['religion'] ?? 'UnKnown', 'age': driver['age'].toString(), // Convert age to String - 'education': driver['education'], - 'license_type': driver['license_type'], - 'national_number': driver['national_number'], + 'education': driver['education'] ?? 'UnKnown', + 'license_type': driver['license_type'] ?? 'UnKnown', + 'national_number': driver['national_number'] ?? 'UnKnown', 'car_plate': driver['car_plate'], 'make': driver['make'], 'model': driver['model'], @@ -4546,12 +4636,12 @@ class MapPassengerController extends GetxController { 'token': driver['token'], 'rating': driver['rating'].toString(), // Convert rating to String 'countRide': - driver['countRide'].toString(), // Convert countRide to String + driver['ride_count'].toString(), // Convert countRide to String 'passengerId': box.read(BoxName.passengerID), 'timeSelected': tripDateTime.toIso8601String(), 'status': 'pending', }; - // Log.print('tripData: $tripData'); + Log.print('tripData: $tripData'); // Send data to server var response = @@ -4560,33 +4650,52 @@ class MapPassengerController extends GetxController { if (response != 'failure') { // Trip saved successfully - Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); + // Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); var id = response['message'].toString(); if (AppLink.endPoint != AppLink.seferCairoServer) { await CRUD().post( link: "${AppLink.endPoint}/ride/mishwari/add.php", payload: tripData); } + driverIdVip = driver['driver_id']; + + DateTime timeSelected = DateTime.parse(tripDateTime.toIso8601String()); + Get.find().scheduleNotificationsForTimeSelected( + "Your trip is scheduled".tr, + "Don't forget your ride!".tr, + "tone1", + timeSelected); // Optionally, set up local notification or send a push notification - // await setLocalNotification(tripDateTime); - await FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderVIP', - rideId.toString(), - driver['token'].toString(), - [ - id, - driver['id'], - passengerLocation.latitude.toString(), - passengerLocation.longitude.toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.passengerID).toString(), - box.read(BoxName.phone).toString(), - box.read(BoxName.email).toString(), - box.read(BoxName.passengerPhotoUrl).toString(), - box.read(BoxName.tokenFCM).toString(), - driver['token'].toString(), - ], - 'order.wav'); + + // await FirebaseMessagesController().sendNotificationToDriverMAP( + // 'OrderVIP', + // rideId.toString(), + // driver['token'].toString(), + // [ + // id, + // driver['id'], + // passengerLocation.latitude.toString(), + // passengerLocation.longitude.toString(), + // box.read(BoxName.name).toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.phone).toString(), + // box.read(BoxName.email).toString(), + // box.read(BoxName.passengerPhotoUrl).toString(), + // box.read(BoxName.tokenFCM).toString(), + // driver['token'].toString(), + // ], + // 'order.wav'); + if (response['message'] == "Trip updated successfully") { + mySnackbarSuccess("Trip updated successfully".tr); + // FirebaseMessagesController().sendNotificationToDriverMAP( + // 'Order VIP Canceld'.tr, + // 'Passenger cancel order'.tr, + // token, + // [], + // 'cancel.wav', + // ); + } + Get.to(() => const VipWaittingPage()); } else { throw Exception('Failed to save trip'); } @@ -4598,6 +4707,22 @@ class MapPassengerController extends GetxController { } } + cancelVip(String token, tripId) async { + // FirebaseMessagesController().sendNotificationToDriverMAP( + // 'Order VIP Canceld'.tr, + // 'Passenger cancel order'.tr, + // token, + // [], + // 'cancel.wav', + // ); + var res = await CRUD() + .post(link: AppLink.cancelMishwari, payload: {'id': tripId}); + if (res != 'failur') { + Get.back(); + mySnackbarSuccess('You canceled VIP trip'.tr); + } + } + initilizeGetStorage() async { if (box.read(BoxName.addWork) == null) { box.write(BoxName.addWork, 'addWork'); diff --git a/lib/controller/home/vip_waitting_page.dart b/lib/controller/home/vip_waitting_page.dart new file mode 100644 index 0000000..3f5a096 --- /dev/null +++ b/lib/controller/home/vip_waitting_page.dart @@ -0,0 +1,190 @@ +import 'dart:convert'; + +import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/style.dart'; +import 'package:SEFER/controller/home/map_passenger_controller.dart'; +import 'package:SEFER/views/widgets/elevated_btn.dart'; +import 'package:SEFER/views/widgets/mycircular.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + +import '../../constant/links.dart'; +import '../functions/crud.dart'; + +class VipWaittingPage extends StatelessWidget { + const VipWaittingPage({super.key}); + + @override + Widget build(BuildContext context) { + Get.put(VipOrderController()); + return Scaffold( + appBar: AppBar( + title: Text("Waiting VIP".tr), + ), + body: GetBuilder(builder: (vipOrderController) { + var data = vipOrderController.tripData[0]; + + // Function to get the localized status string + String getLocalizedStatus(String status) { + switch (status) { + case 'pending': + return 'pending'.tr; + case 'accepted': + return 'accepted'.tr; + case 'rejected': + return 'rejected'.tr; + default: + return 'unknown'.tr; // Fallback for unexpected statuses + } + } + +// Function to get the appropriate status color + Color getStatusColor(String status) { + switch (status) { + case 'pending': + return Colors.yellow; + case 'accepted': + return Colors.green; + case 'rejected': + return Colors.red; + default: + return Colors.grey; // Default color for unknown statuses + } + } + + return vipOrderController.isLoading + ? const MyCircularProgressIndicator() + : Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + margin: const EdgeInsets.all(16), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${'Driver Name:'.tr} ${data['name']}", + style: AppStyle.title, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${'Car Plate:'.tr} ${data['car_plate']}", + style: AppStyle.title, + ), + Text( + "${'Car Make:'.tr} ${data['make']}", + style: AppStyle.title, + ), + Text( + "${'Car Model:'.tr} ${data['model']}", + style: AppStyle.title, + ), + Text( + "${"Car Color:".tr} ${data['color']}", + style: AppStyle.title, + ), + ], + ), + SizedBox( + width: 100, + height: 100, + child: Icon(Fontisto.car, + size: 80, + color: Color(int.parse(data['color_hex'] + .replaceFirst('#', '0xff'))))), + ], + ), + // Text( + // "${'Driver Phone:'.tr} ${data['phone']}", + // style: AppStyle.title, + // ), + const SizedBox(height: 12), + const Divider(), + const SizedBox(height: 12), + + Container( + color: getStatusColor( + data['status']), // Correctly assigns a Color + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "${'Trip Status:'.tr} ${getLocalizedStatus(data['status'])}", // Uses the String function + style: const TextStyle( + fontSize: 16, + ), + ), + ), + ), + Text( + "${'Scheduled Time:'.tr} ${DateFormat('yyyy-MM-dd hh:mm a').format(DateTime.parse(data['timeSelected']))}", + style: const TextStyle(fontSize: 16), + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + MyElevatedButton( + title: "Cancel Trip".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.find().cancelVip( + data['token'].toString(), + data['id'].toString(), + ); + }, + ), + // MyElevatedButton( + // title: "Accept Trip".tr, + // kolor: AppColor.greenColor, + // onPressed: () { + // // Add your cancel trip logic here + // }, + // ), + ], + ), + ], + ), + ), + ); + }), + ); + } +} + +class VipOrderController extends GetxController { + bool isLoading = false; + final arguments = Get.arguments; + late String body; + List tripData = []; + + fetchOrder() async { + isLoading = true; + update(); + var res = await CRUD().get(link: AppLink.getMishwari, payload: { + 'driverId': Get.find().driverIdVip.toString(), + }); + isLoading = false; + update(); + if (res != 'failure') { + tripData = jsonDecode(res)['message']; + update(); + } + } + + @override + void onInit() async { + fetchOrder(); + super.onInit(); + } +} diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 2f75fa8..3d96535 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,32 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Driver Name:": "اسم السائق:", + "Car Plate:": "رقم اللوحة:", + "Order Cancelled": "تم إلغاء الطلب", + 'You canceled VIP trip': "ألغيت الرحلة", + "Passenger cancelled order": "الراكب قام بإلغاء الطلب", + "Your trip is scheduled": "رحلتك مجدولة", + "Don't forget your ride!": "لا تنسَ رحلتك!", + "Trip updated successfully": "تم تحديث الرحلة بنجاح", + "Car Make:": "ماركة السيارة:", + "Car Model:": "طراز السيارة:", "Car Color:": "لون السيارة:", + "Driver Phone:": "رقم هاتف السائق:", + 'Pre-booking': 'احجز مسبقًا', "Waiting VIP": "انتظار VIP", + "Driver List": "قائمة السائقين", "Confirm Trip": "تأكيد الرحلة", + "Select date and time of trip": "حدد تاريخ ووقت الرحلة", + "Date and Time Picker": "اختيار التاريخ والوقت", + "Trip Status:": "حالة الرحلة:", "pending": "قيد الانتظار", + "accepted": "تم القبول", + "rejected": "تم الرفض", + "Scheduled Time:": "الوقت المحدد:", + "No drivers available": "لا يوجد سائقين متاحين", + "Please try again in a few moments": + "يرجى المحاولة مرة أخرى بعد قليل", + "Unknown Driver": "سائق غير معروف", + "rides": "الرحلات", + "The reason is": "السبب هو", + "User does not have a wallet #1652": "المستخدم ليس لديه محفظة ", "Price of trip": "سعر الرحلة", "For Speed and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": "بالنسبة لرحلات السرعة والتوصيل، يتم حساب السعر ديناميكياً. بالنسبة لرحلات الراحة، يتم حساب السعر بناءً على الوقت والمسافة", diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index 4aa3bd7..44b1eb7 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -19,6 +19,7 @@ import '../../constant/colors.dart'; import '../../constant/info.dart'; import '../../constant/links.dart'; import '../../main.dart'; +import '../../print.dart'; import '../functions/crud.dart'; import '../functions/toast.dart'; import 'paymob/paymob_wallet.dart'; @@ -697,7 +698,7 @@ class PaymentController extends GetxController { billingData: PaymobBillingDataWallet(), onPayment: (PaymobResponseWallet response) {}, ); - + // Log.print('response.message!: ${response!.responseCode!}'); // if (response!.success == true && response.responseCode == '200') { if (response!.responseCode.toString() == '200' && response.success == true) { diff --git a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart index 52d5a4c..eb9840e 100644 --- a/lib/views/home/map_widget.dart/car_details_widget_to_go.dart +++ b/lib/views/home/map_widget.dart/car_details_widget_to_go.dart @@ -190,7 +190,8 @@ class CarDetailsTypeToChoose extends StatelessWidget { .totalPassengerRayehGai .toStringAsFixed( 1) - : '50', + : 'Pre-booking' + .tr, style: AppStyle.title.copyWith(fontSize: 20), ), 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 1d9caad..bb77e2d 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 @@ -1,17 +1,11 @@ -import 'dart:math'; - -import 'package:SEFER/views/auth/login_page.dart'; -import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; -import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; -import '../../../constant/notification.dart'; -import '../../../controller/firebase/local_notification.dart'; +import '../../../controller/functions/crud.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; -import '../../../main.dart'; +import '../../../controller/home/vip_waitting_page.dart'; GetBuilder leftMainMenuIcons() { final textToSpeechController = Get.put(TextToSpeechController()); @@ -88,135 +82,23 @@ GetBuilder leftMainMenuIcons() { const SizedBox( width: 5, ), - // AnimatedContainer( - // duration: const Duration(microseconds: 200), - // width: controller.widthMapTypeAndTraffic, - // decoration: BoxDecoration( - // color: AppColor.secondaryColor, - // border: Border.all(), - // borderRadius: BorderRadius.circular(15)), - // child: IconButton( - // onPressed: () async { - // Get.to(SmsSignupEgypt()); - // }, - // icon: const Icon( - // Icons.voice_chat, - // size: 29, - // ), - // ), - // ), - // AnimatedContainer( - // duration: const Duration(microseconds: 200), - // width: controller.widthMapTypeAndTraffic, - // decoration: BoxDecoration( - // color: AppColor.secondaryColor, - // border: Border.all(), - // borderRadius: BorderRadius.circular(15)), - // child: IconButton( - // onPressed: () async { - // 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() - // .sendNotificationToAnyWithoutData( - // 'Cancel'.tr, - // "How much longer will you be?".tr, - // 'fKBBB4_1R0q18-byySHUeG:APA91bHk2RmjjMt6eKr7KQnqh4CK02yW3H5E8g_beVcQFgiCG50j9KCtSU1O8PtvS_gA5xuJLhaorDV9AeslcyLFJFf302tICKMiKgsDP5pWkF5WXNw0-4NsoD-BnJxf0-Do9Vs1Zbpq', - // // d, - // 'ding.wav', - // ); - - // Get.to(SmsSignupEgypt()); - // Log.print( - // 'getUpdatedRideForDriverApply: ${Get.find().driverToken}'); - // Get.find() - // .firstTimeRunToGetCoupon('SEFER25', '1 WEEEK', '25%'); - // }, - // icon: const Icon( - // Icons.chat, - // size: 29, - // ), - // ), - // ), - // // AnimatedContainer( - // duration: const Duration(microseconds: 200), - // width: controller.widthMapTypeAndTraffic, - // decoration: BoxDecoration( - // color: AppColor.secondaryColor, - // border: Border.all(), - // borderRadius: BorderRadius.circular(15)), - // child: IconButton( - // onPressed: () async { - // await CRUD().allMethodForAI( - // 'name,fullName,address,idNumber,cardId,dob', - // AppLink.uploadEgypt, - // 'idFront'); - // - // // await ImageController().choosImage( - // // 'https://api.sefer.live/sefer/uploadEgypt.php', - // // 'FrontId'); - // AC credentials = AC(); - // String apiKey = 'zjujl_qvo_fwjfgjlXrXlBl'; - // String convertedStringN = credentials.c( - // credentials.c(credentials.c(apiKey, cs), cC), cn); - - // String retrievedStringS = credentials.r( - // credentials.r(credentials.r(convertedStringN, cn), cC), - // cs); - // // - // if (retrievedStringS == apiKey) { - // print('convertedStringN --- $convertedStringN'); - // print('retrievedStringS ---$retrievedStringS'); - // print('same'); - // } - // - // // await Get.find() - // // .payWithPayMob(context, '1100', 'EGP'); - // // Initiates a payment with a card using the FlutterPaymob instance - // - // }, - // icon: const Icon( - // // Get.put(AudioRecorderController()).isRecording - // Icons.start, - // size: 29, - // ), - // ), - // ), + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + border: Border.all(), + borderRadius: BorderRadius.circular(15)), + child: IconButton( + onPressed: () async { + Get.to(() => const VipWaittingPage()); + }, + icon: const Icon( + Icons.voice_chat, + size: 29, + ), + ), + ), ], ); })), diff --git a/lib/views/home/map_widget.dart/select_driver_mishwari.dart b/lib/views/home/map_widget.dart/select_driver_mishwari.dart index adda2c2..dfaee4b 100644 --- a/lib/views/home/map_widget.dart/select_driver_mishwari.dart +++ b/lib/views/home/map_widget.dart/select_driver_mishwari.dart @@ -8,6 +8,7 @@ import 'package:get/get.dart'; import '../../../constant/api_key.dart'; import '../../../constant/links.dart'; +import '../../../print.dart'; class CupertinoDriverListWidget extends StatelessWidget { MapPassengerController mapPassengerController = @@ -16,170 +17,207 @@ class CupertinoDriverListWidget extends StatelessWidget { Widget build(BuildContext context) { return CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( - middle: Text('Driver List'.tr), + middle: Text('Driver List'.tr), // Ensure text is properly localized ), child: SafeArea( - child: ListView.separated( - itemCount: mapPassengerController.driversForMishwari.length, - separatorBuilder: (context, index) => const Divider(height: 1), - itemBuilder: (context, index) { - var driver = mapPassengerController.driversForMishwari[index]; - return Container( - decoration: AppStyle.boxDecoration1, - child: CupertinoListTile( - padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), - leading: CircleAvatar( - radius: 25, - backgroundImage: NetworkImage( - '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', - ), - child: Builder( - builder: (context) { - return Image.network( - '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', - fit: BoxFit.cover, - loadingBuilder: (BuildContext context, Widget child, - ImageChunkEvent? loadingProgress) { - if (loadingProgress == null) { - return child; // Image is loaded - } else { - return Center( - child: CircularProgressIndicator( - value: loadingProgress.expectedTotalBytes != null - ? loadingProgress.cumulativeBytesLoaded / - (loadingProgress.expectedTotalBytes ?? 1) - : null, - ), - ); - } - }, - errorBuilder: (BuildContext context, Object error, - StackTrace? stackTrace) { - return const Icon( - Icons.person, // Icon to show when image fails to load - size: 25, // Adjust the size as needed - color: AppColor.blueColor, // Color for the error icon - ); - }, - ); - }, - ), - ), - title: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '${driver['NAME'].toString().split(' ')[0]} ${driver['NAME'].toString().split(' ')[1]}', - style: const TextStyle(fontWeight: FontWeight.bold), + child: mapPassengerController.driversForMishwari.isEmpty + ? Center( + child: Text( + 'No drivers available at the moment. Please try again later.' + .tr, + style: const TextStyle( + fontSize: 18, // Adjust the size as needed + fontWeight: FontWeight.w600, + color: CupertinoColors.inactiveGray, // Customize color + ), + textAlign: TextAlign.center, // Center-align the text ), - Text('${'Age'.tr}: ${driver['age'].toString()}'), - Row( - children: [ - const Icon(CupertinoIcons.star_fill, - size: 16, color: CupertinoColors.systemYellow), - const SizedBox(width: 4), - Text(driver['rating']?.toStringAsFixed(1) ?? 'N/A'.tr), - const SizedBox(width: 8), - Text('${'Rides'.tr}: ${driver['countRide']}'), - ], - ), - ], - ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), - Text('${'Plate'.tr}: ${driver['car_plate']}'), - ], - ), - // Row( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // Text('${'Education'.tr}: ${driver['education']}'), - // ], - // ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SizedBox( - // width: Get.width * .3, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('${'Color'.tr}: ${driver['color']}'), - const SizedBox(width: 8), - Container( - width: 20, - height: 20, - decoration: BoxDecoration( - color: driver['color_hex'].toString() == 'null' - ? Colors.amber - : hexToColor( - driver['color_hex'].toString()), - borderRadius: BorderRadius.circular(4), - border: Border.all(), - ), - ), - ], + ) + : ListView.separated( + itemCount: mapPassengerController.driversForMishwari.length, + separatorBuilder: (context, index) => + const Divider(height: 1), + itemBuilder: (context, index) { + var driver = + mapPassengerController.driversForMishwari[index]; + return Container( + decoration: AppStyle.boxDecoration1, + child: CupertinoListTile( + padding: const EdgeInsets.symmetric( + vertical: 4, horizontal: 8), + leading: CircleAvatar( + radius: 25, + backgroundImage: NetworkImage( + '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', + ), + child: Builder( + builder: (context) { + return Image.network( + '${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg', + fit: BoxFit.cover, + loadingBuilder: (BuildContext context, + Widget child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) { + return child; // Image is loaded + } else { + return Center( + child: CircularProgressIndicator( + value: loadingProgress + .expectedTotalBytes != + null + ? loadingProgress + .cumulativeBytesLoaded / + (loadingProgress + .expectedTotalBytes ?? + 1) + : null, + ), + ); + } + }, + errorBuilder: (BuildContext context, + Object error, StackTrace? stackTrace) { + return const Icon( + Icons + .person, // Icon to show when image fails to load + size: 25, // Adjust the size as needed + color: AppColor + .blueColor, // Color for the error icon + ); + }, + ); + }, + ), ), - ), - ], - ), - ], - ), - onTap: () { - // Handle driver selection - Get.defaultDialog( - title: '${'Selected driver'.tr}: ${driver['NAME']}', - content: Column( - children: [ - Column( + title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), - Text('${'Plate'.tr}: ${driver['car_plate']}'), + '${driver['NAME'].toString().split(' ')[0]} ${driver['NAME'].toString().split(' ')[1]}', + style: + const TextStyle(fontWeight: FontWeight.bold), + ), + Text('${'Age'.tr}: ${driver['age'].toString()}'), Row( - mainAxisAlignment: MainAxisAlignment.center, children: [ - Text('${'Color'.tr}: ${driver['color']}'), + const Icon(CupertinoIcons.star_fill, + size: 16, + color: CupertinoColors.systemYellow), + const SizedBox(width: 4), + Text(driver['rating']?.toStringAsFixed(1) ?? + 'N/A'.tr), const SizedBox(width: 8), - Container( - width: 20, - height: 20, - decoration: BoxDecoration( - color: - driver['color_hex'].toString() == 'null' - ? Colors.amber - : hexToColor( - driver['color_hex'].toString()), - borderRadius: BorderRadius.circular(4), - border: Border.all(), + Text('${'Rides'.tr}: ${driver['ride_count']}'), + ], + ), + ], + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), + Text('${'Plate'.tr}: ${driver['car_plate']}'), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + // width: Get.width * .3, + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text('${'Color'.tr}: ${driver['color']}'), + const SizedBox(width: 8), + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: driver['color_hex'] + .toString() == + 'null' + ? Colors.amber + : hexToColor(driver['color_hex'] + .toString()), + borderRadius: + BorderRadius.circular(4), + border: Border.all(), + ), + ), + ], ), ), ], ), ], ), - ], - ), - confirm: MyElevatedButton( - title: 'OK'.tr, - onPressed: () { - Get.back(); - showDateTimePickerDialog(driver); - })); - print('${'Selected driver'.tr}: ${driver['NAME']}'); - // Get.back(); // Close the dialog - }, - ), - ); - }, - )), + onTap: () { + Log.print(' driver["id"]: ${driver['driver_id']}'); + Get.find().driverIdVip = + driver['driver_id']; + + // Handle driver selection + Get.defaultDialog( + title: + '${'Selected driver'.tr}: ${driver['NAME']}', + content: Column( + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + '${'Car'.tr}: ${driver['make']} ${driver['model']} (${driver['year']})'), + Text( + '${'Plate'.tr}: ${driver['car_plate']}'), + Row( + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Text( + '${'Color'.tr}: ${driver['color']}'), + const SizedBox(width: 8), + Container( + width: 20, + height: 20, + decoration: BoxDecoration( + color: driver['color_hex'] + .toString() == + 'null' + ? Colors.amber + : hexToColor( + driver['color_hex'] + .toString()), + borderRadius: + BorderRadius.circular(4), + border: Border.all(), + ), + ), + ], + ), + ], + ), + ], + ), + confirm: MyElevatedButton( + title: 'OK'.tr, + onPressed: () { + Get.back(); + showDateTimePickerDialog(driver); + })); + print('${'Selected driver'.tr}: ${driver['NAME']}'); + // Get.back(); // Close the dialog + }, + ), + ); + }, + )), ); } @@ -233,7 +271,7 @@ class CupertinoDriverListWidget extends StatelessWidget { Get.defaultDialog( barrierDismissible: false, - title: 'select date and time of trip'.tr, + title: "Select date and time of trip".tr, content: SizedBox( // height: 400, // Adjust height as needed width: double.maxFinite, @@ -253,6 +291,13 @@ class CupertinoDriverListWidget extends StatelessWidget { await mapPassengerController.saveTripData(driver, selectedDateTime); }, ), + cancel: MyElevatedButton( + kolor: AppColor.redColor, + title: 'Cancel'.tr, + onPressed: () { + Get.back(); + }, + ), ); } } @@ -263,10 +308,10 @@ class DateTimePickerWidget extends StatelessWidget { @override Widget build(BuildContext context) { return CupertinoPageScaffold( - navigationBar: const CupertinoNavigationBar( + navigationBar: CupertinoNavigationBar( transitionBetweenRoutes: false, automaticallyImplyLeading: false, - middle: Text('Date and Time Picker'), + middle: Text('Date and Time Picker'.tr), ), child: SafeArea( child: Column( diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index 2cd8009..89b9933 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -2,10 +2,8 @@ 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/constant/style.dart'; import 'package:SEFER/controller/functions/toast.dart'; import 'package:SEFER/controller/payment/payment_controller.dart'; -import 'package:SEFER/views/widgets/elevated_btn.dart'; import '../../../main.dart'; @@ -138,6 +136,8 @@ void showPaymentOptions(BuildContext context, PaymentController controller) { child: Text('💰 Pay with Wallet'.tr), onPressed: () { if (controller.selectedAmount != 0) { + controller.isLoading = true; + controller.update(); controller.payWithPayMobWallet( context, controller.selectedAmount.toString(), @@ -148,6 +148,8 @@ void showPaymentOptions(BuildContext context, PaymentController controller) { await controller.getPassengerWallet(); }, ); + controller.isLoading = false; + controller.update(); } else { Toast.show(context, '⚠️ You need to choose an amount!'.tr, AppColor.redColor); From 630d0c4afb621a273c42eb53414cbfdde5969795 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Thu, 21 Nov 2024 16:48:54 +0200 Subject: [PATCH 14/16] 11/21/1 --- android/app/build.gradle | 4 +- ios/Runner/Info.plist | 4 +- .../home/map_passenger_controller.dart | 233 +++++++-- lib/controller/home/vip_waitting_page.dart | 441 ++++++++++++------ lib/controller/local/translations.dart | 6 +- lib/views/home/map_page_passenger.dart | 2 + .../map_widget.dart/left_main_menu_icons.dart | 24 +- lib/views/home/map_widget.dart/vip_begin.dart | 319 +++++++++++++ 8 files changed, 839 insertions(+), 194 deletions(-) create mode 100644 lib/views/home/map_widget.dart/vip_begin.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index c61fdff..2d432ec 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 = 98 - versionName = '1.5.98' + versionCode = 99 + versionName = '1.5.99' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 44be063..3513e88 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 70 + 71 CFBundleSignature ???? CFBundleVersion - 4.3.70 + 4.3.71 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 1a79e5b..f786103 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -146,6 +146,7 @@ class MapPassengerController extends GetxController { double naturePrice = 0; bool heightMenuBool = false; String statusRide = 'wait'; + String statusRideVip = 'wait'; bool statusRideFromStart = false; bool isPickerShown = false; bool isPointsPageForRider = false; @@ -747,9 +748,91 @@ class MapPassengerController extends GetxController { // update(); } + int progressTimerRideBeginVip = 0; + int elapsedTimeInSeconds = 0; // Timer starts from 0 + String stringElapsedTimeRideBegin = '0:00'; + String stringElapsedTimeRideBeginVip = '0:00'; + bool rideInProgress = true; // To control when to stop the timer + + void rideIsBeginPassengerTimerVIP() async { + rideInProgress = true; // Start the ride timer + bool sendSOS = false; + while (rideInProgress) { + await Future.delayed(const Duration(seconds: 1)); + + // Increment elapsed time + elapsedTimeInSeconds++; + + // Update the time display + int minutes = (elapsedTimeInSeconds / 60).floor(); + int seconds = elapsedTimeInSeconds % 60; + stringElapsedTimeRideBeginVip = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // Check for speed and SOS conditions + if (speed > 100 && !sendSOS) { + Get.defaultDialog( + barrierDismissible: false, + title: "Warning: Speeding detected!".tr, + titleStyle: AppStyle.title, + content: Text( + "We noticed the speed is exceeding 100 km/h. Please slow down for your safety. If you feel unsafe, you can share your trip details with a contact or call the police using the red SOS button." + .tr, + style: AppStyle.title, + ), + confirm: MyElevatedButton( + title: "Share Trip Details".tr, + onPressed: () { + Get.back(); + // Implement sharing trip details logic here + String message = "**Emergency SOS from Passenger:**\n"; + + // Get trip details from GetX or relevant provider + String origin = passengerLocation.toString(); + String destination = myDestination.toString(); + String driverName = firstName; + String driverCarPlate = licensePlate; + + // Add trip details to the message + message += "* ${'Origin'.tr}: $origin\n"; + message += "* ${'Destination'.tr}: $destination\n"; + message += "* ${'Driver Name'.tr}: $driverName\n"; + message += "* ${'Driver Car Plate'.tr}: $driverCarPlate\n\n"; + message += "* ${'Driver Phone'.tr}: $driverPhone\n\n"; + + // Add current location + message += + "${'Current Location'.tr}:https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude} \n"; + + // Append a call to action + message += "Please help! Contact me as soon as possible.".tr; + + // Launch WhatsApp communication + launchCommunication( + 'whatsapp', box.read(BoxName.sosPhonePassenger), message); + sendSOS = true; + }, + kolor: AppColor.redColor, + ), + cancel: MyElevatedButton( + title: "Cancel".tr, + onPressed: () { + Get.back(); + }, + kolor: AppColor.greenColor, + ), + ); + } + + // Update the UI + update(); + } + } + void tripFinishedFromDriver() async { isRideFinished = true; rideTimerBegin = false; + statusRideVip = 'Finished'; box.write(BoxName.arrivalTime, ''); remainingTimeTimerRideBegin = 0; box.write(BoxName.passengerWalletTotal, '0'); @@ -795,6 +878,22 @@ class MapPassengerController extends GetxController { } } + begiVIPTripFromPassenger() async { + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + isBottomSheetShown = false; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + rideTimerBegin = true; + statusRideVip = 'Begin'; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; + update(); + // isCancelRidePageShown = true; + rideIsBeginPassengerTimerVIP(); + runWhenRideIsBegin(); + } + Map rideStatusFromStartApp = {}; getRideStatusFromStartApp() async { try { @@ -1053,6 +1152,7 @@ class MapPassengerController extends GetxController { late String driverRate = ''; late String firstName = ''; late String carColor = ''; + late String colorHex = ''; late String carYear = ''; late String model = ''; late String make = ''; @@ -1099,6 +1199,8 @@ class MapPassengerController extends GetxController { .toString(); carColor = dataCarsLocationByPassenger['data'][carsOrder]['color'].toString(); + colorHex = dataCarsLocationByPassenger['data'][carsOrder]['color_hex'] ?? + '#A52A2A'; driverRate = dataCarsLocationByPassenger['data'][carsOrder] ['ratingDriver'] .toString(); @@ -1971,7 +2073,10 @@ class MapPassengerController extends GetxController { return jsonDecode(response)['data']; } - late String driverCarModel, driverCarMake, driverLicensePlate, driverName; + late String driverCarModel, + driverCarMake, + driverLicensePlate, + driverName = ''; getUpdatedRideForDriverApply(String rideId) async { // if (isDriversTokensSend) { final res = await CRUD().get( @@ -4597,12 +4702,13 @@ class MapPassengerController extends GetxController { } Future mishwariOption() async { - // isBottomSheetShown = false; + isLoading = true; update(); // add dialoug for select driver and car await selectDriverAndCarForMishwariTrip(); Future.delayed(Duration.zero); - + isLoading = false; + update(); Get.to(() => CupertinoDriverListWidget()); // changeCashConfirmPageShown(); @@ -4651,13 +4757,62 @@ class MapPassengerController extends GetxController { if (response != 'failure') { // Trip saved successfully // Get.snackbar('Success'.tr, 'Trip booked successfully'.tr); - var id = response['message'].toString(); + var id = response['message']['id'].toString(); + await CRUD().post( + link: '${AppLink.seferCairoServer}/ride/rides/add.php', + payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": + DateTime.now().add(const Duration(hours: 2)).toString(), + "price": '50', + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driver['driver_id'].toString(), + "status": "waiting", + 'carType': 'vip', + "price_for_driver": '50', + "price_for_passenger": '50', + "distance": '20', + "paymentMethod": 'cash', + }).then((value) { + if (value is String) { + final parsedValue = jsonDecode(value); + rideId = parsedValue['message']; + } else if (value is Map) { + rideId = value['message']; + } else { + Log.print('Unexpected response type: ${value.runtimeType}'); + } + }); if (AppLink.endPoint != AppLink.seferCairoServer) { await CRUD().post( link: "${AppLink.endPoint}/ride/mishwari/add.php", payload: tripData); + CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + "start_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "end_location": + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": DateTime.now().add(const Duration(hours: 2)).toString(), + "price": '50', + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": driver['driver_id'].toString(), + "status": "waiting", + 'carType': 'vip', + "price_for_driver": '50', + "price_for_passenger": '50', + "distance": '20', + "paymentMethod": 'cash', + }); } - driverIdVip = driver['driver_id']; + driverIdVip = driver['driver_id'].toString(); + driverId = driver['driver_id'].toString(); DateTime timeSelected = DateTime.parse(tripDateTime.toIso8601String()); Get.find().scheduleNotificationsForTimeSelected( @@ -4667,35 +4822,41 @@ class MapPassengerController extends GetxController { timeSelected); // Optionally, set up local notification or send a push notification - // await FirebaseMessagesController().sendNotificationToDriverMAP( - // 'OrderVIP', - // rideId.toString(), - // driver['token'].toString(), - // [ - // id, - // driver['id'], - // passengerLocation.latitude.toString(), - // passengerLocation.longitude.toString(), - // box.read(BoxName.name).toString(), - // box.read(BoxName.passengerID).toString(), - // box.read(BoxName.phone).toString(), - // box.read(BoxName.email).toString(), - // box.read(BoxName.passengerPhotoUrl).toString(), - // box.read(BoxName.tokenFCM).toString(), - // driver['token'].toString(), - // ], - // 'order.wav'); + await FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderVIP', + rideId.toString(), + driver['token'].toString(), + [ + id, + driver['id'], + passengerLocation.latitude.toString(), + passengerLocation.longitude.toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.phone).toString(), + box.read(BoxName.email).toString(), + box.read(BoxName.passengerPhotoUrl).toString(), + box.read(BoxName.tokenFCM).toString(), + driver['token'].toString(), + ], + 'order.wav'); if (response['message'] == "Trip updated successfully") { mySnackbarSuccess("Trip updated successfully".tr); - // FirebaseMessagesController().sendNotificationToDriverMAP( - // 'Order VIP Canceld'.tr, - // 'Passenger cancel order'.tr, - // token, - // [], - // 'cancel.wav', - // ); + Log.print( + 'previous_driver_token: ${response['previous_driver_token']}'); + + FirebaseMessagesController().sendNotificationToDriverMAP( + 'Order VIP Canceld'.tr, + 'Passenger cancel order'.tr, + response['previous_driver_token'].toString(), + [], + 'cancel.wav', + ); } - Get.to(() => const VipWaittingPage()); + // data = []; + isBottomSheetShown = false; + update(); + Get.to(() => VipWaittingPage()); } else { throw Exception('Failed to save trip'); } @@ -4723,6 +4884,16 @@ class MapPassengerController extends GetxController { } } + sendToDriverAgain(String token) { + FirebaseMessagesController().sendNotificationToDriverMAP( + 'Order VIP Canceld'.tr, + 'Passenger cancel order'.tr, + token, + [], + 'cancel.wav', + ); + } + initilizeGetStorage() async { if (box.read(BoxName.addWork) == null) { box.write(BoxName.addWork, 'addWork'); diff --git a/lib/controller/home/vip_waitting_page.dart b/lib/controller/home/vip_waitting_page.dart index 3f5a096..9cc1287 100644 --- a/lib/controller/home/vip_waitting_page.dart +++ b/lib/controller/home/vip_waitting_page.dart @@ -1,190 +1,323 @@ +import 'dart:async'; import 'dart:convert'; +import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; +import 'package:SEFER/constant/links.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/home/map_passenger_controller.dart'; +import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; +import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; +import 'package:SEFER/views/widgets/mysnakbar.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; -import '../../constant/links.dart'; import '../functions/crud.dart'; +class VipOrderController extends GetxController { + RxBool isLoading = false.obs; + final arguments = Get.arguments; + RxList tripData = [].obs; + RxBool isButtonVisible = false.obs; + RxInt countdown = 60.obs; + Timer? _countdownTimer; + + @override + void onInit() { + super.onInit(); + fetchOrder(); + startCountdown(); + } + + @override + void onClose() { + _countdownTimer?.cancel(); + super.onClose(); + } + + Future fetchOrder() async { + try { + isLoading.value = true; + var mapPassengerController = Get.find(); + + var res = await CRUD().get( + link: AppLink.getMishwari, + payload: { + // 'driverId': mapPassengerController.driverIdVip.toString(), + 'driverId': box.read(BoxName.passengerID).toString(), + }, + ); + + if (res != 'failure') { + var decodedResponse = jsonDecode(res); + if (decodedResponse['message'] is List) { + tripData.value = decodedResponse['message']; + } else { + tripData.clear(); // Ensure empty list if no data + mySnackeBarError('No trip data found'); + } + } else { + tripData.clear(); + mySnackeBarError('Failed to fetch trip data'); + } + } catch (e) { + tripData.clear(); + mySnackeBarError('An error occurred: $e'); + } finally { + isLoading.value = false; + } + } + + void startCountdown() { + _countdownTimer?.cancel(); // Cancel any existing timer + countdown.value = 60; + + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (countdown.value > 0) { + countdown.value--; + } else { + timer.cancel(); + isButtonVisible.value = true; + } + }); + } + + void sendToDriverAgain() { + // Reset states + isButtonVisible.value = false; + fetchOrder(); // Refresh order + startCountdown(); // Restart countdown + } +} + class VipWaittingPage extends StatelessWidget { - const VipWaittingPage({super.key}); + VipWaittingPage({super.key}); + final VipOrderController vipOrderController = Get.put(VipOrderController()); @override Widget build(BuildContext context) { - Get.put(VipOrderController()); - return Scaffold( - appBar: AppBar( - title: Text("Waiting VIP".tr), - ), - body: GetBuilder(builder: (vipOrderController) { - var data = vipOrderController.tripData[0]; - - // Function to get the localized status string - String getLocalizedStatus(String status) { - switch (status) { - case 'pending': - return 'pending'.tr; - case 'accepted': - return 'accepted'.tr; - case 'rejected': - return 'rejected'.tr; - default: - return 'unknown'.tr; // Fallback for unexpected statuses + return MyScafolld( + title: "Waiting VIP".tr, + body: [ + Obx(() { + // Loading state + if (vipOrderController.isLoading.value) { + return const Center(child: MyCircularProgressIndicator()); } - } -// Function to get the appropriate status color - Color getStatusColor(String status) { - switch (status) { - case 'pending': - return Colors.yellow; - case 'accepted': - return Colors.green; - case 'rejected': - return Colors.red; - default: - return Colors.grey; // Default color for unknown statuses + // No data state + if (vipOrderController.tripData.isEmpty) { + return Center( + child: Text( + 'No trip data available'.tr, + style: AppStyle.title, + ), + ); } - } - return vipOrderController.isLoading - ? const MyCircularProgressIndicator() - : Card( - elevation: 4, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - margin: const EdgeInsets.all(16), - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + // Data available + var data = vipOrderController.tripData[0]; + + // Function to get the localized status string + String getLocalizedStatus(String status) { + switch (status) { + case 'pending': + return 'pending'.tr; + case 'accepted': + return 'accepted'.tr; + case 'begin': + return 'begin'.tr; + case 'rejected': + return 'rejected'.tr; + case 'cancelled': + return 'cancelled'.tr; + default: + return 'unknown'.tr; + } + } + + // Function to get the appropriate status color + Color getStatusColor(String status) { + switch (status) { + case 'pending': + return Colors.yellow; + case 'accepted': + return Colors.green; + case 'begin': + return Colors.green; + case 'rejected': + return Colors.red; + case 'cancelled': + return Colors.red; + default: + return Colors.grey; + } + } + + return Card( + elevation: 4, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + margin: const EdgeInsets.all(16), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${'Driver Name:'.tr} ${data['name']}", + style: AppStyle.title, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - "${'Driver Name:'.tr} ${data['name']}", - style: AppStyle.title, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "${'Car Plate:'.tr} ${data['car_plate']}", - style: AppStyle.title, - ), - Text( - "${'Car Make:'.tr} ${data['make']}", - style: AppStyle.title, - ), - Text( - "${'Car Model:'.tr} ${data['model']}", - style: AppStyle.title, - ), - Text( - "${"Car Color:".tr} ${data['color']}", - style: AppStyle.title, - ), - ], + Text( + "${'Car Plate:'.tr} ${data['car_plate']}", + style: AppStyle.title, + ), + Text( + "${'Car Make:'.tr} ${data['make']}", + style: AppStyle.title, + ), + Text( + "${'Car Model:'.tr} ${data['model']}", + style: AppStyle.title, + ), + Text( + "${"Car Color:".tr} ${data['color']}", + style: AppStyle.title, ), - SizedBox( - width: 100, - height: 100, - child: Icon(Fontisto.car, - size: 80, - color: Color(int.parse(data['color_hex'] - .replaceFirst('#', '0xff'))))), ], ), - // Text( - // "${'Driver Phone:'.tr} ${data['phone']}", - // style: AppStyle.title, - // ), - const SizedBox(height: 12), - const Divider(), - const SizedBox(height: 12), - - Container( - color: getStatusColor( - data['status']), // Correctly assigns a Color - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - "${'Trip Status:'.tr} ${getLocalizedStatus(data['status'])}", // Uses the String function - style: const TextStyle( - fontSize: 16, + SizedBox( + width: 100, + height: 100, + child: Icon( + Fontisto.car, + size: 80, + color: Color( + int.parse( + data['color_hex'].replaceFirst('#', '0xff'), ), ), ), ), - Text( - "${'Scheduled Time:'.tr} ${DateFormat('yyyy-MM-dd hh:mm a').format(DateTime.parse(data['timeSelected']))}", - style: const TextStyle(fontSize: 16), - ), - const SizedBox(height: 12), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - MyElevatedButton( - title: "Cancel Trip".tr, - kolor: AppColor.redColor, - onPressed: () { - Get.find().cancelVip( - data['token'].toString(), - data['id'].toString(), - ); - }, - ), - // MyElevatedButton( - // title: "Accept Trip".tr, - // kolor: AppColor.greenColor, - // onPressed: () { - // // Add your cancel trip logic here - // }, - // ), - ], - ), ], ), - ), - ); - }), + const SizedBox(height: 12), + const Divider(), + const SizedBox(height: 12), + Container( + color: getStatusColor(data['status']), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + "${'Trip Status:'.tr} ${getLocalizedStatus(data['status'])}", + style: const TextStyle(fontSize: 16), + ), + ), + ), + Text( + "${'Scheduled Time:'.tr} ${DateFormat('yyyy-MM-dd hh:mm a').format(DateTime.parse(data['timeSelected']))}", + style: const TextStyle(fontSize: 16), + ), + const SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + data['status'].toString() != 'begin' + ? MyElevatedButton( + title: "Cancel Trip".tr, + kolor: AppColor.redColor, + onPressed: () { + Get.find().cancelVip( + data['token'].toString(), + data['id'].toString(), + ); + }, + ) + : const SizedBox(), + Obx(() { + // If countdown is still running, show countdown + if (!vipOrderController.isButtonVisible.value) { + return Column( + children: [ + CircularProgressIndicator( + value: 1 - + (vipOrderController.countdown.value / 60), + strokeWidth: 6.0, + color: AppColor.greenColor, + backgroundColor: AppColor.accentColor, + ), + const SizedBox(height: 10), + Text( + "${vipOrderController.countdown.value}s ${'remaining'.tr}", + style: const TextStyle(fontSize: 16), + ), + ], + ); + } + + // Once countdown is complete, show "Send to Driver Again" button + return MyElevatedButton( + title: "Send to Driver Again".tr, + kolor: AppColor.greenColor, + onPressed: () { + Get.find() + .sendToDriverAgain(data['token']); + vipOrderController.fetchOrder(); + }, + ); + }), + ], + ), + const SizedBox( + height: 30, + ), + data['status'].toString() == 'begin' + ? MyElevatedButton( + title: "Click here to begin your trip\n\nGood luck, " + .tr + + box.read(BoxName.name).toString(), + kolor: AppColor.greenColor, + onPressed: () { + final mapPassengerController = + Get.find(); + mapPassengerController.make = data['make']; + mapPassengerController.licensePlate = + data['car_plate']; + mapPassengerController.model = data['model']; + mapPassengerController.driverId = data['driverId']; + mapPassengerController.carColor = data['color']; + mapPassengerController.driverRate = data['rating']; + mapPassengerController.colorHex = data['color_hex']; + mapPassengerController.driverPhone = data['phone']; + mapPassengerController.driverToken = data['token']; + mapPassengerController.driverName = + data['name'].toString().split(' ')[0]; + + Get.back(); + + mapPassengerController.begiVIPTripFromPassenger(); + }, + ) + : const SizedBox() + ], + ), + ), + ); + }), + ], + isleading: true, ); } } - -class VipOrderController extends GetxController { - bool isLoading = false; - final arguments = Get.arguments; - late String body; - List tripData = []; - - fetchOrder() async { - isLoading = true; - update(); - var res = await CRUD().get(link: AppLink.getMishwari, payload: { - 'driverId': Get.find().driverIdVip.toString(), - }); - isLoading = false; - update(); - if (res != 'failure') { - tripData = jsonDecode(res)['message']; - update(); - } - } - - @override - void onInit() async { - fetchOrder(); - super.onInit(); - } -} diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 3d96535..ba8998e 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,8 +4,10 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Send to Driver Again": "إرسال إلى السائق مرة أخرى", "Driver Name:": "اسم السائق:", - "Car Plate:": "رقم اللوحة:", + 'No trip data available': "لا توجد بيانات رحلة متاحة", + "Car Plate:": "رقم اللوحة:", "remaining": "متبقي", "Order Cancelled": "تم إلغاء الطلب", 'You canceled VIP trip': "ألغيت الرحلة", "Passenger cancelled order": "الراكب قام بإلغاء الطلب", @@ -797,7 +799,7 @@ iOS [https://getapp.cc/app/6458734951] 'Selected Date and Time': "التاريخ والوقت المحددان", "Lets check Car license ": "دَعْنَا نَتَحَقَّق مِن رُخْصَة السَّيَّارَة ", - 'Driver List': 'قائمة السائقين', + // 'Driver List': 'قائمة السائقين', 'Car': 'السيارة', 'Plate': 'لوحة السيارة', 'N/A': 'غير متوفر', diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index b30a0f2..3c251df 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -23,6 +23,7 @@ import 'map_widget.dart/payment_method.page.dart'; import 'map_widget.dart/points_page_for_rider.dart'; import 'map_widget.dart/ride_from_start_app.dart'; import 'map_widget.dart/searching_captain_window.dart'; +import 'map_widget.dart/vip_begin.dart'; class MapPagePassenger extends StatelessWidget { const MapPagePassenger({super.key}); @@ -63,6 +64,7 @@ class MapPagePassenger extends StatelessWidget { // const TimerToPassengerFromDriver(), const PassengerRideLocationWidget(), const RideBeginPassenger(), + const VipRideBeginPassenger(), const RideFromStartApp(), cancelRidePage(), const MenuIconMapPageWidget(), 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 bb77e2d..ff26bb6 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 @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import '../../../constant/colors.dart'; -import '../../../controller/functions/crud.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/vip_waitting_page.dart'; @@ -91,14 +91,32 @@ GetBuilder leftMainMenuIcons() { borderRadius: BorderRadius.circular(15)), child: IconButton( onPressed: () async { - Get.to(() => const VipWaittingPage()); + Get.to(() => VipWaittingPage()); }, icon: const Icon( - Icons.voice_chat, + Octicons.watch, // Replace this with your desired VIP icon size: 29, ), ), ), + // AnimatedContainer( + // duration: const Duration(microseconds: 200), + // width: controller.widthMapTypeAndTraffic, + // decoration: BoxDecoration( + // color: AppColor.secondaryColor, + // border: Border.all(), + // borderRadius: BorderRadius.circular(15)), + // child: IconButton( + // onPressed: () async { + // print(Get.put(MapPassengerController()).data); + // }, + // icon: const Icon( + // Octicons + // .telescope, // Replace this with your desired VIP icon + // size: 29, + // ), + // ), + // ), ], ); })), diff --git a/lib/views/home/map_widget.dart/vip_begin.dart b/lib/views/home/map_widget.dart/vip_begin.dart new file mode 100644 index 0000000..b124710 --- /dev/null +++ b/lib/views/home/map_widget.dart/vip_begin.dart @@ -0,0 +1,319 @@ +import 'package:SEFER/constant/links.dart'; +import 'package:SEFER/views/home/profile/complaint_page.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_font_icons/flutter_font_icons.dart'; +import 'package:get/get.dart'; +import 'package:SEFER/constant/box_name.dart'; +import 'package:SEFER/controller/profile/profile_controller.dart'; +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'; + +class VipRideBeginPassenger extends StatelessWidget { + const VipRideBeginPassenger({ + super.key, + }); + + @override + Widget build(BuildContext context) { + ProfileController profileController = Get.put(ProfileController()); + AudioRecorderController audioController = + Get.put(AudioRecorderController()); + // Get.put(MapPassengerController()); + return GetBuilder(builder: (controller) { + if (controller.statusRideVip == 'Begin' || + !controller.statusRideFromStart) { + return Positioned( + left: 10, + right: 10, + bottom: 10, + child: Container( + decoration: AppStyle.boxDecoration, + height: controller.statusRideVip == 'Begin' ? Get.height * .33 : 0, + // width: 100, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + CircleAvatar( + radius: 30, + backgroundImage: NetworkImage( + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg', + ), + onBackgroundImageError: (_, __) { + // Handle error here + }, + backgroundColor: Colors.grey, + child: const Icon( + Icons.person, // Default icon or placeholder + size: 30, + color: Colors.white, + ), // Placeholder background color + ), + Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 6, vertical: 2), + child: Text( + controller.driverName, + style: AppStyle.title, + ), + ), + ), + const SizedBox( + height: 10, + ), + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 6, vertical: 2), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + Text( + controller.make, + style: AppStyle.title, + ), + const SizedBox( + width: 10, + ), + Text( + controller.model, + style: AppStyle.title, + ), + ], + ), + ), + ), + ], + ), + Column( + children: [ + Container( + decoration: AppStyle.boxDecoration, + child: Padding( + padding: const EdgeInsets.all(3), + child: Text( + 'vip', + style: AppStyle.title, + ), + ), + ), + Text( + '${controller.driverRate} 📈', + style: AppStyle.title, + ), + ], + ), + ], + ), + // SizedBox( + // height: 5, + // ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + width: Get.width * .15, + decoration: AppStyle.boxDecoration, + child: IconButton( + onPressed: () => Get.to( + () => ComplaintPage(), + transition: Transition.downToUp, + ), + icon: const Icon( + Icons.note_add, + color: AppColor.redColor, + ), + tooltip: ' Add Note', // Optional tooltip for clarity + ), + ), + Container( + width: Get.width * .15, + decoration: AppStyle.boxDecoration, + child: audioController.isRecording == false + ? IconButton( + onPressed: () async { + await audioController.startRecording(); + Toast.show(context, 'Start Record'.tr, + AppColor.greenColor); + }, + icon: const Icon( + Icons.play_circle_fill_outlined, + color: AppColor.greenColor, + ), + tooltip: + ' Add Note', // Optional tooltip for clarity + ) + : IconButton( + onPressed: () async { + await audioController.stopRecording(); + Toast.show(context, 'Record saved'.tr, + AppColor.greenColor); + }, + icon: const Icon( + Icons.stop_circle, + color: AppColor.greenColor, + ), + tooltip: + ' Add Note', // Optional tooltip for clarity + ), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + if (box.read(BoxName.sosPhonePassenger) == null) { + { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + profileController.prfoileData['sosPhone']); + } + } else { + makePhoneCall('122'); + // box.read(BoxName.sosPhonePassenger)); + } + }, + icon: const Icon( + Icons.sos_rounded, + color: AppColor.redColor, + ), + ), + ), + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + if (box.read(BoxName.sosPhonePassenger) == null || + box.read(BoxName.sosPhonePassenger) == 'sos') { + { + await profileController.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + profileController.prfoileData['sosPhone']); + } + } else { + String phoneNumber = box + .read(BoxName.sosPhonePassenger) + .toString(); + // phoneNumber = phoneNumber.replaceAll('0', ''); + var phone = box.read(BoxName.countryCode) == + 'Egypt' + ? '+2${box.read(BoxName.sosPhonePassenger)}' + : '+962${box.read(BoxName.sosPhonePassenger)}'; + controller.sendWhatsapp(phone); + } + }, + icon: const Icon( + FontAwesome.whatsapp, + color: AppColor.greenColor, + ), + ), + ), + Container( + decoration: AppStyle.boxDecoration, + width: Get.width * .15, + child: IconButton( + onPressed: () async { + await controller.getTokenForParent(); + }, + icon: const Icon( + AntDesign.Safety, + color: AppColor.blueColor, + ), + ), + ), + ], + ), + Stack( + children: [ + // StreamCounter(), + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: + // controller.remainingTimeTimerRideBegin < 60 + // ? AppColor.redColor + // : + AppColor.greenColor, + minHeight: 25, + borderRadius: BorderRadius.circular(15), + value: + 24 //controller.progressTimerRideBegin.toDouble(), + ), + Center( + child: Text( + controller.stringElapsedTimeRideBeginVip, + style: AppStyle.title, + ), + ) + ], + ) + ], + ), + ), + ), + ); + } else { + return const SizedBox(); + } + }); + } +} + +class StreamCounter extends StatelessWidget { + const StreamCounter({Key? key}) : super(key: key); + + @override + // Build the UI based on the timer value + Widget build(BuildContext context) { + Get.put(MapPassengerController()); + return GetBuilder(builder: (controller) { + return StreamBuilder( + initialData: 0, + stream: controller.timerController.stream, + builder: (context, snapshot) { + // Calculate the remaining time based on the current tick + final remainingTime = controller.durationToRide - snapshot.data!; + + // Format the remaining time as a string + final formattedRemainingTime = + '${(remainingTime / 60).floor()}:${(remainingTime % 60).toString().padLeft(2, '0')}'; + + // Return the UI widgets based on the remaining time + return Column( + children: [ + Text(formattedRemainingTime), + // ElevatedButton( + // onPressed: () { + // // Handle button press here + // }, + // ), + ], + ); + }, + ); + }); + } +} From e0c242bd7758c4ccb72ad6ebdfbc64d5b561eb62 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 8 Dec 2024 18:16:31 +0300 Subject: [PATCH 15/16] 12/8/1 --- .env | 1 + android/app/build.gradle | 4 +- assets/images/car3.png | Bin 0 -> 110238 bytes ios/Runner/Info.plist | 4 +- lib/constant/api_key.dart | 1 + lib/constant/box_name.dart | 1 + lib/constant/links.dart | 6 + lib/constant/style.dart | 60 +- lib/controller/auth/register_controller.dart | 51 +- lib/controller/firebase/firbase_messge.dart | 9 +- .../firebase/local_notification.dart | 2 +- lib/controller/functions/crud.dart | 20 + lib/controller/functions/sms_controller.dart | 1 + .../home/map_passenger_controller.dart | 1751 +++++++++-------- lib/controller/home/vip_waitting_page.dart | 6 +- lib/controller/local/translations.dart | 32 +- .../payment/payment_controller.dart | 5 +- lib/controller/rate/rate_conroller.dart | 32 +- lib/models/db_sql.dart | 49 +- lib/views/Rate/rate_captain.dart | 2 +- lib/views/auth/login_page.dart | 11 + lib/views/home/HomePage/contact_us.dart | 6 +- lib/views/home/home_page.dart | 195 +- lib/views/home/map_page_passenger.dart | 3 +- .../map_widget.dart/apply_order_widget.dart | 101 +- .../form_search_places_destenation.dart | 214 +- .../map_widget.dart/form_search_start.dart | 4 +- .../form_serch_multiy_point.dart | 2 +- .../map_widget.dart/left_main_menu_icons.dart | 6 +- .../map_widget.dart/main_bottom_Menu_map.dart | 57 +- .../map_widget.dart/ride_begin_passenger.dart | 2 +- .../home/my_wallet/passenger_wallet.dart | 61 +- .../my_wallet/passenger_wallet_dialoge.dart | 146 +- .../home/profile/promos_passenger_page.dart | 376 ++-- 34 files changed, 1876 insertions(+), 1345 deletions(-) create mode 100644 assets/images/car3.png diff --git a/.env b/.env index a5bc609..5443e66 100644 --- a/.env +++ b/.env @@ -5,6 +5,7 @@ accountSIDTwillo=QFx0qy456juj3839xuy2194q629q1fj0y7XrXlBl serverAPI=QQQQobSrrFi:QVQ87xU7zwCvmZzZdaxuS2f23Y4mz7MzyOzr8od2br6KYyeFaTVLG3K3hx5ZaUyx7eYvAYpAVdKk-286NTRi3zs9iSOnXtXRIxswg3KecBmsl3VxJ9wO-vIpwu4Pv7dkHkXniuxMSDgWXrXlBl mapAPIKEY=QOmqZsFsutLDCtZCRIUAZAkB5v6AMkKEPMbJGa3XrXlBl twilloRecoveryCode=CAU79DHPH1BE9PUH4ETXTSXZXrXlBl +apiKeyHere=g_WNUb5L-7-F8oHpUmgIzH7ETeH9xZ8RwGG9_G8zX9A authTokenTwillo=70u98ju0214xx4q0u74028u021u4qu65XrXlBl chatGPTkey=zg-4C26q4SYBKQeHZDqkWowC9XrxgUEfUy9JRw2rm6Q2adb3kjwXrXlBl transactionCloude=Qhcwilomqcoib:QVO_JNYED2XWA26YXKC2TP:YK1DVH6SJB31N3PE1UXrXlBl diff --git a/android/app/build.gradle b/android/app/build.gradle index 2d432ec..de3907d 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 = 99 - versionName = '1.5.99' + versionCode = 106 + versionName = '1.6.106' multiDexEnabled =true // manifestPlaceholders can be specified here if needed diff --git a/assets/images/car3.png b/assets/images/car3.png new file mode 100644 index 0000000000000000000000000000000000000000..41627ae75b5de93880a524e1977ccade4f3cfd9b GIT binary patch literal 110238 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.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

    >vRC_x#yV$@VvzJX*&mZ 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 3513e88..6a85ad6 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 71 + 77 CFBundleSignature ???? CFBundleVersion - 4.3.71 + 4.3.77 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/constant/api_key.dart b/lib/constant/api_key.dart index 6433459..f0e2f77 100644 --- a/lib/constant/api_key.dart +++ b/lib/constant/api_key.dart @@ -51,6 +51,7 @@ class AK { X.r(X.r(X.r(Env.payMobApikey, cn), cC), cs); static final String integrationIdPayMobWallet = X.r(X.r(X.r(Env.integrationIdPayMobWallet, cn), cC), cs); + static final String apiKeyHere = Env.apiKeyHere; static final String smsPasswordEgypt = X.r(X.r(X.r(Env.smsPasswordEgypt, cn), cC), cs); static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey; diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index 0113597..e2fbaa7 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -24,6 +24,7 @@ class BoxName { static const String agreeTerms = "agreeTerms"; static const String addWork = 'addWork'; static const String addHome = 'addHome'; + static const String placesDestination = 'placesDestination'; static const String tipPercentage = 'tipPercentage'; static const String accountIdStripeConnect = "accountIdStripeConnect"; static const String faceDetectTimes = "faceDetectTimes"; diff --git a/lib/constant/links.dart b/lib/constant/links.dart index d823265..bb2c553 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -14,6 +14,8 @@ class AppLink { // static final String server = Env.serverPHP; static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; + static String searcMaps = + 'https://autosuggest.search.hereapi.com/v1/autosuggest'; static String llama = 'https://api.llama-api.com/chat/completions'; static String gemini = 'https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText'; @@ -185,6 +187,8 @@ class AppLink { // ===================================== static String addRateToPassenger = "$ride/rate/add.php"; + static String savePlacesServer = "$ride/places/add.php"; + static String getapiKey = "$ride/apiKey/get.php"; static String addRateToDriver = "$ride/rate/addRateToDriver.php"; static String getDriverRate = "$ride/rate/getDriverRate.php"; static String getPassengerRate = "$ride/rate/getPassengerRate.php"; @@ -265,6 +269,8 @@ class AppLink { static String getAccount = "$authCaptin/getAccount.php"; static String updatePassengersInvitation = "$server/ride/invitor/updatePassengersInvitation.php"; + static String updateDriverInvitationDirectly = + "$server/ride/invitor/updateDriverInvitationDirectly.php"; //===================Admin Captin============ static String getPassengerDetailsByPassengerID = diff --git a/lib/constant/style.dart b/lib/constant/style.dart index 10975c7..a0993aa 100644 --- a/lib/constant/style.dart +++ b/lib/constant/style.dart @@ -5,35 +5,39 @@ import 'package:google_fonts/google_fonts.dart'; import 'colors.dart'; class AppStyle { - static TextStyle headTitle = TextStyle( - fontWeight: FontWeight.bold, - fontSize: 40, - color: AppColor.accentColor, - fontFamily: box.read(BoxName.lang) == 'ar' - // ?GoogleFonts.notoNaskhArabic().fontFamily - ? GoogleFonts.notoNaskhArabic().fontFamily - : GoogleFonts.roboto().fontFamily); - static TextStyle headTitle2 = TextStyle( - fontWeight: FontWeight.bold, - fontSize: 26, - color: AppColor.writeColor, - fontFamily: box.read(BoxName.lang) == 'ar' - ? GoogleFonts.notoNaskhArabic().fontFamily - : GoogleFonts.roboto().fontFamily); + static TextStyle headTitle = const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 40, + color: AppColor.accentColor, + // fontFamily: box.read(BoxName.lang) == 'ar' + // // ?GoogleFonts.notoNaskhArabic().fontFamily + // ? GoogleFonts.notoNaskhArabic().fontFamily + // : GoogleFonts.roboto().fontFamily, + ); + static TextStyle headTitle2 = const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 22, + color: AppColor.writeColor, + // fontFamily: box.read(BoxName.lang) == 'ar' + // ? GoogleFonts.notoNaskhArabic().fontFamily + // : GoogleFonts.roboto().fontFamily + ); static TextStyle title = TextStyle( - fontWeight: FontWeight.normal, - fontSize: box.read(BoxName.lang) == 'ar' ? 14 : 16, - color: AppColor.writeColor, - fontFamily: box.read(BoxName.lang) == 'ar' - ? GoogleFonts.notoNaskhArabic().fontFamily - : GoogleFonts.roboto().fontFamily); - static TextStyle subtitle = TextStyle( - fontWeight: FontWeight.bold, - fontSize: 13, - color: AppColor.writeColor, - fontFamily: box.read(BoxName.lang) == 'ar' - ? GoogleFonts.notoNaskhArabic().fontFamily - : GoogleFonts.roboto().fontFamily); + fontWeight: FontWeight.normal, + fontSize: box.read(BoxName.lang) == 'ar' ? 14 : 16, + color: AppColor.writeColor, + // fontFamily: box.read(BoxName.lang) == 'ar' + // ? GoogleFonts.notoNaskhArabic().fontFamily + // : GoogleFonts.roboto().fontFamily + ); + static TextStyle subtitle = const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 13, + color: AppColor.writeColor, + // fontFamily: box.read(BoxName.lang) == 'ar' + // ? GoogleFonts.notoNaskhArabic().fontFamily + // : GoogleFonts.roboto().fontFamily + ); static TextStyle number = const TextStyle( fontWeight: FontWeight.bold, fontSize: 14, diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index 2cd19d4..d01ceee 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -166,7 +166,7 @@ class RegisterController extends GetxController { await sendOtp(phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); } - } else { + } else if (phoneNumber.length > 9) { sendOtp( phoneNumber, randomNumber, isEgyptianNumber, smsEgyptController); } @@ -191,12 +191,57 @@ class RegisterController extends GetxController { SmsEgyptController controller) async { // Trim any leading or trailing whitespace from the phone number phoneNumber = phoneNumber.trim(); - await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { + var dd = await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { 'phone_number': phoneNumber, 'token': otp.toString(), }); + Log.print('dd: ${dd}'); if (isEgyptian) { - await controller.sendSmsEgypt(phoneNumber, otp.toString()); + await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: { + "phone_number": Get.find().phoneController.text + }); + box.write(BoxName.phoneDriver, phoneController.text); + var nameParts = box.read(BoxName.name).toString().split(' '); + var firstName = nameParts.isNotEmpty ? nameParts[0] : 'unknown'; + var lastName = nameParts.length > 1 ? nameParts[1] : 'unknown'; + + var payload = { + 'id': box.read(BoxName.passengerID), + 'phone': phoneController.text, + 'email': box.read(BoxName.email), + 'password': 'unknown', + 'gender': 'unknown', + 'birthdate': '2002-01-01', + 'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown', + 'first_name': firstName, + 'last_name': lastName, + }; + + var res1 = await CRUD().post( + link: AppLink.signUp, + payload: payload, + ); + + if (res1 != 'failure') { + await CRUD().post( + link: '${AppLink.seferAlexandriaServer}/auth/signup.php', + payload: payload, + ); + await CRUD().post( + link: '${AppLink.seferGizaServer}/auth/signup.php', + payload: payload, + ); + + box.write(BoxName.isVerified, '1'); + box.write(BoxName.isFirstTime, '0'); + box.write(BoxName.phone, phoneController.text); + + Get.put(LoginController()).loginUsingCredentials( + box.read(BoxName.passengerID).toString(), + box.read(BoxName.email).toString(), + ); + } + // await controller.sendSmsEgypt(phoneNumber, otp.toString()); } else { await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString()); } diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 814766d..334f19c 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -214,7 +214,7 @@ class FirebaseMessagesController extends GetxController { driverArrivePassengerDialoge(); update(); - } else if (message.notification!.title! == "Cancel Trip from driver".tr) { + } else if (message.notification!.title! == "Cancel Trip from driver") { Get.back(); if (Platform.isAndroid) { notificationController.showNotification("Cancel Trip from driver".tr, @@ -243,7 +243,7 @@ class FirebaseMessagesController extends GetxController { // .searchNewDriverAfterRejectingFromDriver(); ); } else if (message.notification!.title! == 'Driver Finish Trip'.tr) { - var myListString = message.data['passengerList']; + var myListString = message.data['DriverList']; var driverList = jsonDecode(myListString) as List; if (Platform.isAndroid) { notificationController.showNotification( @@ -262,6 +262,11 @@ class FirebaseMessagesController extends GetxController { 'rideId': driverList[1].toString(), 'price': driverList[3].toString() }); + notificationController.showNotification( + 'Don’t forget your personal belongings.'.tr, + 'Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Sefer app' + .tr, + 'ding'); // } } else if (message.notification!.title! == "Finish Monitor".tr) { Get.defaultDialog( diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index 73ba3ff..44f7b31 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -99,7 +99,7 @@ class NotificationController extends GetxController { for (int day = 0; day < 7; day++) { // Schedule for 8:00 AM await _scheduleNotificationForTime( - day, 8, 0, title, message, details, day * 1000 + 1); // Unique ID + day, 8, 0, title, message, details, day * 1000 + 1); // Schedule for 3:00 PM await _scheduleNotificationForTime( diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 96995b0..91f3047 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -509,6 +509,26 @@ class CRUD { return (jsonData['status']); } + Future getHereMap({ + required String link, + }) async { + var url = Uri.parse(link); + try { + var response = await http.get(url); + + if (response.statusCode == 200) { + // Ensure the response body is decoded as UTF-8 + var decodedBody = utf8.decode(response.bodyBytes); + var data = jsonDecode(decodedBody); + return data; + } else { + return null; + } + } catch (e) { + return null; + } + } + Future update({ required String endpoint, required Map data, diff --git a/lib/controller/functions/sms_controller.dart b/lib/controller/functions/sms_controller.dart index 53e3422..09b0b63 100644 --- a/lib/controller/functions/sms_controller.dart +++ b/lib/controller/functions/sms_controller.dart @@ -11,6 +11,7 @@ import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; +import '../../print.dart'; import '../auth/register_controller.dart'; import 'crud.dart'; diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index f786103..3f825d3 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -403,8 +403,10 @@ class MapPassengerController extends GetxController { } tick = 0; } - await getCarForFirstConfirm(box.read(BoxName.carType)); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 4000); // confirmRideForAllDriverAvailable(); + icreaseForSameRideAndDelay(); } } @@ -471,9 +473,12 @@ class MapPassengerController extends GetxController { hintTextDestinationPoint = 'Search for your destination'.tr; update(); } else { - hintTextDestinationPoint = placesDestination[index]['name']; - double lat = placesDestination[index]['geometry']['location']['lat']; - double lng = placesDestination[index]['geometry']['location']['lng']; + hintTextDestinationPoint = placesDestination[index]['title']; + // hintTextDestinationPoint = placesDestination[index]['name']; + // double lat = placesDestination[index]['geometry']['location']['lat']; + double lat = placesDestination[index]['position']['lat']; + double lng = placesDestination[index]['position']['lng']; + // double lng = placesDestination[index]['geometry']['location']['lng']; newMyLocation = LatLng(lat, lng); update(); @@ -541,7 +546,7 @@ class MapPassengerController extends GetxController { // Format the message. String message = - 'Hi! This is ${box.read(BoxName.name)}.\n I am using ${box.read(AppInformation.appName)} to ride with $firstName as the driver. $firstName \nis driving a $model\n with license plate $licensePlate.\n I am currently located at $passengerLocation.\n If you need to reach me, please contact the driver directly at\n\n $driverPhone.'; + 'Hi! This is ${box.read(BoxName.name)}.\n I am using ${box.read(AppInformation.appName)} to ride with $passengerName as the driver. $passengerName \nis driving a $model\n with license plate $licensePlate.\n I am currently located at $passengerLocation.\n If you need to reach me, please contact the driver directly at\n\n $driverPhone.'; // Launch the URL to send the SMS. launchCommunication('sms', to, message); @@ -553,7 +558,7 @@ class MapPassengerController extends GetxController { // Format the message. String message = - '${'${'Hi! This is'.tr} ${box.read(BoxName.name)}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $firstName${' as the driver.'.tr} $firstName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.'; + '${'${'Hi! This is'.tr} ${box.read(BoxName.name)}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $passengerName${' as the driver.'.tr} $passengerName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.'; // Launch the URL to send the WhatsApp message. launchCommunication('whatsapp', to, message); @@ -585,44 +590,134 @@ class MapPassengerController extends GetxController { return distance2; } + // bool isTimerFromDriverToPassengerAfterAppliedRunning = true; + // int beginRideInterval = 4; // Interval in seconds for getBeginRideFromDriver + + // void startTimerFromDriverToPassengerAfterApplied() async { + // int secondsElapsed = 0; + + // while (secondsElapsed <= timeToPassengerFromDriverAfterApplied && + // isTimerFromDriverToPassengerAfterAppliedRunning) { + // await Future.delayed(const Duration(seconds: 1)); + // secondsElapsed++; + + // progressTimerToPassengerFromDriverAfterApplied = + // secondsElapsed / timeToPassengerFromDriverAfterApplied; + // remainingTimeToPassengerFromDriverAfterApplied = + // timeToPassengerFromDriverAfterApplied - secondsElapsed; + + // if (remainingTimeToPassengerFromDriverAfterApplied < 59) { + // if (rideTimerBegin == false) { + // rideTimerBegin = true; + // } + // } + + // // Call getBeginRideFromDriver every 4 seconds + // if (secondsElapsed % beginRideInterval == 0) { + // getBeginRideFromDriver(); + // uploadPassengerLocation(); + // } + + // int minutes = + // (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); + // int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; + // stringRemainingTimeToPassenger = + // '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // update(); + // } + // } + + StreamController _timerStreamController = StreamController(); + Stream get timerStream => _timerStreamController.stream; bool isTimerFromDriverToPassengerAfterAppliedRunning = true; + bool isTimerRunning = false; // Flag to track if the timer is running int beginRideInterval = 4; // Interval in seconds for getBeginRideFromDriver - void startTimerFromDriverToPassengerAfterApplied() async { + void startTimerFromDriverToPassengerAfterApplied() { + if (isTimerRunning) return; // Prevent duplicate streams + isTimerRunning = true; + int secondsElapsed = 0; - while (secondsElapsed <= timeToPassengerFromDriverAfterApplied && - isTimerFromDriverToPassengerAfterAppliedRunning) { - await Future.delayed(const Duration(seconds: 1)); - secondsElapsed++; + // Start the stream + Timer.periodic(const Duration(seconds: 1), (timer) { + if (secondsElapsed > timeToPassengerFromDriverAfterApplied || + !isTimerFromDriverToPassengerAfterAppliedRunning) { + timer.cancel(); + isTimerRunning = false; + _timerStreamController.close(); // Close the stream when done + return; + } + secondsElapsed++; + _timerStreamController.add(secondsElapsed); // Emit elapsed time + + // Calculate progress and remaining time progressTimerToPassengerFromDriverAfterApplied = secondsElapsed / timeToPassengerFromDriverAfterApplied; remainingTimeToPassengerFromDriverAfterApplied = timeToPassengerFromDriverAfterApplied - secondsElapsed; - if (remainingTimeToPassengerFromDriverAfterApplied < 59) { - if (rideTimerBegin == false) { - rideTimerBegin = true; - } - } - - // Call getBeginRideFromDriver every 4 seconds - if (secondsElapsed % beginRideInterval == 0) { - getBeginRideFromDriver(); - uploadPassengerLocation(); - } - + // Update remaining time as string int minutes = (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; stringRemainingTimeToPassenger = '$minutes:${seconds.toString().padLeft(2, '0')}'; - update(); - } + if (remainingTimeToPassengerFromDriverAfterApplied < 59 && + !rideTimerBegin) { + rideTimerBegin = true; + } + + // Call periodic functions + if (secondsElapsed % beginRideInterval == 0) { + getBeginRideFromDriver(); + uploadPassengerLocation(); + } + + update(); // Notify listeners + }); } + // void startTimerFromDriverToPassengerAfterApplied() async { + // if (isTimerRunning) return; // Exit if timer is already running + // isTimerRunning = true; // Set the flag to true + + // int secondsElapsed = 0; + // while (secondsElapsed <= timeToPassengerFromDriverAfterApplied && + // isTimerFromDriverToPassengerAfterAppliedRunning) { + // await Future.delayed(const Duration(seconds: 1)); + // secondsElapsed++; + + // progressTimerToPassengerFromDriverAfterApplied = + // secondsElapsed / timeToPassengerFromDriverAfterApplied; + // remainingTimeToPassengerFromDriverAfterApplied = + // timeToPassengerFromDriverAfterApplied - secondsElapsed; + + // if (remainingTimeToPassengerFromDriverAfterApplied < 59) { + // if (rideTimerBegin == false) { + // rideTimerBegin = true; + // } + // } + + // // Call getBeginRideFromDriver every 4 seconds + // if (secondsElapsed % beginRideInterval == 0) { + // getBeginRideFromDriver(); + // uploadPassengerLocation(); + // } + + // int minutes = + // (remainingTimeToPassengerFromDriverAfterApplied / 60).floor(); + // int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60; + // stringRemainingTimeToPassenger = + // '$minutes:${seconds.toString().padLeft(2, '0')}'; + + // update(); + // } + // isTimerRunning = false; // Reset the flag when timer completes + // } // Remove the getBeginRideFromDriverForDuration function as it's no longer needed // Function to stop the timer @@ -681,8 +776,16 @@ class MapPassengerController extends GetxController { await Future.delayed(const Duration(seconds: 1)); progressTimerRideBegin = i / durationToRide; remainingTimeTimerRideBegin = durationToRide - i; + if (i == (durationToRide / 4).round() && (statusRide == 'Begin')) { + NotificationController().showNotification("Record Your Trip".tr, + "You can call or record audio during this trip.".tr, 'tone1'); + } bool sendSOS = false; if (speed > 100 && sendSOS == false) { + NotificationController().showNotification( + "Warning: Speeding detected!".tr, + 'You can call or record audio of this trip'.tr, + 'tone1'); Get.defaultDialog( barrierDismissible: false, title: "Warning: Speeding detected!".tr, @@ -702,7 +805,7 @@ class MapPassengerController extends GetxController { // Get trip details from GetX or relevant provider String origin = passengerLocation.toString(); String destination = myDestination.toString(); - String driverName = firstName; + String driverName = passengerName; String driverCarPlate = licensePlate; // Add trip details to the message @@ -790,7 +893,7 @@ class MapPassengerController extends GetxController { // Get trip details from GetX or relevant provider String origin = passengerLocation.toString(); String destination = myDestination.toString(); - String driverName = firstName; + String driverName = passengerName; String driverCarPlate = licensePlate; // Add trip details to the message @@ -850,32 +953,96 @@ class MapPassengerController extends GetxController { update(); } - void getBeginRideFromDriver() async { - try { - var res = await CRUD() - .get(link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); - if (res != 'failure') { - var decode = jsonDecode(res); + // bool isBeginRideFromDriver = false; + // void getBeginRideFromDriver() async { + // try { + // if (isBeginRideFromDriver) return; // Prevent duplicate streams + // isBeginRideFromDriver = true; + // var res = await CRUD() + // .get(link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); + // if (res != 'failure') { + // var decode = jsonDecode(res); - // if (decode['data']['status'] != 'Apply') { - if (decode['data']['status'] == 'Begin') { - timeToPassengerFromDriverAfterApplied = 0; - remainingTime = 0; - remainingTimeToPassengerFromDriverAfterApplied = 0; - remainingTimeDriverWaitPassenger5Minute = 0; - rideTimerBegin = true; - statusRide = 'Begin'; - isDriverInPassengerWay = false; - isDriverArrivePassenger = false; - update(); - // isCancelRidePageShown = true; - rideIsBeginPassengerTimer(); - runWhenRideIsBegin(); - } else {} + // // if (decode['data']['status'] != 'Apply') { + // if (decode['data']['status'] == 'Begin') { + // timeToPassengerFromDriverAfterApplied = 0; + // remainingTime = 0; + // remainingTimeToPassengerFromDriverAfterApplied = 0; + // remainingTimeDriverWaitPassenger5Minute = 0; + // rideTimerBegin = true; + // statusRide = 'Begin'; + // isDriverInPassengerWay = false; + // isDriverArrivePassenger = false; + // update(); + // // isCancelRidePageShown = true; + // rideIsBeginPassengerTimer(); + // runWhenRideIsBegin(); + // } else {} + // } + // } catch (e) { + // // Handle the error or perform any necessary actions + // } + // } + + StreamController _beginRideStreamController = + StreamController.broadcast(); + Stream get beginRideStream => _beginRideStreamController.stream; + + bool isBeginRideFromDriverRunning = false; + + void getBeginRideFromDriver() { + if (isBeginRideFromDriverRunning) return; // Prevent duplicate streams + isBeginRideFromDriverRunning = true; + + Timer.periodic(const Duration(seconds: 1), (timer) async { + try { + var res = await CRUD().get( + link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); + if (res != 'failure') { + var decode = jsonDecode(res); + _beginRideStreamController + .add(decode['data']['status']); // Emit the status + + if (decode['data']['status'] == 'Begin') { + // Stop the periodic check + timer.cancel(); + isBeginRideFromDriverRunning = false; + + timeToPassengerFromDriverAfterApplied = 0; + remainingTime = 0; + remainingTimeToPassengerFromDriverAfterApplied = 0; + remainingTimeDriverWaitPassenger5Minute = 0; + rideTimerBegin = true; + statusRide = 'Begin'; + isDriverInPassengerWay = false; + isDriverArrivePassenger = false; + update(); + + // Trigger additional actions + rideIsBeginPassengerTimer(); + runWhenRideIsBegin(); + NotificationController().showNotification( + 'Trip is begin'.tr, + 'The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey' + .tr, + 'ding'); + } + } + } catch (e) { + // Handle errors + _beginRideStreamController.addError(e); } - } catch (e) { - // Handle the error or perform any necessary actions - } + }); + } + +// Call this method to listen to the stream + void listenToBeginRideStream() { + beginRideStream.listen((status) { + print("Ride status: $status"); + // Perform additional actions based on the status + }, onError: (error) { + print("Error in Begin Ride Stream: $error"); + }); } begiVIPTripFromPassenger() async { @@ -908,7 +1075,7 @@ class MapPassengerController extends GetxController { if (rideStatusFromStartApp['data']['status'] == 'Begin') { statusRide = 'Begin'; driverId = rideStatusFromStartApp['data']['driver_id']; - firstName = rideStatusFromStartApp['data']['driverName']; + passengerName = rideStatusFromStartApp['data']['driverName']; driverRate = rideStatusFromStartApp['data']['rateDriver'].toString(); statusRideFromStart = true; // DateTime endTime = @@ -1150,7 +1317,7 @@ class MapPassengerController extends GetxController { int currentTimeSearchingCaptainWindow = 0; late String driverPhone = ''; late String driverRate = ''; - late String firstName = ''; + late String passengerName = ''; late String carColor = ''; late String colorHex = ''; late String carYear = ''; @@ -1158,500 +1325,249 @@ class MapPassengerController extends GetxController { late String make = ''; late String licensePlate = ''; - confirmRideForFirstDriver() async { - // startCarLocationSearch(box.read(BoxName.carType)); - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 7000); - // var nearestCar = await getNearestDriverByPassengerLocation(); - - // if (nearestCar != null) { - // // Find the corresponding driver data in dataCarsLocationByPassenger - // var nearestDriverData = dataCarsLocationByPassenger['message'].firstWhere( - // (car) => car['driver_id'] == nearestCar.id, - // orElse: () => null, - // ); - - // // if (nearestDriverData != null) { - // driverToken = nearestDriverData['token'].toString(); - // Log.print('driverToken: ${driverToken}'); - // driverPhone = nearestDriverData['phone'].toString(); - // firstName = nearestDriverData['first_name'].toString(); - // carColor = nearestDriverData['color'].toString(); - // driverRate = nearestDriverData['ratingDriver'].toString(); - // carYear = nearestDriverData['year'].toString(); - // model = '${nearestDriverData['model']} - ${nearestDriverData['make']}'; - // licensePlate = nearestDriverData['car_plate'].toString(); - // startCarLocationSearch(box.read(BoxName.carType)); - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - // await getCarsLocationByPassengerAndReloadMarker( - // box.read(BoxName.carType), 7000); - // await getNearestDriverByPassengerLocation(); - Log.print('dataCarsLocationByPassenger: $dataCarsLocationByPassenger'); - if (dataCarsLocationByPassenger != 'failure' || - dataCarsLocationByPassenger != null) { - driverToken = - dataCarsLocationByPassenger['data'][carsOrder]['token'].toString(); - driverPhone = - dataCarsLocationByPassenger['data'][carsOrder]['phone'].toString(); - firstName = dataCarsLocationByPassenger['data'][carsOrder] - ['first_name'] // driverName - .toString(); - carColor = - dataCarsLocationByPassenger['data'][carsOrder]['color'].toString(); - colorHex = dataCarsLocationByPassenger['data'][carsOrder]['color_hex'] ?? - '#A52A2A'; - driverRate = dataCarsLocationByPassenger['data'][carsOrder] - ['ratingDriver'] - .toString(); - carYear = - dataCarsLocationByPassenger['data'][carsOrder]['year'].toString(); - model = - '${dataCarsLocationByPassenger['data'][carsOrder]['model']} - ${dataCarsLocationByPassenger['data'][carsOrder]['make']}'; - licensePlate = dataCarsLocationByPassenger['data'][carsOrder]['car_plate'] - .toString(); - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - // timeToPassengerFromDriverAfterApplied = nearestCar.duration.toInt(); - timeToPassengerFromDriverAfterApplied = - durationToPassenger; //60 todo durationToPassenger;/ - isDriversTokensSend = false; - - update(); - await CRUD().post( - link: "${AppLink.seferCairoServer}/ride/rides/add.php", - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) { - // List body = [ - rideId = jsonDecode(value)['message']; - List body = [ - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - box.read(BoxName.passengerID).toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.tokenFCM).toString(), - box.read(BoxName.phone).toString(), - durationByPassenger.toString(), - distanceByPassenger.toString(), - paymentController.isWalletChecked.toString(), - dataCarsLocationByPassenger['data'][carsOrder]['token'].toString(), - durationToPassenger.toString(), - rideId, - rideTimerBegin.toString(), - dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0', - box.read(BoxName.email).toString(), - data[0]['start_address'], - data[0]['end_address'], - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - Log.print('bodyOf order: $body'); - FirebaseMessagesController().sendNotificationToDriverMAP( - 'Order'.tr, - 'from: $startNameAddress\nto: $startNameAddress\ndistanceFromMe: $distanceByPassenger\nDistance :$distance\nPrice ; $totalPassenger', - // jsonDecode(value)['message'].toString(), - driverToken.toString(), - body, - 'order.wav'); - Log.print( - 'dataCarsLocationByPassenger[data]: ${dataCarsLocationByPassenger['data'][carsOrder]['token']}'); - }); - - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post(link: "${AppLink.endPoint}/ride/rides/add.php", payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - } - delayAndFetchRideStatus(rideId, box.read(BoxName.carType)); - if (shouldFetch == false) { - startTimer(); - update(); - } - update(); - } else { - Get.defaultDialog( - title: 'No Car or Driver Found in your area.'.tr, - titleStyle: AppStyle.title, - middleText: 'Please Try anther time '.tr, - middleTextStyle: AppStyle.title.copyWith(color: AppColor.yellowColor), - confirm: MyElevatedButton( - title: 'Ok'.tr, - onPressed: () { - Get.back(); - isSearchingWindow = false; - cancelRide(); - update(); - })); - } - } - String driverOrderStatus = 'yet'; bool isDriversTokensSend = false; - confirmRideForAllDriverAvailable0() async { - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3500); - if (dataCarsLocationByPassenger != 'failure') { - // driversToken.remove(driverToken); - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - timeToPassengerFromDriverAfterApplied = 60; - await CRUD().post( - link: "${AppLink.seferCairoServer}/ride/rides/add.php", - payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) { - // List body = [ - rideId = jsonDecode(value)['message']; - for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { - List body = [ - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), - box.read(BoxName.passengerID).toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.tokenFCM).toString(), - box.read(BoxName.phone).toString(), - durationByPassenger.toString(), - distanceByPassenger.toString(), - paymentController.isWalletChecked.toString(), - dataCarsLocationByPassenger['data'][i]['token'].toString(), - durationToPassenger.toString(), - rideId, - rideTimerBegin.toString(), - dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0', - box.read(BoxName.email).toString(), - data[0]['start_address'], - data[0]['end_address'], - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - // Log.print('body: ${body}'); - - FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderSpeed', - rideId.toString(), - dataCarsLocationByPassenger['data'][i]['token'].toString(), - body, - 'order.wav', - ); - driverOrderStatus = 'recive'; - } - }); - (rideId); // - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": //'${data[0]['start_address']}', - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": //'${data[0]['end_address']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - } - - delayAndFetchRideStatusForAllDriverAvailable(rideId); - update(); - } else { - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); - }); - } - } Set notifiedDrivers = {}; - confirmRideForAllDriverAvailable11() async { - // Fetch car locations - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - - // Ensure dataCarsLocationByPassenger is not 'failure' or null - if (dataCarsLocationByPassenger != 'failure' && - dataCarsLocationByPassenger != null) { - // Check if 'data' key exists and is not null - if (dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null) { - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - timeToPassengerFromDriverAfterApplied = 60; - - // Add ride to database - await CRUD().post( - link: "${AppLink.seferCairoServer}/ride/rides/add.php", - payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) { - if (value is String) { - final parsedValue = jsonDecode(value); - rideId = parsedValue['message']; - } else if (value is Map) { - rideId = value['message']; - } else { - Log.print('Unexpected response type: ${value.runtimeType}'); - } - // Log.print('value: ${value}'); - // rideId = jsonDecode(value)['message']; - // rideId = jsonDecode(value)['message'].toString(); - - // Timer for 5 iterations, runs every 2 seconds - int iteration = 0; - Timer.periodic(const Duration(seconds: 2), (timer) async { - if (iteration >= 10) { - timer.cancel(); - return; - } - iteration++; - - // Reload driver locations - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - - // Ensure dataCarsLocationByPassenger and data key are still valid - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null) { - // Notify only new drivers - for (var driverData in dataCarsLocationByPassenger['data']) { - String driverId = driverData['driver_id'].toString(); - if (!notifiedDrivers.contains(driverId)) { - notifiedDrivers.add(driverId); - - // Prepare body payload for notification - List body = [ - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - driverId, - box.read(BoxName.passengerID).toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.tokenFCM).toString(), - box.read(BoxName.phone).toString(), - durationByPassenger.toString(), - distanceByPassenger.toString(), - paymentController.isWalletChecked.toString(), - driverData['token'].toString(), - durationToPassenger.toString(), - rideId, - rideTimerBegin.toString(), - driverId, - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0'), - box.read(BoxName.email).toString(), - data[0]['start_address'], - data[0]['end_address'], - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - - // Send notification to the driver - FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderSpeed', - rideId, - driverData['token'].toString(), - body, - 'order.wav', - ); - } - } - } - }); - }); - - // Check for additional server endpoint - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": + addRideToNotificationDriverString() async { + await CRUD().post(link: AppLink.addWaitingRide, payload: { + 'id': rideId.toString(), + 'start_location': + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + 'end_location': + '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "price": totalPassenger.toStringAsFixed(2), + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'status': 'waiting', + 'carType': box.read(BoxName.carType), + 'passengerRate': passengerRate, + 'price_for_passenger': totalME.toString(), + 'distance': distance.toString(), + 'duration': duration ?? '10', + }); + if (AppLink.endPoint != AppLink.seferCairoServer) { + CRUD().post( + link: '${AppLink.endPoint}/notificationCaptain/addWaitingRide.php', + payload: { + 'id': rideId.toString(), + 'start_location': '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": + 'end_location': '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', "date": DateTime.now().toString(), "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder] - ['driver_id'] - .toString(), - "status": "waiting", + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'status': 'waiting', 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), + 'passengerRate': passengerRate, + 'price_for_passenger': totalME.toString(), + 'distance': distance.toString(), + 'duration': duration ?? '10', }); - } - delayAndFetchRideStatusForAllDriverAvailable(rideId); - update(); - } else { - // Show dialog if no drivers found in data key - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); - }); - } - } else { - // Show dialog if dataCarsLocationByPassenger is 'failure' or null - MyDialog().getDialog("No Car or Driver Found in your area.".tr, - "No Car or Driver Found in your area.".tr, () { - Get.back(); - Get.offAll(const MapPagePassenger()); - }); } } - Future confirmRideForAllDriverAvailable() async { - // Try to fetch car locations up to 4 times with a 2-second delay + // Future confirmRideForAllDriverAvailable1() async { + // // Try to fetch car locations up to 4 times with a 2-second delay + // bool driversFound = false; + // for (int attempt = 0; attempt < 8; attempt++) { + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), attempt > 5 ? 4500 : 3000); + + // // Check if dataCarsLocationByPassenger is valid and contains drivers + // if (dataCarsLocationByPassenger != 'failure' && + // dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('data') && + // dataCarsLocationByPassenger['data'] != null) { + // driversFound = true; + // break; // Exit loop if drivers are found + // } + + // // Wait 2 seconds before next attempt + // await Future.delayed(const Duration(seconds: 2)); + // } + + // // If no drivers were found after 4 attempts, show a dialog + // if (!driversFound) { + // Get.dialog( + // BackdropFilter( + // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + // child: CupertinoAlertDialog( + // title: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith( + // fontSize: 20, + // fontWeight: FontWeight.bold, + // ), + // ), + // content: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith(fontSize: 16), + // ), + // actions: [ + // CupertinoDialogAction( + // onPressed: () { + // Get.back(); + // Get.offAll(() => const MapPagePassenger()); + // }, + // child: Text('OK'.tr, + // style: const TextStyle(color: AppColor.greenColor)), + // ), + // ], + // ), + // ), + // barrierDismissible: false, + // ); + + // return; + // } + + // // Proceed with the rest of the function if drivers are found + // PaymentController paymentController = Get.find(); + // rideConfirm = true; + // shouldFetch = true; + // isBottomSheetShown = false; + // timeToPassengerFromDriverAfterApplied = 60; + + // // Add ride to database + // await CRUD() + // .post(link: "${AppLink.seferCairoServer}/ride/rides/add.php", payload: { + // "start_location": + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // "end_location": + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // "date": DateTime.now().toString(), + // "time": DateTime.now().toString(), + // "endtime": durationToAdd.toString(), + // "price": totalPassenger.toStringAsFixed(2), + // "passenger_id": box.read(BoxName.passengerID).toString(), + // "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + // .toString(), + // "status": "waiting", + // 'carType': box.read(BoxName.carType), + // "price_for_driver": totalPassenger.toString(), + // "price_for_passenger": totalME.toString(), + // "distance": distance.toString(), + // "paymentMethod": paymentController.isWalletChecked.toString(), + // }).then((value) { + // if (value is String) { + // final parsedValue = jsonDecode(value); + // rideId = parsedValue['message']; + // } else if (value is Map) { + // rideId = value['message']; + // } else { + // Log.print('Unexpected response type: ${value.runtimeType}'); + // } + + // // Timer to notify drivers every 2 seconds for 5 iterations + // int iteration = 0; + // Timer.periodic(const Duration(seconds: 2), (timer) async { + // if (iteration >= 5) { + // timer.cancel(); + // return; + // } + // iteration++; + + // // Reload driver locations and notify available drivers + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), 3000); + // if (dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('data') && + // dataCarsLocationByPassenger['data'] != null) { + // for (var driverData in dataCarsLocationByPassenger['data']) { + // String driverId = driverData['driver_id'].toString(); + // if (!notifiedDrivers.contains(driverId)) { + // notifiedDrivers.add(driverId); + // List body = [ + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // totalPassenger.toStringAsFixed(2), + // totalDriver.toStringAsFixed(2), + // durationToRide.toString(), + // distance.toStringAsFixed(2), + // driverId.toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.name).toString(), + // box.read(BoxName.tokenFCM).toString(), + // box.read(BoxName.phone).toString(), + // durationByPassenger.toString(), + // distanceByPassenger.toString(), + // paymentController.isWalletChecked.toString(), + // driverData['token'].toString(), + // durationToPassenger.toString(), + // rideId.toString(), + // rideTimerBegin.toString(), + // driverId.toString(), + // durationToRide.toString(), + // Get.find().wayPoints.length > 1 + // ? 'haveSteps' + // : 'startEnd', + // placesCoordinate[0], + // placesCoordinate[1], + // placesCoordinate[2], + // placesCoordinate[3], + // placesCoordinate[4], + // costForDriver.toStringAsFixed(2), + // (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + // ? double.parse(box.read(BoxName.passengerWalletTotal)) + // .toStringAsFixed(2) + // : '0'), + // box.read(BoxName.email).toString(), + // data[0]['start_address'], + // data[0]['end_address'], + // box.read(BoxName.carType), + // kazan.toStringAsFixed(0), + // passengerRate.toStringAsFixed(2), + // ]; + // Log.print('body: ${body}'); + // FirebaseMessagesController().sendNotificationToDriverMAP( + // 'OrderSpeed', + // rideId, + // driverData['token'].toString(), + // body, + // 'order.wav', + // ); + // } + // } + // } + // }); + // }); + + // // If an additional endpoint is available, post data there as well + // if (AppLink.endPoint != AppLink.seferCairoServer) { + // CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { + // "start_location": + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // "end_location": + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // "date": DateTime.now().toString(), + // "time": DateTime.now().toString(), + // "endtime": durationToAdd.toString(), + // "price": totalPassenger.toStringAsFixed(2), + // "passenger_id": box.read(BoxName.passengerID).toString(), + // "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + // .toString(), + // "status": "waiting", + // 'carType': box.read(BoxName.carType), + // "price_for_driver": totalPassenger.toString(), + // "price_for_passenger": totalME.toString(), + // "distance": distance.toString(), + // "paymentMethod": paymentController.isWalletChecked.toString(), + // }); + // } + // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // update(); + // } + + icreaseForSameRideAndDelay() async { bool driversFound = false; - for (int attempt = 0; attempt < 4; attempt++) { + for (int attempt = 0; attempt < 8; attempt++) { await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); + box.read(BoxName.carType), 4500); // Check if dataCarsLocationByPassenger is valid and contains drivers if (dataCarsLocationByPassenger != 'failure' && @@ -1700,149 +1616,12 @@ class MapPassengerController extends GetxController { return; } - - // Proceed with the rest of the function if drivers are found - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - timeToPassengerFromDriverAfterApplied = 60; - - // Add ride to database - await CRUD() - .post(link: "${AppLink.seferCairoServer}/ride/rides/add.php", payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }).then((value) { - if (value is String) { - final parsedValue = jsonDecode(value); - rideId = parsedValue['message']; - } else if (value is Map) { - rideId = value['message']; - } else { - Log.print('Unexpected response type: ${value.runtimeType}'); - } - - // Timer to notify drivers every 2 seconds for 5 iterations - int iteration = 0; - Timer.periodic(const Duration(seconds: 2), (timer) async { - if (iteration >= 5) { - timer.cancel(); - return; - } - iteration++; - - // Reload driver locations and notify available drivers - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null) { - for (var driverData in dataCarsLocationByPassenger['data']) { - String driverId = driverData['driver_id'].toString(); - if (!notifiedDrivers.contains(driverId)) { - notifiedDrivers.add(driverId); - List body = [ - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - driverId, - box.read(BoxName.passengerID).toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.tokenFCM).toString(), - box.read(BoxName.phone).toString(), - durationByPassenger.toString(), - distanceByPassenger.toString(), - paymentController.isWalletChecked.toString(), - driverData['token'].toString(), - durationToPassenger.toString(), - rideId, - rideTimerBegin.toString(), - driverId, - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0'), - box.read(BoxName.email).toString(), - data[0]['start_address'], - data[0]['end_address'], - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderSpeed', - rideId, - driverData['token'].toString(), - body, - 'order.wav', - ); - } - } - } - }); - }); - - // If an additional endpoint is available, post data there as well - if (AppLink.endPoint != AppLink.seferCairoServer) { - CRUD().post(link: '${AppLink.endPoint}/ride/rides/add.php', payload: { - "start_location": - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - "end_location": - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - "date": DateTime.now().toString(), - "time": DateTime.now().toString(), - "endtime": durationToAdd.toString(), - "price": totalPassenger.toStringAsFixed(2), - "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] - .toString(), - "status": "waiting", - 'carType': box.read(BoxName.carType), - "price_for_driver": totalPassenger.toString(), - "price_for_passenger": totalME.toString(), - "distance": distance.toString(), - "paymentMethod": paymentController.isWalletChecked.toString(), - }); - } - delayAndFetchRideStatusForAllDriverAvailable(rideId); - update(); - } - - icreaseForSameRideAndDelay() { PaymentController paymentController = Get.find(); rideConfirm = true; shouldFetch = true; isBottomSheetShown = false; timeToPassengerFromDriverAfterApplied = 60; + // confirmRideForAllDriverAvailable(); for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { List body = [ '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', @@ -1861,7 +1640,7 @@ class MapPassengerController extends GetxController { paymentController.isWalletChecked.toString(), dataCarsLocationByPassenger['data'][i]['token'].toString(), durationToPassenger.toString(), - rideId, + rideId.toString(), rideTimerBegin.toString(), dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), durationToRide.toString(), @@ -1898,64 +1677,76 @@ class MapPassengerController extends GetxController { int tick = 0; // Move tick outside the function to maintain its state - void delayAndFetchRideStatus(String rideId, carType) { - Timer.periodic(const Duration(seconds: 1), (timer) async { - if (shouldFetch) { - if (remainingTimeToPassengerFromDriverAfterApplied > 0) { - String res = await getRideStatus(rideId); + // void delayAndFetchRideStatus(String rideId, carType) { + // Timer.periodic(const Duration(seconds: 1), (timer) async { + // if (shouldFetch) { + // if (remainingTimeToPassengerFromDriverAfterApplied > 0) { + // String res = await getRideStatus(rideId); - Log.print('tick: $tick'); - String rideStatusDelayed = res.toString(); - if ((rideStatusDelayed == 'waiting' || - rideStatusDelayed == 'Refused') && - tick >= 15) { - timer.cancel(); // Stop the current timer - showAndResearchForCaptain(); - //TODO add to wait - await getCarsLocationByPassengerAndReloadMarker(carType, 3000); - // await getNearestDriverByPassengerLocationAPIGOOGLE(); - // getCarForFirstConfirm(carType); - confirmRideForAllDriverAvailable(); - // delayAndFetchRideStatusForAllDriverAvailable(rideId); - } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { - Log.print('rideStatusDelayed == Apply: $rideStatusDelayed'); - // todo play sound - Get.find() - .playSoundFromAssets('assets/start.wav'); - timer.cancel(); // Stop the current timer - await getUpdatedRideForDriverApply(rideId); - shouldFetch = false; // Stop further fetches - statusRide = 'Apply'; - rideConfirm = false; - isSearchingWindow = false; - update(); - startTimerFromDriverToPassengerAfterApplied(); - } else if (rideStatusDelayed == 'Refused') { - statusRide = 'Refused'; - if (isDriversTokensSend == false) { - confirmRideForAllDriverAvailable(); - isDriversTokensSend = true; - } // Start 15-second timer - } - //else if (isDriversTokensSend == false) { - // No need to recall delayAndFetchRideStatus as Timer.periodic is already running - update(); - // } - if (tick < 19) { - tick++; - } else { - timer.cancel(); - // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 - } - } else { - timer.cancel(); - // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 - } - } else { - timer.cancel(); // Stop the timer if shouldFetch is false - } - }); - } + // Log.print('tick: $tick'); + // String rideStatusDelayed = res.toString(); + // if ((rideStatusDelayed == 'waiting' || + // rideStatusDelayed == 'Refused') && + // tick >= 15) { + // timer.cancel(); // Stop the current timer + // showAndResearchForCaptain(); + // //TODO add to wait + // await getCarsLocationByPassengerAndReloadMarker(carType, 3000); + // // await getNearestDriverByPassengerLocationAPIGOOGLE(); + // // getCarForFirstConfirm(carType); + // confirmRideForAllDriverAvailable(); + // // delayAndFetchRideStatusForAllDriverAvailable(rideId); + // } else if (rideStatusDelayed == 'Apply' || statusRide == 'Apply') { + // Log.print('rideStatusDelayed == Apply: $rideStatusDelayed'); + // // todo play sound + // Get.find() + // .playSoundFromAssets('assets/start.wav'); + // timer.cancel(); // Stop the current timer + // await getUpdatedRideForDriverApply(rideId); + // shouldFetch = false; // Stop further fetches + // statusRide = 'Apply'; + // rideConfirm = false; + // isSearchingWindow = false; + // update(); + // startTimerFromDriverToPassengerAfterApplied(); + // if (box.read(BoxName.carType) == 'Speed' || + // box.read(BoxName.carType) == 'Awfar Car') { + // NotificationController().showNotification( + // 'The captain is responsible for the route.'.tr, + // 'This price is fixed even if the route changes for the driver.' + // .tr, + // 'ding'); + // } else if (box.read(BoxName.carType) == 'Comfort' || + // box.read(BoxName.carType) == 'Lady') { + // NotificationController().showNotification('Attention'.tr, + // 'The price may increase if the route changes.'.tr, 'ding'); + // } + // } else if (rideStatusDelayed == 'Refused') { + // statusRide = 'Refused'; + // if (isDriversTokensSend == false) { + // confirmRideForAllDriverAvailable(); + // isDriversTokensSend = true; + // } // Start 15-second timer + // } + // //else if (isDriversTokensSend == false) { + // // No need to recall delayAndFetchRideStatus as Timer.periodic is already running + // update(); + // // } + // if (tick < 19) { + // tick++; + // } else { + // timer.cancel(); + // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 + // } + // } else { + // timer.cancel(); + // // Stop the timer if remainingTimeToPassengerFromDriverAfterApplied <= 0 + // } + // } else { + // timer.cancel(); // Stop the timer if shouldFetch is false + // } + // }); + // } showAndResearchForCaptain() { Get.snackbar( @@ -1969,27 +1760,271 @@ class MapPassengerController extends GetxController { update(); } - void delayAndFetchRideStatusForAllDriverAvailable(String rideId) async { + Future confirmRideForAllDriverAvailable() async { + bool driversFound = false; + const maxAttempts = 8; + const attemptDelay = Duration(seconds: 3); + + for (int attempt = 0; attempt < maxAttempts; attempt++) { + final reloadDuration = attempt > 5 ? 4500 : 3000; + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), reloadDuration); + // await getNearestDriverByPassengerLocation(); + + if (isDriversDataValid()) { + driversFound = true; + break; + } + + await Future.delayed(attemptDelay); + } + + if (!driversFound) { + showNoDriversDialog(); + return; + } + + await postRideDetailsToServer(); + await notifyAvailableDrivers(); + delayAndFetchRideStatusForAllDriverAvailable(rideId); + update(); + } + + Future updateConfirmRideForAllDriverAvailable() async { + bool driversFound = false; + const maxAttempts = 8; + const attemptDelay = Duration(seconds: 3); + + for (int attempt = 0; attempt < maxAttempts; attempt++) { + final reloadDuration = attempt > 5 ? 4500 : 3000; + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), reloadDuration); + // await getNearestDriverByPassengerLocation(); + + if (isDriversDataValid()) { + driversFound = true; + break; + } + + await Future.delayed(attemptDelay); + } + + if (!driversFound) { + showNoDriversDialog(); + return; + } + + // await postRideDetailsToServer(); + await notifyAvailableDrivers(); + delayAndFetchRideStatusForAllDriverAvailable(rideId); + update(); + } + + bool isDriversDataValid() { + return dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null; + } + + void showNoDriversDialog() { + Get.dialog( + BackdropFilter( + filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + child: CupertinoAlertDialog( + title: Text("No Car or Driver Found in your area.".tr, + style: AppStyle.title + .copyWith(fontSize: 20, fontWeight: FontWeight.bold)), + content: Text("No Car or Driver Found in your area.".tr, + style: AppStyle.title.copyWith(fontSize: 16)), + actions: [ + CupertinoDialogAction( + onPressed: () { + Get.back(); + Get.offAll(() => const MapPagePassenger()); + }, + child: Text('OK'.tr, + style: const TextStyle(color: AppColor.greenColor)), + ), + ], + ), + ), + barrierDismissible: false, + ); + } + + Future postRideDetailsToServer() async { + final paymentController = Get.find(); + final payload = constructRidePayload(paymentController); + + try { + final response = await CRUD().post( + link: "${AppLink.seferCairoServer}/ride/rides/add.php", + payload: payload); + if (response is String) { + final parsedValue = jsonDecode(response); + rideId = parsedValue['message']; + } else if (response is Map) { + rideId = response['message']; + } else { + Log.print('Unexpected response type: ${response.runtimeType}'); + } + } catch (e) { + Log.print('Error posting ride details: $e'); + } + } + + Map constructRidePayload( + PaymentController paymentController) { + final startLocation = + '${data[0]['start_location']['lat']},${data[0]['start_location']['lng']}'; + final endLocation = + '${data[0]['end_location']['lat']},${data[0]['end_location']['lng']}'; + + return { + "start_location": startLocation, + "end_location": endLocation, + "date": DateTime.now().toString(), + "time": DateTime.now().toString(), + "endtime": durationToAdd.toString(), + "price": totalPassenger.toStringAsFixed(2), + "passenger_id": box.read(BoxName.passengerID).toString(), + "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + .toString(), + "status": "waiting", + 'carType': box.read(BoxName.carType), + "price_for_driver": totalPassenger.toString(), + "price_for_passenger": totalME.toString(), + "distance": distance.toString(), + "paymentMethod": paymentController.isWalletChecked.toString(), + }; + } + + Future notifyAvailableDrivers() async { + int iteration = 0; + const maxIterations = 5; + const iterationDelay = Duration(seconds: 2); + + while (iteration < maxIterations) { + await Future.delayed(iterationDelay); + await getCarsLocationByPassengerAndReloadMarker( + box.read(BoxName.carType), 3000); + + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.containsKey('data') && + dataCarsLocationByPassenger['data'] != null) { + for (var driverData in dataCarsLocationByPassenger['data']) { + String driverId = driverData['driver_id'].toString(); + if (!notifiedDrivers.contains(driverId)) { + notifiedDrivers.add(driverId); + double driverLat = double.parse(driverData['latitude']); + double driverLng = double.parse(driverData['longitude']); + double distanceToDriverInMeters = Geolocator.distanceBetween( + passengerLocation.latitude, + passengerLocation.longitude, + driverLat, + driverLng, + ); + + double distanceToDriverInKm = distanceToDriverInMeters / 1000; + double durationToDriverInHours = + distanceToDriverInKm / 25; // 25 km/h as default speed + double durationToDriverInSeconds = durationToDriverInHours * 3600; + durationToPassenger = durationToDriverInSeconds.toInt(); + distanceByPassenger = distanceToDriverInMeters.toStringAsFixed(0); + final body = constructNotificationBody(driverData); + Log.print('body:ww ${body}'); + FirebaseMessagesController().sendNotificationToDriverMAP( + 'OrderSpeed', + rideId, + driverData['token'].toString(), + body, + 'order.wav'); + } + } + } + iteration++; + } + } + + List constructNotificationBody(var driverData) { + final paymentController = Get.find(); + return [ + '${data[0]['start_location']['lat']},${data[0]['start_location']['lng']}', + '${data[0]['end_location']['lat']},${data[0]['end_location']['lng']}', + totalPassenger.toStringAsFixed(2), + totalDriver.toStringAsFixed(2), + durationToRide.toString(), + distance.toStringAsFixed(2), + driverData['driver_id'].toString(), + box.read(BoxName.passengerID).toString(), + box.read(BoxName.name).toString(), + box.read(BoxName.tokenFCM).toString(), + box.read(BoxName.phone).toString(), + durationToPassenger.toString(), + distanceByPassenger.toString(), + paymentController.isWalletChecked.toString(), + driverData['token'].toString(), + durationToPassenger.toString(), + rideId.toString(), + rideTimerBegin.toString(), + driverData['driver_id'].toString(), + durationToRide.toString(), + Get.find().wayPoints.length > 1 + ? 'haveSteps' + : 'startEnd', + placesCoordinate[0], + placesCoordinate[1], + placesCoordinate[2], + placesCoordinate[3], + placesCoordinate[4], + costForDriver.toStringAsFixed(2), + (double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + ? double.parse(box.read(BoxName.passengerWalletTotal)) + .toStringAsFixed(2) + : '0'), + box.read(BoxName.email).toString(), + data[0]['start_address'], + data[0]['end_address'], + box.read(BoxName.carType), + kazan.toStringAsFixed(0), + passengerRate.toStringAsFixed(2), + ]; + } + + StreamController _rideStatusStreamController = + StreamController.broadcast(); + Stream get rideStatusStream => _rideStatusStreamController.stream; + + void delayAndFetchRideStatusForAllDriverAvailable(String rideId) { const int maxAttempts = 15; int attemptCounter = 0; bool isApplied = false; tick = 0; - bool shouldContinueSearching = true; // Flag to control searching - void fetchRideStatus() async { - if (attemptCounter < maxAttempts && - !isApplied && - shouldContinueSearching) { - attemptCounter++; - tick++; + Timer.periodic(const Duration(seconds: 1), (timer) async { + if (attemptCounter >= maxAttempts || isApplied) { + timer.cancel(); + _rideStatusStreamController.close(); // Close the stream when done + return; + } + + attemptCounter++; + tick++; + + try { var res = await getRideStatus(rideId); String rideStatusDelayed = res.toString(); - + addRideToNotificationDriverString(); + _rideStatusStreamController + .add(rideStatusDelayed); // Emit the ride status + // addRideToNotificationDriverString(); if (rideStatusDelayed == 'Cancel') { - shouldContinueSearching = false; // Stop searching - attemptCounter = maxAttempts + 1; + timer.cancel(); NotificationController().showNotification( "Order Cancelled".tr, "you canceled order".tr, 'ding'); + _rideStatusStreamController + .close(); // Close stream after cancellation } else if (rideStatusDelayed == 'Apply' || rideStatusDelayed == 'Applied') { await getUpdatedRideForDriverApply(rideId); @@ -1997,8 +2032,19 @@ class MapPassengerController extends GetxController { 'Order Accepted'.tr, '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', 'ding'); + if (box.read(BoxName.carType) == 'Speed' || + box.read(BoxName.carType) == 'Awfar Car') { + NotificationController().showNotification( + 'The captain is responsible for the route.'.tr, + 'This price is fixed even if the route changes for the driver.' + .tr, + 'ding'); + } else if (box.read(BoxName.carType) == 'Comfort' || + box.read(BoxName.carType) == 'Lady') { + NotificationController().showNotification('Attention'.tr, + 'The price may increase if the route changes.'.tr, 'ding'); + } isApplied = true; - shouldFetch = false; statusRide = 'Apply'; rideConfirm = false; isSearchingWindow = false; @@ -2006,26 +2052,42 @@ class MapPassengerController extends GetxController { startTimer(); update(); startTimerFromDriverToPassengerAfterApplied(); - shouldContinueSearching = false; // Stop searching if applied + + timer.cancel(); + _rideStatusStreamController.close(); // Close stream after applying } else if (attemptCounter >= maxAttempts && rideStatusDelayed != 'Cancel') { - shouldContinueSearching = false; // Stop searching + timer.cancel(); + // addRideToNotificationDriverString(); // Show dialog to increase fee... update(); - } else { - Timer(const Duration(seconds: 2), fetchRideStatus); + _rideStatusStreamController + .close(); // Close stream after max attempts } + } catch (e) { + _rideStatusStreamController.addError(e); // Handle errors in the stream } - } + }); + } - fetchRideStatus(); // Initial call to start the process +// Listening to the Stream + void listenToRideStatusStream() { + rideStatusStream.listen((rideStatus) { + print("Ride Status: $rideStatus"); + // Handle updates based on the ride status + }, onError: (error) { + print("Error in Ride Status Stream: $error"); + // Handle stream errors + }, onDone: () { + print("Ride status stream closed."); + }); } reSearchAfterCanceledFromDriver() async { await getCarsLocationByPassengerAndReloadMarker( box.read(BoxName.carType), 3000); - confirmRideForAllDriverAvailable(); + updateConfirmRideForAllDriverAvailable(); shouldFetch = true; // Stop further fetches statusRide = 'wait'; rideConfirm = true; @@ -2089,20 +2151,22 @@ class MapPassengerController extends GetxController { driverPhone = response['data']['phone']; driverCarMake = response['data']['make']; model = response['data']['model']; + colorHex = response['data']['color_hex']; + carColor = response['data']['color']; make = response['data']['make']; licensePlate = response['data']['car_plate']; - firstName = response['data']['first_name']; - driverName = response['data']['driverName'].toString().split(' ')[0]; + passengerName = response['data']['passengerName']; + driverName = response['data']['driverName'].toString(); driverToken = response['data']['token']; - Log.print('driverToken updated: $driverToken'); + // Log.print('driverToken updated: $driverToken'); carYear = response['data']['year']; driverRate = response['data']['ratingDriver'].toString(); } // driversToken.remove(driverToken); // for (var i = 1; i < driversToken.length; i++) { FirebaseMessagesController().sendNotificationToDriverMAP( - 'Order Applied'.tr, - '$driverName Apply order\nTake attention in other order'.tr, + 'Order Accepted'.tr, + '$driverName${'Accepted your order'.tr}', driverToken.toString(), [], 'start.wav', @@ -2428,10 +2492,11 @@ class MapPassengerController extends GetxController { } else { noCarString = false; dataCarsLocationByPassenger = jsonDecode(res); + Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); // Check if 'message' is present and not null - if (dataCarsLocationByPassenger['message'] != null && - dataCarsLocationByPassenger['message'].isNotEmpty) { + if (dataCarsLocationByPassenger['data'] != null && + dataCarsLocationByPassenger['data'].isNotEmpty) { // Check if carsOrder is within bounds // if (carsOrder < dataCarsLocationByPassenger['message'].length) { // driverId = dataCarsLocationByPassenger['message'][carsOrder] @@ -2454,8 +2519,8 @@ class MapPassengerController extends GetxController { carsLocationByPassenger.clear(); // Clear existing markers - for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { - var json = dataCarsLocationByPassenger['message'][i]; + for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { + var json = dataCarsLocationByPassenger['data'][i]; _updateOrCreateMarker( MarkerId(json['latitude']).toString(), LatLng( @@ -3175,23 +3240,101 @@ class MapPassengerController extends GetxController { update(); } - Future getPlaces() async { +// Future getPlaces() async { +// var languageCode; + +// // Check if `placeDestinationController.text` contains English characters +// if (RegExp(r'[a-zA-Z]').hasMatch(placeDestinationController.text)) { +// languageCode = 'en'; +// } else { +// languageCode = 'ar'; +// } +// var url = +// '${AppLink.searcMaps}?q=${placeDestinationController.text}&in=circle:${passengerLocation.latitude},${passengerLocation.longitude};r=250000&countryCode=${box.read(BoxName.countryCode) == 'EGYPT' ? 'EGY' : 'JOR'}&apiKey=${AK.apiKeyHere}'; +// // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; +// // '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; +// print(url); +// var response = await CRUD().getGoogleApi(link: url, payload: {}); +// Log.print('response: ${response}'); + +// placesDestination = response['results']; +// update(); +// } + getAIKey(String key) async { + var res = + await CRUD().get(link: AppLink.getapiKey, payload: {"keyName": key}); + if (res != 'failure') { + var d = jsonDecode(res)['message']; + return d[key].toString(); + } else {} + } + + Future getPlaces() async { var languageCode; -// Check if `placeDestinationController.text` contains English characters + // Check if `placeDestinationController.text` contains English characters if (RegExp(r'[a-zA-Z]').hasMatch(placeDestinationController.text)) { languageCode = 'en'; } else { languageCode = 'ar'; } - var url = - // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=250000&language=$languageCode&key=${AK.mapAPIKEY.toString()}'; - print(url); - var response = await CRUD().getGoogleApi(link: url, payload: {}); - Log.print('response: ${response}'); - placesDestination = response['results']; + // Construct the URL + var url = Uri.parse( + '${AppLink.searcMaps}?q=${Uri.encodeQueryComponent(placeDestinationController.text)}&limit=4&in=circle:${passengerLocation.latitude},${passengerLocation.longitude};r=250000&countryCode=${box.read(BoxName.countryCode) == 'EGYPT' ? 'EGY' : 'JOR'}&lang=$languageCode&apiKey=$k', + ); + + // Log the URL for debugging + print(url); + // box.remove(BoxName.placesDestination); + try { + // Make the API request + var response = await CRUD().getHereMap( + link: url.toString(), + ); + + // Log the response for debugging + // Log.print('response: ${response}'); + + // Check if the response is valid + if (response != null && response['items'] != null) { + placesDestination = response['items']; + // Log.print('placesDestination: ${placesDestination}'); + + placesDestination = response['items']; + // box.write(BoxName.placesDestination, placesDestination); + for (var i = 0; i < placesDestination.length; i++) { + var res = placesDestination[i]; + + // Extract fields with null safety + var title = res['title']?.toString() ?? 'Unknown Place'; + var position = res['position']; + var address = res['address']?['label'] ?? 'Unknown Address'; + if (position == null) { + Log.print('Position is null for place: $title'); + continue; // Skip this place and continue with the next one + } + + String latitude = position['lat']?.toString() ?? '0.0'; + String longitude = position['lng']?.toString() ?? '0.0'; + + try { + await savePlaceToServer(latitude, longitude, title, address); + // Log.print('Place saved successfully: $title'); + } catch (e) { + // Log.print('Failed to save place: $e'); + } + } // todo save key in env then get key and use it + } else { + placesDestination = []; + } + } catch (e) { + // Handle any errors that occur during the API request + Log.print('Error fetching places: $e'); + placesDestination = []; + } + + // Notify listeners that the state has changed update(); } @@ -3248,6 +3391,25 @@ class MapPassengerController extends GetxController { print('Error fetching places: $e'); } } + + Future savePlaceToServer( + String latitude, String longitude, String name, String rate) async { + var data = { + 'latitude': latitude, + 'longitude': longitude, + 'name': name, + 'rate': rate, + }; + + try { + CRUD().post( + link: AppLink.savePlacesServer, + payload: data, + ); + } catch (e) { + print('Error: $e'); + } + } // Future getPlacesListsWayPoint(int index) async { // var url = // '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=80000&language=${}&key=${AK.mapAPIKEY.toString()}'; @@ -3521,7 +3683,7 @@ class MapPassengerController extends GetxController { int reloadCount = 0; startMarkerReloading() async { if (reloadStartApp == false) { - Timer.periodic(const Duration(seconds: 5), (timer) async { + Timer.periodic(const Duration(seconds: 3), (timer) async { reloadCount++; Log.print('reloadCount: $reloadCount'); @@ -3530,7 +3692,7 @@ class MapPassengerController extends GetxController { // _smoothlyUpdateMarker(); // startCarLocationSearch(box.read(BoxName.carType)); await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 6000); + box.read(BoxName.carType), 5000); await getNearestDriverByPassengerLocation(); Log.print('reloadMarkers: from startMarkerReloading'); } else { @@ -3613,26 +3775,19 @@ class MapPassengerController extends GetxController { // return null; // } Future getNearestDriverByPassengerLocation() async { - // if (polyLines.isEmpty && data.isEmpty) { - // return null; // Early return if data is empty - // } - // Log.print('rideConfirm: ${rideConfirm}'); - // Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); if (!rideConfirm) { - if (dataCarsLocationByPassenger != 'failure') { - if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger['message'] != null && - dataCarsLocationByPassenger['message'].length > 0) { - double nearestDistance = - double.infinity; // Initialize nearest distance - CarLocation? nearestCar; + if (dataCarsLocationByPassenger != 'failure' && + dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger['data'] != null && + dataCarsLocationByPassenger['data'].length > 0) { + double nearestDistance = double.infinity; // Initialize nearest distance + CarLocation? nearestCar; - for (var i = 0; - i < dataCarsLocationByPassenger['message'].length; - i++) { - var carLocation = dataCarsLocationByPassenger['message'][i]; - Log.print('carLocation: $carLocation'); + for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { + var carLocation = dataCarsLocationByPassenger['data'][i]; + Log.print('carLocation: $carLocation'); + try { // Calculate distance between passenger's location and current driver's location final distance = Geolocator.distanceBetween( passengerLocation.latitude, @@ -3642,10 +3797,13 @@ class MapPassengerController extends GetxController { ); // Calculate duration assuming an average speed of 25 km/h (adjust as needed) - int durationToPassenger = (distance * 25 * (1000 / 3600)).round(); + int durationToPassenger = (distance / 1000 / 25 * 3600).round(); Log.print('distance: $distance'); Log.print('durationToPassenger: $durationToPassenger'); - + Log.print('passengerLocation: $passengerLocation'); + Log.print('carLocation: $carLocation'); + Log.print('distance: $distance meters'); + Log.print('durationToPassenger: $durationToPassenger seconds'); // Update the UI with the distance and duration for each car update(); @@ -3664,11 +3822,13 @@ class MapPassengerController extends GetxController { // Update the UI with the nearest driver update(); } + } catch (e) { + Log.print('Error calculating distance/duration: $e'); } - - // Return the nearest car found - return nearestCar; } + + // Return the nearest car found + return nearestCar; } } @@ -4728,7 +4888,7 @@ class MapPassengerController extends GetxController { 'address': driver['address'], 'religion': driver['religion'] ?? 'UnKnown', 'age': driver['age'].toString(), // Convert age to String - 'education': driver['education'] ?? 'UnKnown', + 'education': driver['education'] ?? 'UnKnown', //startlocationname 'license_type': driver['license_type'] ?? 'UnKnown', 'national_number': driver['national_number'] ?? 'UnKnown', 'car_plate': driver['car_plate'], @@ -4746,6 +4906,9 @@ class MapPassengerController extends GetxController { 'passengerId': box.read(BoxName.passengerID), 'timeSelected': tripDateTime.toIso8601String(), 'status': 'pending', + 'startNameAddress': startNameAddress.toString(), + 'locationCoordinate': + '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', }; Log.print('tripData: $tripData'); @@ -4828,8 +4991,10 @@ class MapPassengerController extends GetxController { driver['token'].toString(), [ id, + rideId, driver['id'], passengerLocation.latitude.toString(), + startNameAddress.toString(), passengerLocation.longitude.toString(), box.read(BoxName.name).toString(), box.read(BoxName.passengerID).toString(), @@ -4904,11 +5069,17 @@ class MapPassengerController extends GetxController { } late List recentPlaces = []; - getFavioratePlaces() async { + getFavioratePlaces0() async { recentPlaces = await sql.getCustomQuery( 'SELECT DISTINCT latitude, longitude, name, rate FROM ${TableName.recentLocations}'); } + getFavioratePlaces() async { + recentPlaces = await sql.getCustomQuery( + 'SELECT * FROM ${TableName.recentLocations} ORDER BY createdAt DESC'); + // Log.print('recentPlaces: ${recentPlaces}'); + } + double passengerRate = 5; double comfortPrice = 8; double speedPrice = 4; @@ -4990,9 +5161,11 @@ class MapPassengerController extends GetxController { } } + var k; @override void onInit() async { mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); + k = await getAIKey('HERE_API'); getFavioratePlaces(); readyWayPoints(); addCustomPicker(); diff --git a/lib/controller/home/vip_waitting_page.dart b/lib/controller/home/vip_waitting_page.dart index 9cc1287..7990458 100644 --- a/lib/controller/home/vip_waitting_page.dart +++ b/lib/controller/home/vip_waitting_page.dart @@ -58,15 +58,15 @@ class VipOrderController extends GetxController { tripData.value = decodedResponse['message']; } else { tripData.clear(); // Ensure empty list if no data - mySnackeBarError('No trip data found'); + // mySnackeBarError('No trip data found'); } } else { tripData.clear(); - mySnackeBarError('Failed to fetch trip data'); + // mySnackeBarError('Failed to fetch trip data'); } } catch (e) { tripData.clear(); - mySnackeBarError('An error occurred: $e'); + // mySnackeBarError('An error occurred: $e'); } finally { isLoading.value = false; } diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index ba8998e..6bfd249 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -4,6 +4,13 @@ class MyTranslation extends Translations { @override Map> get keys => { "ar": { + "Home Page": "الصفحة الرئيسية", + "To change Language the App": "لتغيير لغة التطبيق", + "Learn more about our app and mission": + "تعرف على المزيد حول تطبيقنا ورسالتنا", + "Promos For Today": "عروض اليوم", + 'Bonus gift': 'بونص', "Pay": "ادفع", + "Get": "احصل على", "Send to Driver Again": "إرسال إلى السائق مرة أخرى", "Driver Name:": "اسم السائق:", 'No trip data available': "لا توجد بيانات رحلة متاحة", @@ -79,6 +86,7 @@ class MyTranslation extends Translations { "Pick from map destination": "حدد وجهتك على الخريطة", "Pick or Tap to confirm": "حدد أو انقر للتأكيد", "Select Order Type": "حدد نوع الطلب", + 'Accepted your order': "تم قبول طلبك", "Choose who this order is for": "اختر لمن هذا الطلب", "Order Accepted": "تم قبول الطلب", "with type": "مع النوع", "accepted your order at price": "قبل طلبك بالسعر", @@ -473,7 +481,7 @@ iOS [https://getapp.cc/app/6458734951] "Go to this Target": "الانْتِقَال إِلَى هَذَا الهَدَف", "My Profile": "مَلَفِي الشَّخْصِي", "Sign Out": "تَسْجِيل الخُرُوج", - "Home Page": "الصَّفْحَة الرَّئِيسِيَّة", + "Are you want to go to this site": "هَل تَرْغَب فِي الانْتِقَال إِلَى هَذَا المَوْقِع", "MyLocation": "مَوْقِعِي", @@ -550,11 +558,11 @@ iOS [https://getapp.cc/app/6458734951] "Bachelor's Degree": "بَكَالُورِيُوس", "Master's Degree": "مَاجِسْتِير", "Doctoral Degree": "دُكْتُورَاه", - "Promos For today": "الْعُرُوض التَّرْوِيجِيَّة لِلْيَوْم", + "Copy this Promo to use it in your Ride!": "انْسَخْ هَذَا الْعَرْض لِاسْتِخْدَامِهِ فِي رِحْلَتِك!", "To change some Settings": "لِتَغْيِير بَعْض الإِعْدَادَات", - "To change Language the App": "لِتَغْيِير لُغَة التَّطْبِيق", + "Order Request Page": "صَفْحَة طَلَب الطَّلَب", "Rouats of Trip": "طُرُق الرِّحْلَة", "Passenger Name is ": "اسْم الرَّاكِب هُوَ ", @@ -607,6 +615,24 @@ iOS [https://getapp.cc/app/6458734951] "Do you want to pay Tips for this Driver": "هَل تُرِيد دَفْع أُكْرَامِيَّة لِهَذَا السَّائِق؟", "Tip is ": " مَبْلَغ الأُكْرَامِيَّة هُوَ", + "Are you sure to delete this location?": + "هل أنت متأكد من حذف هذا الموقع؟", + "deleted": "تم الحذف", + 'Trip is begin': "الرحلة قد بدأت", + 'This price is fixed even if the route changes for the driver.': + "هذا السعر مثبت حتى لو تغير المسار للسائق", + 'The price may increase if the route changes.': + "احتمالية زيادة السعر عند تغيير المسار", + "The captain is responsible for the route.": + "الكابتن مسؤول عن المسار", + "يمكنك الاتصال أو تسجيل صوت لهذه الرحلة": + "You can call or record audio of this trip", + + 'The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey': + "بدأت الرحلة! لا تتردد في الاتصال بأرقام الطوارئ، مشاركة رحلتك، أو تفعيل التسجيل الصوتي للرحلة", + 'Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Sefer app': + 'الرجاء التأكد من جميع أغراضك الشخصية وأنه تم إضافة باقي الأجرة إن وجد إلى محفظتك قبل النزول. شكرا لاختيارك تطبيق سفر', + 'Don’t forget your personal belongings.': "لا تنسى متعلقاتك الشخصية", "Tip is": " مَبْلَغ الأُكْرَامِيَّة هُوَ", "Camera Access Denied.": "تَمَّ رَفْض الْوُصُول إِلَى الْكَامِيرَا.", "Open Settings": "افْتَحْ الإِعْدَادَات", diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index 44b1eb7..b4dde90 100644 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -700,8 +700,9 @@ class PaymentController extends GetxController { ); // Log.print('response.message!: ${response!.responseCode!}'); // if (response!.success == true && response.responseCode == '200') { - if (response!.responseCode.toString() == '200' && - response.success == true) { + + if (response!.success == true && + response!.message.toString() == 'Approved') { // Log.print('transactionID wewer: ${response.transactionID}'); Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor); method(); diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 32f2b90..4d5ef26 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -81,34 +81,28 @@ class RateController extends GetxController { } } await CRUD().post( - link: "${AppLink.seferCairoServer}/rate/addRateToDriver.php", + link: "${AppLink.seferCairoServer}/ride/rate/addRateToDriver.php", payload: { 'passenger_id': box.read(BoxName.passengerID).toString(), - 'driver_id': driverId, - 'ride_id': rideId, + 'driver_id': driverId.toString(), + 'ride_id': rideId.toString(), 'rating': selectedRateItemId.toString(), 'comment': comment.text, - }).then((value) { + }); + + if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD().post( - link: "${AppLink.seferAlexandriaServer}/rate/addRateToDriver.php", + link: "${AppLink.endPoint}/ride/rate/addRateToDriver.php", payload: { 'passenger_id': box.read(BoxName.passengerID).toString(), - 'driver_id': driverId, - 'ride_id': rideId, + 'driver_id': driverId.toString(), + 'ride_id': rideId.toString(), 'rating': selectedRateItemId.toString(), 'comment': comment.text, }); - CRUD().post( - link: "${AppLink.seferGizaServer}/rate/addRateToDriver.php", - payload: { - 'passenger_id': box.read(BoxName.passengerID).toString(), - 'driver_id': driverId, - 'ride_id': rideId, - 'rating': selectedRateItemId.toString(), - 'comment': comment.text, - }); - Get.find().restCounter(); - Get.offAll(const MapPagePassenger()); - }); + } + + Get.find().restCounter(); + Get.offAll(const MapPagePassenger()); } } diff --git a/lib/models/db_sql.dart b/lib/models/db_sql.dart index 0caa829..4178e68 100644 --- a/lib/models/db_sql.dart +++ b/lib/models/db_sql.dart @@ -37,18 +37,21 @@ class DbSql { latitude REAL, longitude REAL, name TEXT UNIQUE, - rate TEXT + rate TEXT, + createdAt TEXT ) '''); + await db.execute('DROP TABLE IF EXISTS ${TableName.recentLocations}'); await db.execute(''' - CREATE TABLE IF NOT EXISTS ${TableName.recentLocations}( - id INTEGER PRIMARY KEY AUTOINCREMENT, - latitude REAL, - longitude REAL, - name TEXT , - rate TEXT - ) - '''); + CREATE TABLE ${TableName.recentLocations}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + latitude REAL, + longitude REAL, + name TEXT, + rate TEXT, + createdAt TEXT + ) +'''); await db.execute(''' CREATE TABLE IF NOT EXISTS ${TableName.driverOrdersRefuse}( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -97,6 +100,34 @@ class DbSql { return await db.insert(table, map); } + Future insertMapLocation(Map map, String table) async { + Database db = await instance.database; + + // Check if the record already exists (based on latitude, longitude, and name) + var existing = await db.query( + table, + where: 'latitude = ? AND longitude = ? AND name = ?', + whereArgs: [map['latitude'], map['longitude'], map['name']], + ); + + if (existing.isNotEmpty) { + // If record exists, update the createdAt field with the current timestamp + var updatedMap = Map.from(map); + updatedMap['createdAt'] = + DateTime.now().toIso8601String(); // Update timestamp + return await db.update( + table, + updatedMap, + where: 'id = ?', + whereArgs: [existing.first['id']], // Update the existing row + ); + } else { + // If record doesn't exist, insert new record with the current timestamp + map['createdAt'] = DateTime.now().toIso8601String(); + return await db.insert(table, map); + } + } + Future updateData(Map map, String table, int id) async { Database db = await instance.database; diff --git a/lib/views/Rate/rate_captain.dart b/lib/views/Rate/rate_captain.dart index b680eb3..e3be4bd 100644 --- a/lib/views/Rate/rate_captain.dart +++ b/lib/views/Rate/rate_captain.dart @@ -40,7 +40,7 @@ class RateDriverFromPassenger extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Text( - '${'Total price to '.tr}${Get.find().firstName}', + '${'Total price to '.tr}${Get.find().driverName}', style: AppStyle.title, ), Row( diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index b4d6405..8cceb25 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -12,6 +12,7 @@ import 'package:SEFER/constant/style.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; +import 'package:permission_handler/permission_handler.dart'; import '../../constant/info.dart'; import '../../controller/auth/apple_signin_controller.dart'; @@ -456,6 +457,16 @@ class LoginPage extends StatelessWidget { textAlign: TextAlign.center, style: AppStyle.title, ), + TextButton( + onPressed: () { + // Optionally, navigate to app settings for manual permission control + openAppSettings(); + }, + child: Text( + "Open Settings".tr, + style: const TextStyle(color: AppColor.blueColor), + ), + ), MyElevatedButton( title: 'Next'.tr, onPressed: () async { diff --git a/lib/views/home/HomePage/contact_us.dart b/lib/views/home/HomePage/contact_us.dart index 58a104c..e7012dc 100644 --- a/lib/views/home/HomePage/contact_us.dart +++ b/lib/views/home/HomePage/contact_us.dart @@ -23,9 +23,9 @@ class ContactUsPage extends StatelessWidget { body: [ Padding( padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: ListView( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( decoration: AppStyle.boxDecoration1, diff --git a/lib/views/home/home_page.dart b/lib/views/home/home_page.dart index 9c58f41..3b9949d 100644 --- a/lib/views/home/home_page.dart +++ b/lib/views/home/home_page.dart @@ -1,10 +1,8 @@ import 'package:SEFER/controller/home/home_page_controller.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:SEFER/constant/colors.dart'; -import 'package:SEFER/constant/style.dart'; import 'package:SEFER/views/lang/languages.dart'; -import 'package:SEFER/views/widgets/my_scafold.dart'; import 'HomePage/about_page.dart'; import 'HomePage/frequentlyQuestionsPage.dart'; @@ -18,121 +16,108 @@ class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { Get.put(HomePageController()); - return MyScafolld( - isleading: true, - title: 'Home Page'.tr, - body: [ - ListView( + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Home Page'.tr), + leading: CupertinoButton( + padding: EdgeInsets.zero, + child: const Icon(CupertinoIcons.back), + onPressed: () { + Navigator.pop(context); + }, + ), + ), + child: SafeArea( + child: ListView( children: [ - ListTile( + CupertinoListTile( onTap: () { Get.to(() => const Language()); }, - title: Text( - 'Language'.tr, - style: AppStyle.headTitle2, - ), - subtitle: Text( - 'To change Language the App'.tr, - style: AppStyle.title, - ), - trailing: const Icon( - Icons.arrow_forward_ios, - size: 30, - color: AppColor.primaryColor, - ), - leading: const Icon( - Icons.language_sharp, - color: AppColor.primaryColor, - ), + leading: const Icon(CupertinoIcons.globe, + color: CupertinoColors.activeBlue), + title: Text('Language'.tr), + subtitle: Text('To change Language the App'.tr), + trailing: const CupertinoListTileChevron(), ), - ListTile( - leading: const Icon(Icons.location_city_outlined), - title: Text( - 'Change Country'.tr, - style: AppStyle.headTitle2, - ), - subtitle: Text( - 'You can change the Country to get all features'.tr, - style: AppStyle.title, - ), - onTap: () => Get.to(MyScafolld( - title: 'Change Country'.tr, - body: [CountryPickerFromSetting()], - isleading: true)), - ), - ListTile( - leading: const Icon(Icons.question_answer), - title: Text( - 'Frequently Questions'.tr, - style: AppStyle.headTitle2, - ), - subtitle: Text( - 'You can change the Country to get all features'.tr, - style: AppStyle.title, - ), - onTap: () => Get.to(() => const FrequentlyQuestionsPage()), - ), - ListTile( - leading: const Icon(Icons.vibration), - title: GetBuilder(builder: (controller) { - return SwitchListTile( - title: Text( - 'Vibration'.tr, - style: AppStyle.headTitle2, + CupertinoListTile( + onTap: () { + Get.to(CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('Change Country'.tr), ), - value: controller.isVibrate, - onChanged: controller.changeVibrateOption, - activeColor: AppColor.primaryColor, - ); - }), - subtitle: Text( - "You can change the vibration feedback for all buttons".tr, - style: AppStyle.title, - ), - onTap: () => Get.to(() => const FrequentlyQuestionsPage()), + child: SafeArea( + child: CountryPickerFromSetting(), + ), + )); + }, + leading: const Icon(CupertinoIcons.location, + color: CupertinoColors.activeBlue), + title: Text('Change Country'.tr), + subtitle: + Text('You can change the Country to get all features'.tr), + trailing: const CupertinoListTileChevron(), ), - ListTile( - leading: const Icon(Icons.record_voice_over_outlined), - title: Text( - 'Trips recorded'.tr, - style: AppStyle.headTitle2, - ), - subtitle: Text( - 'Here recorded trips audio'.tr, - style: AppStyle.title, - ), - onTap: () async { - Get.to(() => TripsRecordedPage()); - }), - ListTile( - leading: const Icon(Icons.account_balance_outlined), - title: Text( - 'About Us'.tr, - style: AppStyle.headTitle2, - ), - subtitle: Text( - 'You can change the Country to get all features'.tr, - style: AppStyle.title, - ), - onTap: () => Get.to(() => const AboutPage()), + CupertinoListTile( + onTap: () { + Get.to(() => const FrequentlyQuestionsPage()); + }, + leading: const Icon(CupertinoIcons.question, + color: CupertinoColors.activeBlue), + title: Text('Frequently Questions'.tr), + subtitle: Text('Find answers to common questions'.tr), + trailing: const CupertinoListTileChevron(), ), - ListTile( - leading: const Icon(Icons.share), - title: Text( - 'Share App'.tr, - style: AppStyle.headTitle2, + CupertinoListTile( + leading: const Icon(Icons.vibration, + color: CupertinoColors.activeBlue), + title: Text('Vibration'.tr), + trailing: GetBuilder( + builder: (controller) { + return CupertinoSwitch( + value: controller.isVibrate, + onChanged: controller.changeVibrateOption, + ); + }, ), subtitle: Text( - 'You can share the SEFER App with your friends and earn rewards for rides they take using your code' - .tr, - style: AppStyle.title, - ), - onTap: () => Get.to(() => ShareAppPage()), + 'You can change the vibration feedback for all buttons'.tr), + ), + CupertinoListTile( + onTap: () { + Get.to(() => const TripsRecordedPage()); + }, + leading: const Icon(CupertinoIcons.mic_circle, + color: CupertinoColors.activeBlue), + title: Text('Trips recorded'.tr), + subtitle: Text('Here recorded trips audio'.tr), + trailing: const CupertinoListTileChevron(), + ), + CupertinoListTile( + onTap: () { + Get.to(() => const AboutPage()); + }, + leading: const Icon(CupertinoIcons.info_circle, + color: CupertinoColors.activeBlue), + title: Text('About Us'.tr), + subtitle: Text('Learn more about our app and mission'.tr), + trailing: const CupertinoListTileChevron(), + ), + CupertinoListTile( + onTap: () { + Get.to(() => ShareAppPage()); + }, + leading: const Icon(CupertinoIcons.share, + color: CupertinoColors.activeBlue), + title: Text('Share App'.tr), + subtitle: Text( + 'You can share the SEFER App with your friends and earn rewards for rides they take using your code' + .tr), + trailing: const CupertinoListTileChevron(), ), ], ), - ], + ), ); } } diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index 3c251df..040f669 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -66,6 +66,7 @@ class MapPagePassenger extends StatelessWidget { const RideBeginPassenger(), const VipRideBeginPassenger(), const RideFromStartApp(), + cancelRidePage(), const MenuIconMapPageWidget(), PointsPageForRider() @@ -85,7 +86,7 @@ class CancelRidePageShow extends StatelessWidget { Widget build(BuildContext context) { return GetBuilder( builder: (controller) => - (controller.data.isNotEmpty && controller.remainingTime > 0) + (controller.data.isNotEmpty && controller.statusRide != 'Begin') // || // controller.timeToPassengerFromDriverAfterApplied == 0 ? Positioned( diff --git a/lib/views/home/map_widget.dart/apply_order_widget.dart b/lib/views/home/map_widget.dart/apply_order_widget.dart index 1f61c68..2a974d8 100644 --- a/lib/views/home/map_widget.dart/apply_order_widget.dart +++ b/lib/views/home/map_widget.dart/apply_order_widget.dart @@ -17,6 +17,21 @@ class ApplyOrderWidget extends StatelessWidget { @override Widget build(BuildContext context) { + Color _parseColor(String colorHex) { + if (colorHex.isEmpty) { + return Colors.grey; // Fallback for empty color + } + + // Ensure the string starts with '0xff' for ARGB format + String processedHex = colorHex.replaceFirst('#', '0xff').trim(); + + if (!processedHex.startsWith('0xff')) { + processedHex = '0xff$processedHex'; // Add '0xff' if missing + } + + return Color(int.parse(processedHex)); + } + return GetBuilder(builder: (controller) { if (controller.statusRide == 'Apply' && controller.isSearchingWindow == false) { @@ -108,36 +123,43 @@ class ApplyOrderWidget extends StatelessWidget { ], ), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - Image.asset( - box.read(BoxName.carType) == 'Comfort' - ? 'assets/images/blob.png' - : box.read(BoxName.carType) == 'Lady' - ? 'assets/images/lady.png' // Assuming there's an image for Lady - : box.read(BoxName.carType) == 'Speed' - ? 'assets/images/carspeed.png' - : box.read(BoxName.carType) == - 'Scooter' - ? 'assets/images/moto.png' - : box.read(BoxName.carType) == - 'Mishwar Vip' - ? 'assets/images/freeRide.png' - : box.read(BoxName - .carType) == - 'Awfar Car' - ? 'assets/images/balash.png' - : box.read(BoxName - .carType) == - 'Pink Bike' - ? 'assets/images/pinkBike.png' - : box.read(BoxName - .carType) == - 'Rayeh Gai' - ? 'assets/images/roundtrip.png' - : 'assets/images/carspeed.png', // Default image if none of the above - width: 80, - ), + // ColorFiltered( + // colorFilter: ColorFilter.mode( + // _parseColor(controller.colorHex), + // BlendMode.srcIn, + // ), + // child: Image.asset( + // box.read(BoxName.carType) == 'Comfort' + // ? 'assets/images/blob.png' + // : box.read(BoxName.carType) == 'Lady' + // ? 'assets/images/lady.png' // Assuming there's an image for Lady + // : box.read(BoxName.carType) == 'Speed' + // ? 'assets/images/carspeed.png' + // : box.read(BoxName.carType) == + // 'Scooter' + // ? 'assets/images/moto.png' + // : box.read(BoxName.carType) == + // 'Mishwar Vip' + // ? 'assets/images/freeRide.png' + // : box.read(BoxName + // .carType) == + // 'Awfar Car' + // ? 'assets/images/balash.png' + // : box.read(BoxName + // .carType) == + // 'Pink Bike' + // ? 'assets/images/pinkBike.png' + // : box.read(BoxName + // .carType) == + // 'Rayeh Gai' + // ? 'assets/images/roundtrip.png' + // : 'assets/images/carspeed.png', // Default image if none of the above + // width: 80, + // ), + // ), + Column( children: [ Text( @@ -152,14 +174,31 @@ class ApplyOrderWidget extends StatelessWidget { ), ], ), + const SizedBox( + width: 10, + ), Text( // 'Black', - controller.carColor, + controller.carColor.toString(), style: AppStyle.title, ), const SizedBox( width: 10, ), + ColorFiltered( + colorFilter: ColorFilter.mode( + _parseColor(controller.colorHex), + BlendMode.srcIn, + ), + child: Image.asset( + box.read(BoxName.carType) == 'Scooter' || + box.read(BoxName.carType) == + 'Pink Bike' + ? 'assets/images/moto.png' + : 'assets/images/car3.png', + width: 80, + ), + ), ], ), Padding( @@ -218,7 +257,7 @@ class ApplyOrderWidget extends StatelessWidget { children: [ Text( // 'fadi ahmad', - controller.firstName, + controller.driverName, style: AppStyle.title, ), Text( diff --git a/lib/views/home/map_widget.dart/form_search_places_destenation.dart b/lib/views/home/map_widget.dart/form_search_places_destenation.dart index 525e642..83217c3 100644 --- a/lib/views/home/map_widget.dart/form_search_places_destenation.dart +++ b/lib/views/home/map_widget.dart/form_search_places_destenation.dart @@ -242,109 +242,127 @@ GetBuilder formSearchPlacesDestenation() { // ) // : const SizedBox(), Container( - height: controller.placesDestination.isNotEmpty - ? controller.height - : 0, - color: AppColor.secondaryColor, - child: ListView.builder( - itemCount: controller.placesDestination.length, - itemBuilder: (BuildContext context, int index) { - var res = controller.placesDestination[index]; - return InkWell( - onTap: () async { - controller.changeHeightPlaces(); - await sql.insertData({ - 'latitude': res['geometry']['location']['lat'], - 'longitude': res['geometry']['location']['lng'], - 'name': res['name'].toString(), - 'rate': res['rating'].toString(), - }, TableName.recentLocations); + height: controller.placesDestination.isNotEmpty + ? controller.height + : 0, + color: AppColor.secondaryColor, + child: ListView.builder( + itemCount: controller.placesDestination.length, + itemBuilder: (BuildContext context, int index) { + var res = controller.placesDestination[index]; - controller.changeHeightPlaces(); + // Extract fields with null safety + var title = res['title']?.toString() ?? 'Unknown Place'; + var position = res['position']; + var latitude = position?['lat']; + var longitude = position?['lng']; + var address = + res['address']?['label'] ?? 'Unknown Address'; + var categories = res['categories'] ?? []; + var primaryCategory = categories.isNotEmpty + ? categories[0]['name'] + : 'Unknown Category'; - controller.passengerLocation = controller.newMyLocation; - controller.myDestination = LatLng( - double.parse( - res['geometry']['location']['lat'].toString()), - double.parse( - res['geometry']['location']['lng'].toString()), - ); - controller.convertHintTextDestinationNewPlaces(index); + return InkWell( + onTap: () async { + if (latitude != null && longitude != null) { + sql.insertMapLocation({ + 'latitude': latitude, + 'longitude': longitude, + 'name': title, + 'rate': 'N/A', + 'createdAt': DateTime.now().toIso8601String(), + // No rating in this structure, adjust as needed + }, TableName.recentLocations); - controller.placesDestination = []; - controller.placeDestinationController.clear(); - controller.changeMainBottomMenuMap(); - controller.passengerStartLocationFromMap = true; - controller.isPickerShown = true; - }, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - children: [ - Image.network( - res['icon'], - width: 20, + controller.passengerLocation = + controller.newMyLocation; + controller.myDestination = + LatLng(latitude, longitude); + controller + .convertHintTextDestinationNewPlaces(index); + + controller.placesDestination = []; + controller.placeDestinationController.clear(); + controller.changeMainBottomMenuMap(); + controller.passengerStartLocationFromMap = true; + controller.isPickerShown = true; + } else { + Toast.show( + context, + 'Invalid location data', + AppColor.redColor, + ); + } + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + children: [ + const Icon(Icons.place, + size: 20), // Fallback icon for places + IconButton( + onPressed: () async { + if (latitude != null && + longitude != null) { + await sql.insertMapLocation({ + 'latitude': latitude, + 'longitude': longitude, + 'name': title, + 'rate': 'N/A', + }, TableName.placesFavorite); + Toast.show( + context, + '$title ${'Saved Successfully'.tr}', + AppColor.primaryColor, + ); + } else { + Toast.show( + context, + 'Invalid location data', + AppColor.redColor, + ); + } + }, + icon: const Icon(Icons.favorite_border), + ), + ], + ), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + title, + style: AppStyle.title, + ), + Text( + address, + style: AppStyle.subtitle, + ), + Text( + primaryCategory, + style: AppStyle.subtitle, + ), + ], ), - IconButton( - onPressed: () async { - await sql.insertData({ - 'latitude': res['geometry'] - ['location']['lat'], - 'longitude': res['geometry'] - ['location']['lng'], - 'name': res['name'].toString(), - 'rate': res['rating'].toString(), - }, TableName.placesFavorite); - Toast.show( - context, - '${res['name']} ${'Saved Sucssefully'.tr}', - AppColor.primaryColor); - }, - icon: const Icon(Icons.favorite_border), - ), - ], - ), - Column( - children: [ - Text( - res['name'].toString(), - style: AppStyle.title, - ), - Text( - res['vicinity'].toString(), - style: AppStyle.subtitle, - ), - ], - ), - Column( - children: [ - Text( - 'rate', - style: AppStyle.subtitle, - ), - Text( - res['rating'].toString(), - style: AppStyle.subtitle, - ), - ], - ), - ], - ), - const Divider( - thickness: 1, - ) - ], + ), + ], + ), + const Divider(thickness: 1), + ], + ), ), - ), - ); - }, - ), - ) + ); + }, + )) ], )); } diff --git a/lib/views/home/map_widget.dart/form_search_start.dart b/lib/views/home/map_widget.dart/form_search_start.dart index 171ec03..ac7d2d2 100644 --- a/lib/views/home/map_widget.dart/form_search_start.dart +++ b/lib/views/home/map_widget.dart/form_search_start.dart @@ -103,7 +103,7 @@ GetBuilder formSearchPlacesStart() { // controller.myLocation = // controller.newStartPointLocation; // } - await sql.insertData({ + await sql.insertMapLocation({ 'latitude': res['geometry']['location']['lat'], 'longitude': res['geometry']['location']['lng'], 'name': res['name'].toString(), @@ -130,7 +130,7 @@ GetBuilder formSearchPlacesStart() { ), IconButton( onPressed: () async { - await sql.insertData({ + await sql.insertMapLocation({ 'latitude': res['geometry'] ['location']['lat'], 'longitude': res['geometry'] diff --git a/lib/views/home/map_widget.dart/form_serch_multiy_point.dart b/lib/views/home/map_widget.dart/form_serch_multiy_point.dart index 0347790..fed2274 100644 --- a/lib/views/home/map_widget.dart/form_serch_multiy_point.dart +++ b/lib/views/home/map_widget.dart/form_serch_multiy_point.dart @@ -109,7 +109,7 @@ GetBuilder formSearchPlaces(int index) { ), IconButton( onPressed: () async { - await sql.insertData({ + await sql.insertMapLocation({ 'latitude': res['geometry'] ['location']['lat'], 'longitude': res['geometry'] 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 ff26bb6..09b3346 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 @@ -8,7 +8,7 @@ import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/vip_waitting_page.dart'; GetBuilder leftMainMenuIcons() { - final textToSpeechController = Get.put(TextToSpeechController()); + Get.put(TextToSpeechController()); return GetBuilder( builder: (controller) => Positioned( top: Get.height * .008, @@ -108,7 +108,9 @@ GetBuilder leftMainMenuIcons() { // borderRadius: BorderRadius.circular(15)), // child: IconButton( // onPressed: () async { - // print(Get.put(MapPassengerController()).data); + // controller.statusRide == 'Apply' && + // controller.isSearchingWindow == false; + // controller.update(); // }, // icon: const Icon( // Octicons diff --git a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart index 3acfe04..65591c5 100644 --- a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart +++ b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart @@ -1,4 +1,6 @@ +import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:SEFER/views/widgets/my_textField.dart'; +import 'package:SEFER/views/widgets/mysnakbar.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -14,6 +16,7 @@ import '../../../constant/colors.dart'; import '../../../constant/table_names.dart'; import '../../../controller/functions/toast.dart'; import '../../../controller/functions/tts.dart'; +import '../../../print.dart'; import 'form_search_start.dart'; class MainBottomMenuMap extends StatelessWidget { @@ -46,24 +49,34 @@ class MainBottomMenuMap extends StatelessWidget { child: Container( width: Get.width * .8, height: Get.height * .1, - decoration: const BoxDecoration( - boxShadow: [ - BoxShadow( - color: Color.fromARGB( - 255, 237, 230, 230), - blurRadius: 5, - offset: Offset(2, 4)), - BoxShadow( - color: Color.fromARGB( - 255, 242, 237, 237), - blurRadius: 5, - offset: Offset(-2, -2)) - ], - color: AppColor.blueColor, - borderRadius: BorderRadius.all( - Radius.elliptical(15, 30), + padding: const EdgeInsets.symmetric( + horizontal: 20, vertical: 10), + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColor.blueColor.withOpacity(0.8), + AppColor.blueColor.withOpacity(0.6), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, ), + boxShadow: const [ + BoxShadow( + color: Color.fromARGB( + 255, 237, 230, 230), + blurRadius: 8, + offset: Offset(4, 8), + ), + BoxShadow( + color: Color.fromARGB( + 255, 242, 237, 237), + blurRadius: 8, + offset: Offset(-4, -4), + ), + ], + borderRadius: BorderRadius.circular(30), ), + // decoration: AppStyle.boxDecoration1, child: DefaultTextStyle( style: AppStyle.title.copyWith( @@ -350,6 +363,18 @@ class MainBottomMenuMap extends StatelessWidget { }, )); }, + onLongPress: () { + MyDialog().getDialog( + "Are you sure to delete this location?".tr, '', () { + sql.deleteData(TableName.recentLocations, + controller.recentPlaces[index]['id']); + + controller.getFavioratePlaces(); + controller.update(); + Get.back(); + mySnackbarSuccess('deleted'.tr); + }); + }, child: Container( decoration: AppStyle.boxDecoration1, child: Padding( 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 3c71f0e..cf919a1 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -53,7 +53,7 @@ class RideBeginPassenger extends StatelessWidget { Container( decoration: AppStyle.boxDecoration, child: Text( - controller.firstName, + controller.driverName, style: AppStyle.title, ), ), diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index 1bbe5f9..ce13291 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -1,4 +1,3 @@ -import 'package:SEFER/views/widgets/my_dialog.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -12,11 +11,8 @@ import '../../../controller/functions/toast.dart'; import '../../../controller/home/payment/credit_card_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; -import '../../../models/model/painter_copoun.dart'; -import '../../../print.dart'; import '../../widgets/elevated_btn.dart'; import '../../widgets/my_scafold.dart'; -import '../../widgets/my_textField.dart'; import 'passenger_wallet_dialoge.dart'; class PassengerWallet extends StatelessWidget { @@ -51,33 +47,33 @@ class PassengerWallet extends StatelessWidget { }, ), ), - Padding( - padding: - const EdgeInsets.symmetric(horizontal: 80, vertical: 10), - child: MyElevatedButton( - kolor: AppColor.yellowColor, - title: 'Bounus gift'.tr, - onPressed: () { - Get.dialog( - AlertDialog( - contentPadding: EdgeInsets - .zero, // Removes the padding around the content - content: SizedBox( - width: 300, // Match the width of PromoBanner - // height: 250, // Match the height of PromoBanner - child: PromoBanner( - promoCode: box.read(BoxName.promo), - discountPercentage: box.read(BoxName.discount), - validity: box.read(BoxName.validity), - ), - ), - ), - ); - Log.print( - 'box.read(BoxName.isGiftToken).toString(): ${box.read(BoxName.isGiftToken).toString()}'); - }, - ), - ) + // Padding( + // padding: + // const EdgeInsets.symmetric(horizontal: 80, vertical: 10), + // child: MyElevatedButton( + // kolor: AppColor.yellowColor, + // title: 'Bonus gift'.tr, + // onPressed: () { + // Get.dialog( + // AlertDialog( + // contentPadding: EdgeInsets + // .zero, // Removes the padding around the content + // content: SizedBox( + // width: 300, // Match the width of PromoBanner + // // height: 250, // Match the height of PromoBanner + // child: PromoBanner( + // promoCode: box.read(BoxName.promo), + // discountPercentage: box.read(BoxName.discount), + // validity: box.read(BoxName.validity), + // ), + // ), + // ), + // ); + // Log.print( + // 'box.read(BoxName.isGiftToken).toString(): ${box.read(BoxName.isGiftToken).toString()}'); + // }, + // ), + // ) ], ), ), @@ -98,7 +94,8 @@ class PassengerWallet extends StatelessWidget { MyElevatedButton( title: 'Show Promos to Charge'.tr, onPressed: () { - controller.changePromoSheetDialogue(); + // controller.changePromoSheetDialogue(); + showPaymentBottomSheet(context); }, ), const SizedBox( diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart index 89b9933..af85f94 100644 --- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart +++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart @@ -1,4 +1,6 @@ +import 'package:SEFER/constant/style.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; @@ -89,6 +91,147 @@ class PassengerWalletDialog extends StatelessWidget { ); } } +// 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: box.read(BoxName.countryCode) == 'Egypt' ? 100 : 10, + bonusAmount: 0, + currency: box.read(BoxName.countryCode) == 'Egypt' + ? 'LE'.tr + : 'JOD'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: box.read(BoxName.countryCode) == 'Egypt' ? 200 : 20, + bonusAmount: box.read(BoxName.countryCode) == 'Egypt' ? 5 : 1, + currency: box.read(BoxName.countryCode) == 'Egypt' + ? 'LE'.tr + : 'JOD'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: box.read(BoxName.countryCode) == 'Egypt' ? 400 : 40, + bonusAmount: + box.read(BoxName.countryCode) == 'Egypt' ? 15 : 2.5, + currency: box.read(BoxName.countryCode) == 'Egypt' + ? 'LE'.tr + : 'JOD'.tr, + ), + + const SizedBox(height: 8.0), + _buildPaymentOption( + context: context, + controller: controller, + amount: box.read(BoxName.countryCode) == 'Egypt' ? 1000 : 50, + bonusAmount: box.read(BoxName.countryCode) == 'Egypt' ? 100 : 6, + currency: box.read(BoxName.countryCode) == 'Egypt' + ? 'LE'.tr + : 'JOD'.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( @@ -209,7 +352,8 @@ void showPaymentOptions(BuildContext context, PaymentController controller) { cancelButton: CupertinoActionSheetAction( child: Text('Cancel'.tr), onPressed: () { - controller.changePromoSheetDialogue(); + // controller.changePromoSheetDialogue(); + Get.back(); }, ), ), diff --git a/lib/views/home/profile/promos_passenger_page.dart b/lib/views/home/profile/promos_passenger_page.dart index 1d995d4..923478b 100644 --- a/lib/views/home/profile/promos_passenger_page.dart +++ b/lib/views/home/profile/promos_passenger_page.dart @@ -20,211 +20,211 @@ class PromosPassengerPage extends StatelessWidget { Widget build(BuildContext context) { Get.put(PromosController()); return MyScafolld( - title: 'Promos For today'.tr, + title: "Promos For Today".tr, isleading: true, body: [ GetBuilder( builder: (orderHistoryController) => orderHistoryController.isLoading ? const MyCircularProgressIndicator() : ListView.builder( - itemCount: orderHistoryController.promoList.length + - 1, // Adding 1 for the ad + itemCount: orderHistoryController + .promoList.length, // Adding 1 for the ad itemBuilder: (BuildContext context, int index) { - if (index == 0) { - // Ad at the beginning - return Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - height: 120, // Adjust the height of the ad container - decoration: BoxDecoration( - color: - Colors.grey[200], // Background color for the ad - borderRadius: BorderRadius.circular(10), - ), - child: Center( - child: 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 - : 100, - countPoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? '300' - : '100', - ), - PointsCaptain( - kolor: AppColor.bronze, - pricePoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? 10 - : 200, - countPoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? '1040' - : '210', - ), - PointsCaptain( - kolor: AppColor.goldenBronze, - pricePoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? 22 - : 400, - countPoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? '2300' - : '450', - ), - PointsCaptain( - kolor: AppColor.gold, - pricePoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? 50 - : 1000, - countPoint: - box.read(BoxName.countryCode) == - 'Jordan' - ? '55000' - : '1200', - ), - ], - )), - ), - ), - ); - } else { - // Promo items - final rides = orderHistoryController.promoList[index - 1]; + // if (index == 0) { + // // Ad at the beginning + // return Padding( + // padding: const EdgeInsets.all(8.0), + // child: Container( + // height: 120, // Adjust the height of the ad container + // decoration: BoxDecoration( + // color: + // Colors.grey[200], // Background color for the ad + // borderRadius: BorderRadius.circular(10), + // ), + // child: Center( + // child: 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 + // : 100, + // countPoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? '300' + // : '100', + // ), + // PointsCaptain( + // kolor: AppColor.bronze, + // pricePoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? 10 + // : 200, + // countPoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? '1040' + // : '210', + // ), + // PointsCaptain( + // kolor: AppColor.goldenBronze, + // pricePoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? 22 + // : 400, + // countPoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? '2300' + // : '450', + // ), + // PointsCaptain( + // kolor: AppColor.gold, + // pricePoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? 50 + // : 1000, + // countPoint: + // box.read(BoxName.countryCode) == + // 'Jordan' + // ? '55000' + // : '1200', + // ), + // ], + // )), + // ), + // ), + // ); + // } else { + // Promo items + final rides = orderHistoryController.promoList[index]; - return Padding( - padding: const EdgeInsets.all(12.0), - child: Container( - decoration: BoxDecoration( - color: CupertinoColors.systemGrey6, - borderRadius: BorderRadius.circular(16), - boxShadow: [ - BoxShadow( - color: - CupertinoColors.systemGrey.withOpacity(0.5), - blurRadius: 8, - offset: Offset(0, 4), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - GestureDetector( - onTap: () {}, - child: AnimatedTextKit( - animatedTexts: [ - ScaleAnimatedText( - rides['promo_code'], - textStyle: - AppStyle.title.copyWith( - fontSize: - 32, // Increased font size for emphasis - color: CupertinoColors - .activeBlue, - fontWeight: FontWeight.bold, - ), + return Padding( + padding: const EdgeInsets.all(12.0), + child: Container( + decoration: BoxDecoration( + color: CupertinoColors.systemGrey6, + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: + CupertinoColors.systemGrey.withOpacity(0.5), + blurRadius: 8, + offset: Offset(0, 4), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + GestureDetector( + onTap: () {}, + child: AnimatedTextKit( + animatedTexts: [ + ScaleAnimatedText( + rides['promo_code'], + textStyle: + AppStyle.title.copyWith( + fontSize: + 32, // Increased font size for emphasis + color: + CupertinoColors.activeBlue, + fontWeight: FontWeight.bold, ), - WavyAnimatedText( - rides['promo_code'], - textStyle: - AppStyle.title.copyWith( - fontSize: - 32, // Increased font size for emphasis - color: CupertinoColors - .activeBlue, - fontWeight: FontWeight.bold, - ), + ), + WavyAnimatedText( + rides['promo_code'], + textStyle: + AppStyle.title.copyWith( + fontSize: + 32, // Increased font size for emphasis + color: + CupertinoColors.activeBlue, + fontWeight: FontWeight.bold, ), - ], - isRepeatingAnimation: true, - ), + ), + ], + isRepeatingAnimation: true, ), - const SizedBox(height: 8), - // Description Text - Text( - rides['description'], - style: AppStyle.title.copyWith( - fontSize: 22, - color: CupertinoColors.systemGrey, - ), - ), - ], - ), - Column( - children: [ - // Only displaying end date - Text( - '${'Valid Until:'.tr} ${rides['validity_end_date']}', - style: AppStyle.subtitle.copyWith( - fontWeight: FontWeight.bold, - fontSize: 20, - color: CupertinoColors.systemGrey, - ), - ), - ], - ), - ], - ), - // const SizedBox(height: 16), - // Copy Promo Text - Center( - child: GestureDetector( - onTap: () { - Clipboard.setData(ClipboardData( - text: rides['promo_code'])); - Get.snackbar( - 'Promo Copied!'.tr, - 'You have copied the promo code.'.tr, - snackPosition: SnackPosition.BOTTOM, - backgroundColor: - CupertinoColors.systemGrey, - colorText: CupertinoColors.white, - ); - }, - child: Text( - 'Copy Code'.tr, - textAlign: TextAlign.center, - style: AppStyle.headTitle2.copyWith( - color: CupertinoColors.systemBlue, - fontWeight: FontWeight.bold, ), + const SizedBox(height: 8), + // Description Text + Text( + rides['description'], + style: AppStyle.title.copyWith( + fontSize: 22, + color: CupertinoColors.systemGrey, + ), + ), + ], + ), + Column( + children: [ + // Only displaying end date + Text( + '${'Valid Until:'.tr} ${rides['validity_end_date']}', + style: AppStyle.subtitle.copyWith( + fontWeight: FontWeight.bold, + fontSize: 20, + color: CupertinoColors.systemGrey, + ), + ), + ], + ), + ], + ), + // const SizedBox(height: 16), + // Copy Promo Text + Center( + child: GestureDetector( + onTap: () { + Clipboard.setData(ClipboardData( + text: rides['promo_code'])); + Get.snackbar( + 'Promo Copied!'.tr, + 'You have copied the promo code.'.tr, + snackPosition: SnackPosition.BOTTOM, + backgroundColor: + CupertinoColors.systemGrey, + colorText: CupertinoColors.white, + ); + }, + child: Text( + 'Copy Code'.tr, + textAlign: TextAlign.center, + style: AppStyle.headTitle2.copyWith( + color: CupertinoColors.systemBlue, + fontWeight: FontWeight.bold, ), ), ), - ], - ), + ), + ], ), ), - ); - } + ), + ); + // } }, ), ) From 8813b4dccda7dbcf7350f82d10c49ead56a531fd Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Tue, 17 Dec 2024 00:41:00 +0300 Subject: [PATCH 16/16] 12/17/1 --- android/app/build.gradle | 98 +---- ios/Runner/Info.plist | 4 +- lib/controller/firebase/firbase_messge.dart | 15 +- .../firebase/local_notification.dart | 89 +++- lib/controller/functions/crud.dart | 2 +- .../home/map_passenger_controller.dart | 399 ++++++++++-------- lib/controller/local/translations.dart | 6 + .../searching_captain_window.dart | 10 +- lib/views/widgets/my_dialog.dart | 2 +- shorebird.yaml | 10 +- 10 files changed, 334 insertions(+), 301 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index de3907d..29f94b8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,91 +1,4 @@ -// -//def localProperties = new Properties() -//def localPropertiesFile = rootProject.file('local.properties') -//if (localPropertiesFile.exists()) { -// localPropertiesFile.withReader('UTF-8') { reader -> -// localProperties.load(reader) -// } -//} -// -//def flutterRoot = localProperties.getProperty('flutter.sdk') -//if (flutterRoot == null) { -// throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -//} -// -//def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -//if (flutterVersionCode == null) { -// flutterVersionCode = '12' -//} -// -//def flutterVersionName = localProperties.getProperty('flutter.versionName') -//if (flutterVersionName == null) { -// flutterVersionName = '1.1.2' -//} -// -//apply plugin: 'com.android.application' -//apply plugin: 'kotlin-android' -//// apply plugin: 'com.google.gms.google-services' -//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" -//def keystoreProperties = new Properties() -//def keystorePropertiesFile = rootProject.file('key.properties') -// -// -//android { -// namespace "com.mobileapp.store.ride" -// compileSdkVersion 34 -// ndkVersion flutter.ndkVersion -// -// compileOptions { -// sourceCompatibility JavaVersion.VERSION_1_8 -// targetCompatibility JavaVersion.VERSION_1_8 -// } -// -// kotlinOptions { -// jvmTarget = '1.8' -// } -// -// sourceSets { -// main.java.srcDirs += 'src/main/kotlin' -// } -// -// defaultConfig { -// // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). -// applicationId "com.mobileapp.store.ride" -// // You can update the following values to match your application needs. -// // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. -// minSdkVersion 23 -// targetSdkVersion 34 -// versionCode 67 -// versionName '1.5.67' -// // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] -// } -// -// signingConfigs { -// release { -// keyAlias keystoreProperties['keyAlias'] -// keyPassword keystoreProperties['keyPassword'] -// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null -// storePassword keystoreProperties['storePassword'] -// } -// } -// buildTypes { -// release { -// signingConfig signingConfigs.release -// } -// } -// -// -//} -// -//flutter { -// source '../..' -//} -// -//dependencies { -// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -// // implementation platform('com.google.firebase:firebase-bom:32.1.1') -// -//} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -124,7 +37,7 @@ if (keystorePropertiesFile.exists()) { android { namespace "com.mobileapp.store.ride" - compileSdk 34 + compileSdk 35 ndkVersion "26.1.10909125" compileOptions { @@ -148,8 +61,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdk = 23 targetSdk = flutter.targetSdkVersion - versionCode = 106 - versionName = '1.6.106' + versionCode = 108 + versionName = '1.6.108' multiDexEnabled =true // manifestPlaceholders can be specified here if needed @@ -167,6 +80,9 @@ android { buildTypes { release { signingConfig signingConfigs.release +// minifyEnabled true +// shrinkResources true +// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 6a85ad6..b405d45 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,11 +41,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 77 + 78 CFBundleSignature ???? CFBundleVersion - 4.3.77 + 4.3.78 NSHumanReadableCopyright FirebaseAppDelegateProxyEnabled diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 334f19c..18d324c 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -139,6 +139,7 @@ class FirebaseMessagesController extends GetxController { Get.find().statusRide == 'Apply'; Get.find().isSearchingWindow == false; Get.find().update(); + Get.find().rideAppliedFromDriver(true); // driverAppliedTripSnakBar(); } else if (message.notification!.title! == 'Promo'.tr) { @@ -236,7 +237,7 @@ class FirebaseMessagesController extends GetxController { title: 'Cancel'.tr, kolor: AppColor.redColor, onPressed: () { - Get.offAll(const MapPagePassenger()); + Get.offAll(() => const MapPagePassenger()); }, ) // Get.find() @@ -256,18 +257,16 @@ class FirebaseMessagesController extends GetxController { box.write(BoxName.passengerWalletTotal, 0); } Get.find().tripFinishedFromDriver(); - - Get.to(() => RateDriverFromPassenger(), arguments: { - 'driverId': driverList[0].toString(), - 'rideId': driverList[1].toString(), - 'price': driverList[3].toString() - }); notificationController.showNotification( 'Don’t forget your personal belongings.'.tr, 'Please make sure you have all your personal belongings and that any remaining fare, if applicable, has been added to your wallet before leaving. Thank you for choosing the Sefer app' .tr, 'ding'); - // } + Get.to(() => RateDriverFromPassenger(), arguments: { + 'driverId': driverList[0].toString(), + 'rideId': driverList[1].toString(), + 'price': driverList[3].toString() + }); } else if (message.notification!.title! == "Finish Monitor".tr) { Get.defaultDialog( titleStyle: AppStyle.title, diff --git a/lib/controller/firebase/local_notification.dart b/lib/controller/firebase/local_notification.dart index 44f7b31..fb2fc26 100644 --- a/lib/controller/firebase/local_notification.dart +++ b/lib/controller/firebase/local_notification.dart @@ -7,6 +7,8 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:timezone/data/latest.dart' as tz; import 'package:timezone/timezone.dart' as tz; +import '../../main.dart'; + class NotificationController extends GetxController { final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); @@ -63,6 +65,55 @@ class NotificationController extends GetxController { // Assume _flutterLocalNotificationsPlugin is initialized somewhere in your code + // void scheduleNotificationsForSevenDays( + // String title, String message, String tone) async { + // final AndroidNotificationDetails android = AndroidNotificationDetails( + // 'high_importance_channel', + // 'High Importance Notifications', + // importance: Importance.max, + // priority: Priority.high, + // sound: RawResourceAndroidNotificationSound(tone), + // ); + + // const DarwinNotificationDetails ios = DarwinNotificationDetails( + // sound: 'default', + // presentAlert: true, + // presentBadge: true, + // presentSound: true, + // ); + + // final NotificationDetails details = + // NotificationDetails(android: android, iOS: ios); + + // // Check for the exact alarm permission on Android 12 and above + // if (Platform.isAndroid) { + // if (await Permission.scheduleExactAlarm.isDenied) { + // if (await Permission.scheduleExactAlarm.request().isGranted) { + // print('SCHEDULE_EXACT_ALARM permission granted'); + // } else { + // print('SCHEDULE_EXACT_ALARM permission denied'); + // return; + // } + // } + // } + + // // Schedule notifications for the next 7 days + // for (int day = 0; day < 7; day++) { + // // Schedule for 8:00 AM + // await _scheduleNotificationForTime( + // day, 8, 0, title, message, details, day * 1000 + 1); + + // // Schedule for 3:00 PM + // await _scheduleNotificationForTime( + // day, 15, 0, title, message, details, day * 1000 + 2); // Unique ID + + // // Schedule for 8:00 PM + // await _scheduleNotificationForTime( + // day, 20, 0, title, message, details, day * 1000 + 3); // Unique ID + // } + + // print('Notifications scheduled successfully for the next 7 days'); + // } void scheduleNotificationsForSevenDays( String title, String message, String tone) async { final AndroidNotificationDetails android = AndroidNotificationDetails( @@ -97,17 +148,37 @@ class NotificationController extends GetxController { // Schedule notifications for the next 7 days for (int day = 0; day < 7; day++) { - // Schedule for 8:00 AM - await _scheduleNotificationForTime( - day, 8, 0, title, message, details, day * 1000 + 1); + // List of notification times + final notificationTimes = [ + {'hour': 8, 'minute': 0, 'id': day * 1000 + 1}, // 8:00 AM + {'hour': 15, 'minute': 0, 'id': day * 1000 + 2}, // 3:00 PM + {'hour': 20, 'minute': 0, 'id': day * 1000 + 3}, // 8:00 PM + ]; - // Schedule for 3:00 PM - await _scheduleNotificationForTime( - day, 15, 0, title, message, details, day * 1000 + 2); // Unique ID + for (var time in notificationTimes) { + final notificationId = time['id'] as int; - // Schedule for 8:00 PM - await _scheduleNotificationForTime( - day, 20, 0, title, message, details, day * 1000 + 3); // Unique ID + // Check if this notification ID is already stored + bool isScheduled = box.read('notification_$notificationId') ?? false; + + if (!isScheduled) { + // Schedule the notification if not already scheduled + await _scheduleNotificationForTime( + day, + time['hour'] as int, + time['minute'] as int, + title, + message, + details, + notificationId, + ); + + // Mark this notification ID as scheduled in GetStorage + box.write('notification_$notificationId', true); + } else { + print('Notification with ID $notificationId is already scheduled.'); + } + } } print('Notifications scheduled successfully for the next 7 days'); diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 91f3047..c309e9e 100644 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -33,7 +33,7 @@ class CRUD { Log.print('response.request: ${response.request}'); Log.print('payload: ${payload}'); - Log.print('response.reasonPhrase: ${response.reasonPhrase}'); + // Log.print('response.reasonPhrase: ${response.reasonPhrase}'); Log.print('response.body: ${response.body}'); // print(payload); diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 3f825d3..bf3e671 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -407,7 +407,7 @@ class MapPassengerController extends GetxController { box.read(BoxName.carType), 4000); // confirmRideForAllDriverAvailable(); - icreaseForSameRideAndDelay(); + increaseForSameRideAndDelay(); } } } @@ -932,13 +932,14 @@ class MapPassengerController extends GetxController { } } - void tripFinishedFromDriver() async { + void tripFinishedFromDriver() { isRideFinished = true; rideTimerBegin = false; statusRideVip = 'Finished'; box.write(BoxName.arrivalTime, ''); remainingTimeTimerRideBegin = 0; box.write(BoxName.passengerWalletTotal, '0'); + update(); if (box.read(BoxName.parentTripSelected) == true) { FirebaseMessagesController().sendNotificationToPassengerToken( "Finish Monitor".tr, @@ -950,7 +951,6 @@ class MapPassengerController extends GetxController { box.write(BoxName.parentTripSelected, false); box.remove(BoxName.tokenParent); } - update(); } // bool isBeginRideFromDriver = false; @@ -998,6 +998,8 @@ class MapPassengerController extends GetxController { try { var res = await CRUD().get( link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId}); + print(res); + print('1002'); if (res != 'failure') { var decode = jsonDecode(res); _beginRideStreamController @@ -1067,6 +1069,8 @@ class MapPassengerController extends GetxController { var res = await CRUD().get( link: AppLink.getRideStatusFromStartApp, payload: {'passenger_id': box.read(BoxName.passengerID)}); + print(res); + print('1070'); if (res == 'failure') { print( "No rides found for the given passenger ID within the last hour."); @@ -1330,7 +1334,7 @@ class MapPassengerController extends GetxController { Set notifiedDrivers = {}; - addRideToNotificationDriverString() async { + addRideToNotificationDriverAvailable() async { await CRUD().post(link: AppLink.addWaitingRide, payload: { 'id': rideId.toString(), 'start_location': @@ -1343,11 +1347,12 @@ class MapPassengerController extends GetxController { 'passenger_id': box.read(BoxName.passengerID).toString(), 'status': 'waiting', 'carType': box.read(BoxName.carType), - 'passengerRate': passengerRate, - 'price_for_passenger': totalME.toString(), - 'distance': distance.toString(), - 'duration': duration ?? '10', + 'passengerRate': passengerRate.toStringAsFixed(2), + 'price_for_passenger': totalME.toStringAsFixed(2), + 'distance': distance.toStringAsFixed(1), + 'duration': duration.toStringAsFixed(1), }); + if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD().post( link: '${AppLink.endPoint}/notificationCaptain/addWaitingRide.php', @@ -1363,10 +1368,10 @@ class MapPassengerController extends GetxController { 'passenger_id': box.read(BoxName.passengerID).toString(), 'status': 'waiting', 'carType': box.read(BoxName.carType), - 'passengerRate': passengerRate, - 'price_for_passenger': totalME.toString(), - 'distance': distance.toString(), - 'duration': duration ?? '10', + 'passengerRate': passengerRate.toStringAsFixed(2), + 'price_for_passenger': totalME.toStringAsFixed(2), + 'distance': distance.toStringAsFixed(1), + 'duration': duration.toStringAsFixed(0), }); } } @@ -1382,7 +1387,7 @@ class MapPassengerController extends GetxController { // if (dataCarsLocationByPassenger != 'failure' && // dataCarsLocationByPassenger != null && // dataCarsLocationByPassenger.containsKey('data') && - // dataCarsLocationByPassenger['data'] != null) { + // dataCarsLocationByPassenger['message'] != null) { // driversFound = true; // break; // Exit loop if drivers are found // } @@ -1445,7 +1450,7 @@ class MapPassengerController extends GetxController { // "endtime": durationToAdd.toString(), // "price": totalPassenger.toStringAsFixed(2), // "passenger_id": box.read(BoxName.passengerID).toString(), - // "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] // .toString(), // "status": "waiting", // 'carType': box.read(BoxName.carType), @@ -1477,8 +1482,8 @@ class MapPassengerController extends GetxController { // box.read(BoxName.carType), 3000); // if (dataCarsLocationByPassenger != null && // dataCarsLocationByPassenger.containsKey('data') && - // dataCarsLocationByPassenger['data'] != null) { - // for (var driverData in dataCarsLocationByPassenger['data']) { + // dataCarsLocationByPassenger['message'] != null) { + // for (var driverData in dataCarsLocationByPassenger['message']) { // String driverId = driverData['driver_id'].toString(); // if (!notifiedDrivers.contains(driverId)) { // notifiedDrivers.add(driverId); @@ -1549,7 +1554,7 @@ class MapPassengerController extends GetxController { // "endtime": durationToAdd.toString(), // "price": totalPassenger.toStringAsFixed(2), // "passenger_id": box.read(BoxName.passengerID).toString(), - // "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + // "driver_id": dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] // .toString(), // "status": "waiting", // 'carType': box.read(BoxName.carType), @@ -1563,116 +1568,117 @@ class MapPassengerController extends GetxController { // update(); // } - icreaseForSameRideAndDelay() async { - bool driversFound = false; - for (int attempt = 0; attempt < 8; attempt++) { - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 4500); + increaseForSameRideAndDelay() async { + reSearchAfterCanceledFromDriver(); + // bool driversFound = false; + // for (int attempt = 0; attempt < 8; attempt++) { + // await getCarsLocationByPassengerAndReloadMarker( + // box.read(BoxName.carType), 4500); - // Check if dataCarsLocationByPassenger is valid and contains drivers - if (dataCarsLocationByPassenger != 'failure' && - dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null) { - driversFound = true; - break; // Exit loop if drivers are found - } + // // Check if dataCarsLocationByPassenger is valid and contains drivers + // if (dataCarsLocationByPassenger != 'failure' && + // dataCarsLocationByPassenger != null && + // dataCarsLocationByPassenger.containsKey('message') && + // dataCarsLocationByPassenger['message'] != null) { + // driversFound = true; + // break; // Exit loop if drivers are found + // } - // Wait 2 seconds before next attempt - await Future.delayed(const Duration(seconds: 2)); - } + // // Wait 2 seconds before next attempt + // await Future.delayed(const Duration(seconds: 2)); + // } - // If no drivers were found after 4 attempts, show a dialog - if (!driversFound) { - Get.dialog( - BackdropFilter( - filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), - child: CupertinoAlertDialog( - title: Text( - "No Car or Driver Found in your area.".tr, - style: AppStyle.title.copyWith( - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - content: Text( - "No Car or Driver Found in your area.".tr, - style: AppStyle.title.copyWith(fontSize: 16), - ), - actions: [ - CupertinoDialogAction( - onPressed: () { - Get.back(); - Get.offAll(() => const MapPagePassenger()); - }, - child: Text('OK'.tr, - style: const TextStyle(color: AppColor.greenColor)), - ), - ], - ), - ), - barrierDismissible: false, - ); + // // If no drivers were found after 4 attempts, show a dialog + // if (!driversFound) { + // Get.dialog( + // BackdropFilter( + // filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), + // child: CupertinoAlertDialog( + // title: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith( + // fontSize: 20, + // fontWeight: FontWeight.bold, + // ), + // ), + // content: Text( + // "No Car or Driver Found in your area.".tr, + // style: AppStyle.title.copyWith(fontSize: 16), + // ), + // actions: [ + // CupertinoDialogAction( + // onPressed: () { + // Get.back(); + // Get.offAll(() => const MapPagePassenger()); + // }, + // child: Text('OK'.tr, + // style: const TextStyle(color: AppColor.greenColor)), + // ), + // ], + // ), + // ), + // barrierDismissible: false, + // ); - return; - } - PaymentController paymentController = Get.find(); - rideConfirm = true; - shouldFetch = true; - isBottomSheetShown = false; - timeToPassengerFromDriverAfterApplied = 60; - // confirmRideForAllDriverAvailable(); - for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { - List body = [ - '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', - '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', - totalPassenger.toStringAsFixed(2), - totalDriver.toStringAsFixed(2), - durationToRide.toString(), - distance.toStringAsFixed(2), - dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), - box.read(BoxName.passengerID).toString(), - box.read(BoxName.name).toString(), - box.read(BoxName.tokenFCM).toString(), - box.read(BoxName.phone).toString(), - durationByPassenger.toString(), - distanceByPassenger.toString(), - paymentController.isWalletChecked.toString(), - dataCarsLocationByPassenger['data'][i]['token'].toString(), - durationToPassenger.toString(), - rideId.toString(), - rideTimerBegin.toString(), - dataCarsLocationByPassenger['data'][i]['driver_id'].toString(), - durationToRide.toString(), - Get.find().wayPoints.length > 1 - ? 'haveSteps' - : 'startEnd', - placesCoordinate[0], - placesCoordinate[1], - placesCoordinate[2], - placesCoordinate[3], - placesCoordinate[4], - costForDriver.toStringAsFixed(2), - double.parse(box.read(BoxName.passengerWalletTotal)) < 0 - ? double.parse(box.read(BoxName.passengerWalletTotal)) - .toStringAsFixed(2) - : '0', - box.read(BoxName.email).toString(), - data[0]['start_address'], - data[0]['end_address'], - box.read(BoxName.carType), - kazan.toStringAsFixed(0), - passengerRate.toStringAsFixed(2), - ]; - // Log.print('body: ${body}'); + // return; + // } + // PaymentController paymentController = Get.find(); + // rideConfirm = true; + // shouldFetch = true; + // isBottomSheetShown = false; + // timeToPassengerFromDriverAfterApplied = 60; + // // confirmRideForAllDriverAvailable(); + // for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { + // List body = [ + // '${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}', + // '${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}', + // totalPassenger.toStringAsFixed(2), + // totalDriver.toStringAsFixed(2), + // durationToRide.toString(), + // distance.toStringAsFixed(2), + // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), + // box.read(BoxName.passengerID).toString(), + // box.read(BoxName.name).toString(), + // box.read(BoxName.tokenFCM).toString(), + // box.read(BoxName.phone).toString(), + // durationByPassenger.toString(), + // distanceByPassenger.toString(), + // paymentController.isWalletChecked.toString(), + // dataCarsLocationByPassenger['message'][i]['token'].toString(), + // durationToPassenger.toString(), + // rideId.toString(), + // rideTimerBegin.toString(), + // dataCarsLocationByPassenger['message'][i]['driver_id'].toString(), + // durationToRide.toString(), + // Get.find().wayPoints.length > 1 + // ? 'haveSteps' + // : 'startEnd', + // placesCoordinate[0], + // placesCoordinate[1], + // placesCoordinate[2], + // placesCoordinate[3], + // placesCoordinate[4], + // costForDriver.toStringAsFixed(2), + // double.parse(box.read(BoxName.passengerWalletTotal)) < 0 + // ? double.parse(box.read(BoxName.passengerWalletTotal)) + // .toStringAsFixed(2) + // : '0', + // box.read(BoxName.email).toString(), + // data[0]['start_address'], + // data[0]['end_address'], + // box.read(BoxName.carType), + // kazan.toStringAsFixed(0), + // passengerRate.toStringAsFixed(2), + // ]; + // // Log.print('body: ${body}'); - FirebaseMessagesController().sendNotificationToDriverMAP( - 'OrderSpeed', - rideId.toString(), - dataCarsLocationByPassenger['data'][i]['token'].toString(), - body, - 'order.wav'); - } + // FirebaseMessagesController().sendNotificationToDriverMAP( + // 'OrderSpeed', + // rideId.toString(), + // dataCarsLocationByPassenger['message'][i]['token'].toString(), + // body, + // 'order.wav'); + // } } int tick = 0; // Move tick outside the function to maintain its state @@ -1760,6 +1766,7 @@ class MapPassengerController extends GetxController { update(); } + String driversStatusForSearchWindow = ''; Future confirmRideForAllDriverAvailable() async { bool driversFound = false; const maxAttempts = 8; @@ -1770,7 +1777,7 @@ class MapPassengerController extends GetxController { await getCarsLocationByPassengerAndReloadMarker( box.read(BoxName.carType), reloadDuration); // await getNearestDriverByPassengerLocation(); - + driversStatusForSearchWindow = 'We are search for nearst driver'.tr; if (isDriversDataValid()) { driversFound = true; break; @@ -1783,9 +1790,16 @@ class MapPassengerController extends GetxController { showNoDriversDialog(); return; } - + driversStatusForSearchWindow = 'Your order is being prepared'.tr; + Log.print('driversStatusForSearchWindow: ${driversStatusForSearchWindow}'); + update(); await postRideDetailsToServer(); + driversStatusForSearchWindow = 'Your order sent to drivers'.tr; await notifyAvailableDrivers(); + + driversStatusForSearchWindow = 'The drivers are reviewing your request'.tr; + Log.print('driversStatusForSearchWindow: ${driversStatusForSearchWindow}'); + update(); delayAndFetchRideStatusForAllDriverAvailable(rideId); update(); } @@ -1823,8 +1837,8 @@ class MapPassengerController extends GetxController { bool isDriversDataValid() { return dataCarsLocationByPassenger != 'failure' && dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null; + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null; } void showNoDriversDialog() { @@ -1889,7 +1903,8 @@ class MapPassengerController extends GetxController { "endtime": durationToAdd.toString(), "price": totalPassenger.toStringAsFixed(2), "passenger_id": box.read(BoxName.passengerID).toString(), - "driver_id": dataCarsLocationByPassenger['data'][carsOrder]['driver_id'] + "driver_id": dataCarsLocationByPassenger['message'][carsOrder] + ['driver_id'] .toString(), "status": "waiting", 'carType': box.read(BoxName.carType), @@ -1911,9 +1926,9 @@ class MapPassengerController extends GetxController { box.read(BoxName.carType), 3000); if (dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger.containsKey('data') && - dataCarsLocationByPassenger['data'] != null) { - for (var driverData in dataCarsLocationByPassenger['data']) { + dataCarsLocationByPassenger.containsKey('message') && + dataCarsLocationByPassenger['message'] != null) { + for (var driverData in dataCarsLocationByPassenger['message']) { String driverId = driverData['driver_id'].toString(); if (!notifiedDrivers.contains(driverId)) { notifiedDrivers.add(driverId); @@ -1926,14 +1941,18 @@ class MapPassengerController extends GetxController { driverLng, ); - double distanceToDriverInKm = distanceToDriverInMeters / 1000; + double distanceToDriverInKm = distanceToDriverInMeters * + 1.25 / //to approximate to stright distance + 1000; double durationToDriverInHours = distanceToDriverInKm / 25; // 25 km/h as default speed double durationToDriverInSeconds = durationToDriverInHours * 3600; durationToPassenger = durationToDriverInSeconds.toInt(); - distanceByPassenger = distanceToDriverInMeters.toStringAsFixed(0); + distanceByPassenger = + (distanceToDriverInMeters * 1.25).toStringAsFixed(0); + Future.delayed(const Duration(microseconds: 10)); final body = constructNotificationBody(driverData); - Log.print('body:ww ${body}'); + // Log.print('body:ww ${body}'); FirebaseMessagesController().sendNotificationToDriverMAP( 'OrderSpeed', rideId, @@ -1961,8 +1980,8 @@ class MapPassengerController extends GetxController { box.read(BoxName.name).toString(), box.read(BoxName.tokenFCM).toString(), box.read(BoxName.phone).toString(), - durationToPassenger.toString(), - distanceByPassenger.toString(), + durationToPassenger.toStringAsFixed(0) ?? '120', + distanceByPassenger.toString() ?? '2000', paymentController.isWalletChecked.toString(), driverData['token'].toString(), durationToPassenger.toString(), @@ -1996,12 +2015,13 @@ class MapPassengerController extends GetxController { StreamController.broadcast(); Stream get rideStatusStream => _rideStatusStreamController.stream; - void delayAndFetchRideStatusForAllDriverAvailable(String rideId) { + Future delayAndFetchRideStatusForAllDriverAvailable( + String rideId) async { const int maxAttempts = 15; int attemptCounter = 0; bool isApplied = false; tick = 0; - + await addRideToNotificationDriverAvailable(); Timer.periodic(const Duration(seconds: 1), (timer) async { if (attemptCounter >= maxAttempts || isApplied) { timer.cancel(); @@ -2014,8 +2034,10 @@ class MapPassengerController extends GetxController { try { var res = await getRideStatus(rideId); + Log.print('res:2022 ${res}'); String rideStatusDelayed = res.toString(); - addRideToNotificationDriverString(); + Log.print('rideStatusDelayed: ${rideStatusDelayed}'); + _rideStatusStreamController .add(rideStatusDelayed); // Emit the ride status // addRideToNotificationDriverString(); @@ -2025,41 +2047,23 @@ class MapPassengerController extends GetxController { "Order Cancelled".tr, "you canceled order".tr, 'ding'); _rideStatusStreamController .close(); // Close stream after cancellation + // + // } else if (rideStatusDelayed == 'Apply' || rideStatusDelayed == 'Applied') { - await getUpdatedRideForDriverApply(rideId); - NotificationController().showNotification( - 'Order Accepted'.tr, - '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', - 'ding'); - if (box.read(BoxName.carType) == 'Speed' || - box.read(BoxName.carType) == 'Awfar Car') { - NotificationController().showNotification( - 'The captain is responsible for the route.'.tr, - 'This price is fixed even if the route changes for the driver.' - .tr, - 'ding'); - } else if (box.read(BoxName.carType) == 'Comfort' || - box.read(BoxName.carType) == 'Lady') { - NotificationController().showNotification('Attention'.tr, - 'The price may increase if the route changes.'.tr, 'ding'); - } - isApplied = true; - statusRide = 'Apply'; - rideConfirm = false; - isSearchingWindow = false; - - startTimer(); - update(); - startTimerFromDriverToPassengerAfterApplied(); - + rideAppliedFromDriver(isApplied); timer.cancel(); - _rideStatusStreamController.close(); // Close stream after applying - } else if (attemptCounter >= maxAttempts && + // Close stream after applying + } else if (attemptCounter >= maxAttempts || rideStatusDelayed != 'Cancel') { - timer.cancel(); + timer.cancel(); //todo // addRideToNotificationDriverString(); // Show dialog to increase fee... + MyDialog().getDialog( + 'Are you want to wait drivers to accept your order'.tr, '', () { + Get.back(); + addRideToNotificationDriverAvailable(); + }); update(); _rideStatusStreamController .close(); // Close stream after max attempts @@ -2070,6 +2074,36 @@ class MapPassengerController extends GetxController { }); } + rideAppliedFromDriver(bool isApplied) async { + await getUpdatedRideForDriverApply(rideId); + NotificationController().showNotification( + 'Order Accepted'.tr, + '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', + 'ding'); + if (box.read(BoxName.carType) == 'Speed' || + box.read(BoxName.carType) == 'Awfar Car') { + NotificationController().showNotification( + 'The captain is responsible for the route.'.tr, + 'This price is fixed even if the route changes for the driver.'.tr, + 'ding'); + } else if (box.read(BoxName.carType) == 'Comfort' || + box.read(BoxName.carType) == 'Lady') { + NotificationController().showNotification('Attention'.tr, + 'The price may increase if the route changes.'.tr, 'ding'); + } + isApplied = true; + statusRide = 'Apply'; + rideConfirm = false; + isSearchingWindow = false; + update(); + startTimer(); +// todo stop this because this method in startTimer() + // startTimerFromDriverToPassengerAfterApplied(); + + // timer.cancel(); + _rideStatusStreamController.close(); + } + // Listening to the Stream void listenToRideStatusStream() { rideStatusStream.listen((rideStatus) { @@ -2084,15 +2118,12 @@ class MapPassengerController extends GetxController { } reSearchAfterCanceledFromDriver() async { - await getCarsLocationByPassengerAndReloadMarker( - box.read(BoxName.carType), 3000); - - updateConfirmRideForAllDriverAvailable(); shouldFetch = true; // Stop further fetches statusRide = 'wait'; rideConfirm = true; isSearchingWindow = true; update(); + updateConfirmRideForAllDriverAvailable(); } void start15SecondTimer(String rideId) { @@ -2131,7 +2162,8 @@ class MapPassengerController extends GetxController { final response = await CRUD().get( link: "${AppLink.endPoint}/ride/rides/getRideStatus.php", payload: {'id': rideId}); - + print(response); + print('2140'); return jsonDecode(response)['data']; } @@ -2492,11 +2524,12 @@ class MapPassengerController extends GetxController { } else { noCarString = false; dataCarsLocationByPassenger = jsonDecode(res); - Log.print('dataCarsLocationByPassenger: ${dataCarsLocationByPassenger}'); + Log.print( + 'dataCarsLocationByPassenger:getCarsLocationByPassengerAndReloadMarker ${dataCarsLocationByPassenger}'); // Check if 'message' is present and not null - if (dataCarsLocationByPassenger['data'] != null && - dataCarsLocationByPassenger['data'].isNotEmpty) { + if (dataCarsLocationByPassenger != null && + dataCarsLocationByPassenger.isNotEmpty) { // Check if carsOrder is within bounds // if (carsOrder < dataCarsLocationByPassenger['message'].length) { // driverId = dataCarsLocationByPassenger['message'][carsOrder] @@ -2508,7 +2541,7 @@ class MapPassengerController extends GetxController { // ['token'] // .toString(); // } else { - // print('carsOrder is out of bounds for message array'); + print('carsOrder is in of bounds for message array'); // return false; // } } else { @@ -2519,8 +2552,8 @@ class MapPassengerController extends GetxController { carsLocationByPassenger.clear(); // Clear existing markers - for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { - var json = dataCarsLocationByPassenger['data'][i]; + for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) { + var json = dataCarsLocationByPassenger['message'][i]; _updateOrCreateMarker( MarkerId(json['latitude']).toString(), LatLng( @@ -3778,13 +3811,15 @@ class MapPassengerController extends GetxController { if (!rideConfirm) { if (dataCarsLocationByPassenger != 'failure' && dataCarsLocationByPassenger != null && - dataCarsLocationByPassenger['data'] != null && - dataCarsLocationByPassenger['data'].length > 0) { + dataCarsLocationByPassenger['message'] != null && + dataCarsLocationByPassenger['message'].length > 0) { double nearestDistance = double.infinity; // Initialize nearest distance CarLocation? nearestCar; - for (var i = 0; i < dataCarsLocationByPassenger['data'].length; i++) { - var carLocation = dataCarsLocationByPassenger['data'][i]; + for (var i = 0; + i < dataCarsLocationByPassenger['message'].length; + i++) { + var carLocation = dataCarsLocationByPassenger['message'][i]; Log.print('carLocation: $carLocation'); try { diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 6bfd249..c0d2313 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -617,6 +617,9 @@ iOS [https://getapp.cc/app/6458734951] "Tip is ": " مَبْلَغ الأُكْرَامِيَّة هُوَ", "Are you sure to delete this location?": "هل أنت متأكد من حذف هذا الموقع؟", + 'Are you want to wait drivers to accept your order': + 'هل تريد الانتظار حتى يقبل السائقون طلبك؟', + "deleted": "تم الحذف", 'Trip is begin': "الرحلة قد بدأت", 'This price is fixed even if the route changes for the driver.': @@ -625,6 +628,9 @@ iOS [https://getapp.cc/app/6458734951] "احتمالية زيادة السعر عند تغيير المسار", "The captain is responsible for the route.": "الكابتن مسؤول عن المسار", + 'Your order is being prepared': "جاري تجهيز الطلب", + 'The drivers are reviewing your request': 'يدرس السائقين طلبك', + 'Your order sent to drivers': 'تم إرسال طلبك إلى السائقين', "يمكنك الاتصال أو تسجيل صوت لهذه الرحلة": "You can call or record audio of this trip", diff --git a/lib/views/home/map_widget.dart/searching_captain_window.dart b/lib/views/home/map_widget.dart/searching_captain_window.dart index 5dc5d64..d98c834 100644 --- a/lib/views/home/map_widget.dart/searching_captain_window.dart +++ b/lib/views/home/map_widget.dart/searching_captain_window.dart @@ -137,11 +137,13 @@ class SearchingCaptainWindow extends StatelessWidget { right: 0, child: Container( decoration: AppStyle.boxDecoration1, - height: Get.height * .2, + height: Get.height * .25, child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, // Use Stack for overlapping widgets children: [ // Text elements + SizedBox( width: Get.width * .7, child: const LinearProgressIndicator( @@ -151,9 +153,13 @@ class SearchingCaptainWindow extends StatelessWidget { ), ), Text( - "We are searching for the nearest driver to you".tr, + mapPassengerController.driversStatusForSearchWindow, style: AppStyle.title, ), + // Text( + // "We are searching for the nearest driver to you".tr, + // style: AppStyle.title, + // ), Text( 'please wait till driver accept your order'.tr, style: AppStyle.title, diff --git a/lib/views/widgets/my_dialog.dart b/lib/views/widgets/my_dialog.dart index 335d8e4..add3cc1 100644 --- a/lib/views/widgets/my_dialog.dart +++ b/lib/views/widgets/my_dialog.dart @@ -81,7 +81,7 @@ class MyDialogContent extends GetxController { onPressed: () async { await textToSpeechController.speakText(title); }, - child: const Icon(CupertinoIcons.headphones, + child: const Icon(CupertinoIcons.speaker_2, color: AppColor.primaryColor), ), content! diff --git a/shorebird.yaml b/shorebird.yaml index aaa3af7..10c3a35 100644 --- a/shorebird.yaml +++ b/shorebird.yaml @@ -1,11 +1,11 @@ # This file is used to configure the Shorebird updater used by your app. # Learn more at https://docs.shorebird.dev -# This file should be checked into version control. +# This file does not contain any sensitive information and should be checked into version control. -# This is the unique identifier assigned to your app. -# Your app_id is not a secret and is just used to identify your app -# when requesting patches from Shorebird's servers. -app_id: 8a571d7f-dfbf-4a65-be62-17eed08cbd5c +# Your app_id is the unique identifier assigned to your app. +# It is used to identify your app when requesting patches from Shorebird's servers. +# It is not a secret and can be shared publicly. +app_id: 496cb3ac-c25c-455d-9d2e-5ebbea13ab03 # auto_update controls if Shorebird should automatically update in the background on launch. # If auto_update: false, you will need to use package:shorebird_code_push to trigger updates.

    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

W=ls5L_FFw`dr9=RC5uz}Q3jFTSAO#M- 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 ACmHAT))>5sf^b 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