From 6c87f7291d07ebe4fb99b4ddf84a4c08509c63d6 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 1 Sep 2025 18:29:05 +0300 Subject: [PATCH] 25-9-1-1 --- android/app/build.gradle | 4 +- .../main/res/xml/network_security_config.xml | 15 +- assets/images/bus.png | Bin 0 -> 205557 bytes assets/images/electric.png | Bin 0 -> 187931 bytes ios/Runner.xcodeproj/project.pbxproj | 8 + ios/Runner/Info.plist | 4 +- lib/constant/box_name.dart | 2 + lib/constant/info.dart | 4881 +---------------- lib/controller/auth/certificate.dart | 40 + lib/controller/auth/otp_controller.dart | 2 +- lib/controller/firebase/firbase_messge.dart | 2 +- lib/controller/home/device_tier.dart | 86 + .../home/map_passenger_controller.dart | 1433 +++-- .../home/profile/invit_controller.dart | 362 +- lib/controller/local/translations.dart | 1437 ++--- lib/views/auth/login_page.dart | 10 +- lib/views/auth/otp_page.dart | 6 + lib/views/home/HomePage/about_page.dart | 6 +- lib/views/home/HomePage/share_app_page.dart | 3 +- lib/views/home/HomePage/trip_record_page.dart | 437 +- lib/views/home/map_page_passenger.dart | 2 +- .../car_details_widget_to_go.dart | 19 +- .../cash_confirm_bottom_page.dart | 4 +- .../google_map_passenger_widget.dart | 425 +- .../map_widget.dart/left_main_menu_icons.dart | 9 - .../home/map_widget.dart/map_menu_widget.dart | 217 +- .../map_widget.dart/ride_begin_passenger.dart | 13 +- .../home/my_wallet/passenger_wallet.dart | 8 +- .../home/profile/passenger_profile_page.dart | 738 ++- lib/views/home/setting_page.dart | 273 +- lib/views/lang/languages.dart | 2 +- pubspec.lock | 2 +- pubspec.yaml | 1 + 33 files changed, 3118 insertions(+), 7333 deletions(-) create mode 100644 assets/images/bus.png create mode 100644 assets/images/electric.png create mode 100644 lib/controller/auth/certificate.dart create mode 100644 lib/controller/home/device_tier.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 76907e3..519e006 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -47,8 +47,8 @@ android { // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = 29 targetSdk = 36 - versionCode = 7 - versionName = '1.0.7' + versionCode = 11 + versionName = '1.0.11' multiDexEnabled = true ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml index 490be17..629161f 100644 --- a/android/app/src/main/res/xml/network_security_config.xml +++ b/android/app/src/main/res/xml/network_security_config.xml @@ -1,26 +1,27 @@ - - - + intaleq.xyz - - + + + pXmP2hTQLxDEvlTVmP5N7xpiA32sycBsxB6hBFT2uL4= + + C5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHESsl= + - + \ No newline at end of file diff --git a/assets/images/bus.png b/assets/images/bus.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e3958f10c159195bbb0ab59c3888923d9ed3d8 GIT binary patch literal 205557 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

7c*0gk$TE8$fsqVE`cBdqm!9s`3T4q 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

SPs=m<_BxCBA{3d6 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� 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 T#tt0?J=?6z>=0$AJ?{M<4)&Fo literal 0 HcmV?d00001 diff --git a/assets/images/electric.png b/assets/images/electric.png new file mode 100644 index 0000000000000000000000000000000000000000..b2889b849a3944a16b83dc9cee1ba27124d2861d GIT binary patch literal 187931 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 z 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 976b1f9..e0e8b89 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -322,10 +322,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; @@ -339,10 +343,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 1fc46d4..e346993 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 5 + 6 CFBundleSignature ???? CFBundleURLTypes @@ -35,7 +35,7 @@ CFBundleVersion - 1.0.5 + 1.0.6 FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index ef7ce6b..8435425 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -8,6 +8,8 @@ class BoxName { static const String serverChosen = "serverChosen"; static const String gender = "gender"; static const String jwt = "jwt"; + static const String lowEndMode = "lowEndMode"; + static const String appVersionChecked = "appVersionChecked"; static const String lastName = "lastName"; static const String fingerPrint = "fingerPrint"; static const String payMobApikey = "payMobApikey"; diff --git a/lib/constant/info.dart b/lib/constant/info.dart index fda5cb0..63f35f1 100644 --- a/lib/constant/info.dart +++ b/lib/constant/info.dart @@ -4,184 +4,39 @@ class AppInformation { static const String phoneNumber = '962798583052'; static const String linkedInProfile = 'https://www.linkedin.com/in/hamza-ayed/'; - static const String website = 'https://tripz-egypt.com'; - static const String email = 'hamzaayed@tripz-egypt.com'; + static const String website = 'https://intaleqapp.com'; + static const String email = 'hamzaayed@intaleqapp.com'; static const String addd = 'BlBlNl'; - static const String privacyPolicyArabic = ''' - - - - - إنطلق - سياسة الخصوصية والشروط والأحكام - - - -

سياسة الخصوصية والشروط والأحكام لتطبيق إنطلق

- -
-

آخر تحديث: 19-07-2025

-

باستخدامك لتطبيق إنطلق ("التطبيق")، فإنك توافق على هذه الشروط والأحكام وسياسة الخصوصية.

-
- -

1. شروط الاستخدام

-

عند تحميل أو تصفح أو استخدام تطبيق إنطلق ("التطبيق")، فإنك توافق على الالتزام بهذه الشروط والأحكام. يحق لإنطلق تعديل هذه الشروط في أي وقت. إذا لم توافق على أي جزء من هذه الشروط، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يعني موافقتك على الشروط وأي تعديلات لاحقة.

- -

2. التعريفات

-
    -
  • "إنطلق" أو "التطبيق": يشير إلى تطبيق الهاتف الذكي الذي يسهل خدمات النقل بين الركاب ("المستخدمين") والسائقين ("مقدمو الخدمة").
  • -
  • "مقدمو الخدمة" (السائقون): الأفراد أو الكيانات المسجلة لتقديم خدمات النقل عبر إنطلق.
  • -
  • "المستخدمون" (الركاب): الأفراد الذين يحجزون الرحلات عبر التطبيق.
  • -
  • "الخدمات": جميع خدمات النقل المقدمة من قبل مقدمي الخدمة عبر التطبيق.
  • -
- -

3. عن إنطلق

-

إنطلق هو منصة حجز رحلات تربط بين الركاب والسائقين. يعمل التطبيق كوسيط ولا يوظف السائقين مباشرة. يمكن للمستخدمين:

-
    -
  • طلب رحلات من السائقين المتاحين.
  • -
  • تتبع الرحلات في الوقت الفعلي.
  • -
  • الدفع بشكل آمن عبر التطبيق.
  • -
-

يدفع مقدمو الخدمة رسوم عمولة عن كل رحلة مكتملة، كما تحددها إنطلق.

- -

4. الاستخدام العام للتطبيق والخدمات

-

4.1 نطاق الاستخدام

-
    -
  • يخصص التطبيق للاستخدام الشخصي غير التجاري فقط.
  • -
  • يُحظر الاستخدام التجاري (مثل خدمات التاكسي غير المسجلة).
  • -
- -

4.2 متطلبات الجهاز والإنترنت

-
    -
  • يجب توفر اتصال إنترنت مستقر.
  • -
  • يُتحمل المستخدم مسؤولية أي رسوم بيانات تنتج عن الاستخدام.
  • -
- -

5. التزامات المستخدمين

-

5.1 معلومات دقيقة

-
    -
  • يجب على المستخدمين تقديم معلومات صحيحة وكاملة وحديثة أثناء التسجيل.
  • -
  • سيؤدي استخدام حسابات مزيفة أو أنشطة احتيالية إلى تعليق الحساب.
  • -
- -

5.2 السلوكيات المحظورة

-

يمنع على المستخدمين:

-
    -
  • استخدام التطبيق في أنشطة غير قانونية (مثل نقل بضائع غير مشروعة).
  • -
  • مضايقة السائقين أو الركاب الآخرين.
  • -
  • التدخين أو استهلاك الكحول داخل المركبات.
  • -
  • مخالفة إجراءات السلامة الخاصة بكوفيد-19 (مثل رفض ارتداء الكمامة إذا لزم الأمر).
  • -
- -

6. إخلاء المسؤولية

-
    -
  • يقدم التطبيق والخدمات "كما هي" دون أي ضمانات.
  • -
  • لا تتحمل إنطلق المسؤولية عن: -
      -
    • التأخيرات أو الحوادث أو انحرافات المسار.
    • -
    • أي أضرار (مباشرة أو غير مباشرة) ناتجة عن استخدام التطبيق.
    • -
    • النزاعات بين الركاب والسائقين.
    • -
    -
  • -
- -

7. سياسة الخصوصية

-

7.1 جمع البيانات واستخدامها

-

نجمع البيانات الشخصية (الاسم، الهاتف، الموقع، معلومات الدفع) فقط لأغراض:

-
    -
  • تسهيل الرحلات.
  • -
  • تحسين الخدمات.
  • -
  • الامتثال القانوني.
  • -
- -

7.2 حماية البيانات

-
    -
  • يتم تأمين بيانات المستخدمين باستخدام التشفير وضوابط الوصول.
  • -
  • لا نبيع البيانات الشخصية لأطراف ثالثة.
  • -
- -

7.3 حذف الحساب والبيانات

-

لحذف حسابك أو بياناتك، راسلنا على: support@intaleqapp.com.

-
    -
  • يتم الرد على الطلبات خلال 30 يومًا.
  • -
- -

8. سياسات الرحلات

-

8.1 سياسة منع التدخين

-
    -
  • يُحظر التدخين (بما في ذلك السجائر الإلكترونية) في جميع المركبات.
  • -
- -

8.2 إجراءات السلامة لكوفيد-19

-
    -
  • يجب على السائقين/الركاب اتباع الإرشادات الصحية المحلية (مثل ارتداء الكمامات إذا لزم الأمر).
  • -
- -
-

اتصل بنا: لأي استفسارات حول هذه الشروط، يرجى التواصل عبر support@intaleqapp.com.

-
- -'''; - static const String privacyPolicyEnglish = ''' + static const String privacyPolicy = ''' - Intaleq - Privacy Policy & Terms and Conditions + Intaleq - Privacy Policy & Terms of Use -

Intaleq Privacy Policy & Terms and Conditions

+

Privacy Policy & Terms of Use

-

Last Updated: [Insert Date]

-

By using the Intaleq ride-hailing application ("the App"), you agree to these Terms and Conditions and our Privacy Policy.

+

Effective Date: August 9, 2025

+

Last Updated: August 9, 2025

-

1. Terms of Use

-

By downloading, browsing, or using the Intaleq mobile application ("the App"), you agree to comply with these Terms and Conditions. Intaleq reserves the right to modify these terms at any time. If you do not agree with any part of these terms, you must immediately stop using the App. Continued use constitutes acceptance of the terms and any future amendments.

+

1. Introduction and Acceptance

+

By downloading, registering, or using the Intaleq application ("App"), you agree to be bound by this Privacy Policy and our Terms of Use. If you do not agree, you must stop using the App immediately. Your continued use constitutes acceptance of these terms and any future updates.

2. Definitions

    -
  • "Intaleq" or "the App": Refers to the smartphone application that facilitates ride-hailing services between passengers ("Users") and drivers ("Service Providers").
  • -
  • "Service Providers" (Drivers): Individuals or entities registered to provide transportation services through Intaleq.
  • -
  • "Users" (Passengers): Individuals who book rides through the App.
  • -
  • "Services": All transportation services provided by Service Providers via the App.
  • +
  • "Intaleq", "we", "us": Refers to the Intaleq for Ride Hailing company, Damascus – Syria (Owner & operator), which provides the technology platform.
  • +
  • "Driver": An independent service provider who uses the App to offer transportation services.
  • +
  • "Passenger", "you": An individual who uses the App to request transportation services.
  • +
  • "Services": The connection between Passengers and Drivers facilitated by our App.
-

3. About Intaleq

-

Intaleq is a ride-hailing platform that connects passengers with drivers. The App acts as an intermediary and does not employ drivers directly. Users can:

+

3. Privacy Policy

+ +

3.1 Information We Collect

+

We collect information necessary to provide and improve our Services.

+ +

A. Information You Provide:

    -
  • Request rides from available drivers.
  • -
  • Track rides in real-time.
  • -
  • Pay securely through the App.
  • +
  • For Drivers: To ensure safety and compliance, we collect identity information, including your full name, phone number, personal photo, and official documents (e.g., driver's license, vehicle registration).
  • +
  • For Passengers: We only require a phone number for registration and communication. We are not authorized to request or view official identity documents for passengers.
-

Service Providers pay a commission fee per completed ride, as determined by Intaleq.

-

4. General App Usage & Services

-

4.1 Scope of Use

+

B. Information Collected Automatically:

    -
  • The App is for personal, non-commercial use only.
  • -
  • Commercial use (e.g., unregistered taxi services) is prohibited.
  • +
  • Location Data: We collect precise location data when the App is in use to facilitate ride matching, navigation, and for safety purposes.
  • +
  • Device Data: We collect information about your device, such as model, operating system, and unique identifiers, to ensure App functionality and for security verification.
  • +
  • Usage Data: We log how you interact with our App, including trip history and features used, to improve our services.
-

4.2 Device & Network Requirements

+

3.2 Payment Information

+

We do not collect, process, or store any sensitive payment information like credit/debit card numbers. We facilitate payments by connecting you to licensed, local third-party providers:

    -
  • A stable internet connection is required.
  • -
  • Users are responsible for any mobile data charges incurred.
  • +
  • Mobile Carrier Billing: Payments via MTN and Syriatel are processed directly by them based on your registered phone number. A one-time password (OTP) sent by the carrier is required to confirm the transaction.
  • +
  • Bank Card Payments: We connect you with the Syrian company "eCash" to process card payments. They handle the transaction, and your bank will send an OTP to your phone to authorize it.
- -

5. User Obligations

-

5.1 Accurate Information

+ +

3.3 How We Use Your Information

    -
  • Users must provide true, complete, and up-to-date information during registration.
  • -
  • Fake accounts or fraudulent activity will result in account suspension.
  • +
  • To operate and maintain the Services (e.g., connect Drivers and Passengers).
  • +
  • To verify Driver identity and eligibility.
  • +
  • To improve App security and prevent fraud.
  • +
  • To provide customer support.
  • +
  • To comply with legal obligations.
-

5.2 Prohibited Conduct

-

Users must not:

+

3.4 Data Sharing

+

We do not sell your personal data. We only share it in the following limited circumstances:

    -
  • Use the App for illegal activities (e.g., transporting illegal goods).
  • -
  • Harass drivers or other passengers.
  • -
  • Smoke, vape, or consume alcohol inside vehicles.
  • -
  • Violate COVID-19 safety policies (e.g., refusing to wear a mask if required).
  • +
  • Between Passenger and Driver: To facilitate a ride, we share necessary information like name, photo, and real-time location.
  • +
  • With Service Providers: For services like payment processing and mapping. These providers are contractually obligated to protect your data.
  • +
  • For Legal Reasons: If required by law or a valid legal order.
-

6. Liability Disclaimer

+

3.5 Policy for Minors

+

Our services are intended for individuals over the age of 18. + For Drivers: We strictly verify the identity and age of all drivers to ensure no minors are operating on our platform. + For Passengers: While we do not verify passenger identity, the service is not directed at children under 18. If a parent or guardian becomes aware that their child has provided us with information without their consent, they should contact us immediately.

+ +

4. User Obligations & Conduct

    -
  • The App and services are provided "as is" without warranties.
  • -
  • Intaleq is not liable for: -
      -
    • Delays, accidents, or route deviations.
    • -
    • Damages (direct or indirect) from App usage.
    • -
    • Disputes between passengers and drivers.
    • -
    -
  • +
  • You must provide accurate and current information during registration.
  • +
  • You are responsible for maintaining the security of your account.
  • +
  • You agree not to use the App for any illegal activities, to harass others, or to cause damage to a Driver's vehicle.
-

7. Privacy Policy

-

7.1 Data Collection & Use

-

We collect personal data (name, phone, location, payment info) only for:

-
    -
  • Facilitating rides.
  • -
  • Improving services.
  • -
  • Legal compliance.
  • -
+

5. Disclaimer of Liability

+

The App is provided "as is". Intaleq is an intermediary platform and is not liable for the actions of Drivers or Passengers, accidents, delays, or any disputes between users. Our liability is limited to the fullest extent permitted by law.

+ +

6. Policy Updates

+

We may update these terms. If we make significant changes, we will notify you within the App. You will be required to review and accept the new terms to continue using the Services, ensuring your consent is active and informed.

-

7.2 Data Protection

-
    -
  • User data is secured with encryption and access controls.
  • -
  • We do not sell personal data to third parties.
  • -
+

7. Account Deletion & Contact

+

You have the right to request the deletion of your account and personal data. To do so, or for any other questions, please contact us. We will respond to deletion requests within 30 days.

+

Email: support@intaleqapp.com

-

7.3 Account & Data Deletion

-

To delete your account or data, email: support@intaleqapp.com.

-
    -
  • Requests are processed within 30 days.
  • -
- -

8. Ride Policies

-

8.1 No-Smoking Policy

-
    -
  • Smoking (including e-cigarettes) is prohibited in all vehicles.
  • -
- -

8.2 COVID-19 Safety

-
    -
  • Drivers/passengers must follow local health guidelines (e.g., masks if required).
  • -
- -
-

Contact Us: For any questions about these Terms, please contact us at support@intaleqapp.com.

-
'''; - static const String privacyPolicy = ''' + static const String privacyPolicyArabic = ''' + + + + + + انطلق - سياسة الخصوصية وشروط الاستخدام + + + +

سياسة الخصوصية وشروط الاستخدام

- - - - - - - - - - - -
-
-
-
-
-
-

Terms and Conditions

-

1 TERMS OF USE

-

By downloading, browsing, accessing or using the Mobile Application; “Intaleq”, Users agree to be bound by these Terms and Conditions of Use. We reserve the right to amend these terms and conditions at any time. If the User disagrees with any of these Terms and Conditions of Use, the User must immediately discontinue their access to the Mobile Application and their use of the services offered on the Mobile Application. Continued use of the Mobile Application will constitute acceptance of these Terms and Conditions of Use, as may be amended from time to time.

-

2.1. DEFINITIONS

-

In these Terms and Conditions of Use, the following capitalized terms shall have the following meanings, except where the context otherwise requires:

-

“Mobile Application” or “Intaleq” refers to the smartphone software through which the company mediates services between Users and Service Providers.

-

"Account" means an account created by a User or a Service Provider on the Mobile Application as part of Registration.

-

“Service Providers” refers to the individuals or companies registered within the Company to provide products or services approved and mediated by the Company/Mobile Application and that are requested/purchased by “Users”. “Service Provider” means any one of them.

-

"Users" means users of the Mobile Application, including you and "User" means any one of them. “Users” also includes Service Providers using the Mobile Application version dedicated to the use of Service Providers.

-

"Privacy Policy" means the privacy policy set out in Clause 14 of these Terms and Conditions of Use.

-

"Redeem" means to redeem a company’s products or services on these Terms and Conditions of Use and

-

"Redemption" means the act of redeeming such products or services.

-

"Register" means to create an Account on the Mobile Application and "Registration" means the act of creating such an Account.

-

"Services" means all the services provided by Service Providers via the Mobile Application and mediated by the Company to Users, and "Service" means any one of them.

-

2.2. WHAT IS THE MOBILE APPLICATION, “Intaleq”?

-

The “Intaleq” Mobile Application consists in a specialize service with the purpose to schedule/match the Service Provider with the User, however without creating any employee relationship with the Service Provider, meaning that the Mobile Application should be considered only as a service mediator with the purpose of scheduling/matching between Users and Service Providers for the latter to fulfill the service requested by Users. Through the system, the Company allows, totally free of charge, the Users to sign up and request the desired available services from Service Providers in a more efficient way than the conventional existing methods. The Service Providers, by their means, can register on the Mobile Application dedicated for Service Providers through the methods indicated by the Company, pending an evaluation from the Company and the necessary documentation when signing up in accordance with guidelines set by the Transportation General Authority (TGA) to provide services through the Mobile Application. The Service Provider will pay a profit margin fee determined by the Company -in knowledge of the Service Provider- per completed service. Users can pay their ride fare using Apple Pay as an additional payment method in Saudi Arabia on iPhones

-

-

3. GENERAL ISSUES ABOUT THE MOBILE APPLICATION AND THE SERVICES

-

3.1 Applicability of terms and conditions: The use of any Services and/or the Mobile Application and the making of any Redemptions are subject to these Terms and Conditions of Use.

-

3.2 Location: The Mobile Application, the Services and any Redemptions are intended solely for use by Users who access the Mobile Application where it operates and provides its services regionally. We make no representation that the Services (or any goods or services) are available or otherwise suitable for use outside of the regions indicated by the Company. Notwithstanding the above, if the User accesses the Mobile Application, use the Services or make any Redemptions from locations outside the regions indicated by the Service Provider, the User does so on their own initiative and are responsible for the consequences and for compliance with all applicable laws.

-

3.3 Scope: The Mobile Application, the Services and any Redemptions are for Users’ non-commercial, personal use only and must not be used for business purposes unless an official written permission is granted by the Company.

-

3.4 Prevention on use: We reserve the right to prevent the User using the Mobile Application and the Service (or any part of them) and to prevent the User from making any Redemptions.

-

3.5 Equipment and Networks: The provision of the Services and the Mobile Application does not include the provision of a mobile telephone or handheld device or other necessary equipment to access the Mobile Application or the Services or make any Redemptions. To use the Mobile Application or Services or to make Redemptions, the User will require Internet connectivity and appropriate telecommunication links. The User acknowledges that the terms of agreement with their respective mobile network provider will continue to apply when using the Mobile Application. As a result, the User may be charged by the Mobile Provider for access to network connection services for the duration of the connection while accessing the Mobile Application or any such third party charges as may arise. The User accepts responsibility for any such charges that arise.

-

3.6 Permission to use Mobile Application: If the User is not the bill payer for the mobile telephone or handheld device being used to access the Mobile Application, the User will be assumed to have received permission from the bill payer for using the Mobile Application.

-

3.7 License to Use Material: By submitting any text or images (including photographs) via the Application, the User represents that they are the owner of the Material, or have proper authorization from the owner of the Material to use, reproduce and distribute it. The User hereby grants us a worldwide, royalty-free, non-exclusive license to use the Material to promote any products or services.

-

4. REDEMPTIONS

-

4.1 Need for registration: a) Users must Register to make a Redemption from the Mobile Application. b) The Service Provider agrees that by registering they will be scrutinized to be accepted by the Company who may refuse or cancel the Service Provider account at any time, whether by complaints or by internal policy.

-

4.2 Application of these Terms and Conditions of Use: By making any Redemption, the User acknowledges that the Redemption is subject to these Terms and Conditions of Use.

-

4.3 Redemption: Any attempted Redemption not consistent with these Terms and Conditions of Use may be disallowed or rendered void at our or the relevant Service Provider’s discretion.

-

4.4 Responsibility for Redemptions of perishable products of services: Each Service Provider shall be responsible to ensure that any of its products or services for Redemption that are perishable has not expired.

-

4.5 Restrictions: (a) Reproduction, sale, resale or trading of any products or services or Redeemed products is prohibited. (b) If any product or service is Redeemed for less than its face value, there is no entitlement to a credit, cash or Sample equal to the difference between the face value and the amount Redeemed. (c) Redemption of products or services is subject to availability of the relevant Service Providers’ stocks.

-

4.6 Company Not Liable: For the avoidance of doubt, the Company shall not be liable for any losses or damages suffered by Users resulting from a failure by the relevant Service Provider to fulfil any Redemptions in accordance with Clause 4.4 or for a failure by us to deliver any products or services to Users due to the unavailability of such products or services pursuant to Clause 4.5(c). Users accept that the Mobile Application acts solely as a scheduling/matching service between its Users and Service Providers, and that it is not responsible for any issues that arise, including but not limited to accidents, delays, car discomfort, and unavailability of products or services.

-

4.7 Lost/stolen services: Neither we nor any Service Provider shall be responsible for lost or stolen Samples or products that have been Redeemed.

-

-

5. LOCATION ALERTS AND NOTIFICATIONS

-

5.1 The USer agrees to receive pre-programmed notifications (“Location Alerts”) on the Mobile Application from Service Providers if the User has turned on locational services on their mobile telephone or other handheld devices (as the case may be).

-

-

6. USERS’ OBLIGATIONS

-

6.1 Service Provider terms: Users agree to (and shall) abide by the terms and conditions of the relevant Service Provider for which their Redemption relates to, as may be amended from time to time.

-

6.2 Accurate information: The User warrants that all information provided on Registration and contained as part of their Account is true, complete and accurate and that the User will promptly inform us of any changes to such information by updating the information in their Account.

-

6.3 Content on the Mobile Application and Service: It is the User’s responsibility to ensure that any products, services or information available through the Mobile Application or the Services meet their specific requirements before making any Redemption.

-

6.4 Prohibitions in relation to usage of Services or Mobile Application: Without limitation, the User undertakes not to use or permit anyone else to use the Services or Mobile Application:-

-

6.4.1 to send or receive any material which is not civil or tasteful

-

6.4.2 to send or receive any material which is threatening, grossly offensive, of an indecent, obscene or menacing character, blasphemous or defamatory of any person, in contempt of court or in breach of confidence, copyright, rights of personality, publicity or privacy or any other third party rights;

-

6.4.3 to send or receive any material for which the User has not obtained all necessary licenses and/or approvals (from us or third parties); or which constitutes or encourages conduct that would be considered a criminal offence, give rise to civil liability, or otherwise be contrary to the law of or infringe the rights of any third party in any country in the world;

-

6.4.4 to send or receive any material which is technically harmful (including computer viruses, logic bombs, Trojan horses, worms, harmful components, corrupted data or other malicious software or harmful data);

-

6.4.5 to cause annoyance, inconvenience or needless anxiety;

-

6.4.6 to intercept or attempt to intercept any communications transmitted by way of a telecommunications system;

-

6.4.7 for a purpose other than which we have designed them or intended them to be used;

-

6.4.8 for any fraudulent purpose;

-

6.4.9 other than in conformance with accepted Internet practices and practices of any connected networks;

-

6.4.10 in any way which is calculated to incite hatred against any ethnic, religious or any other minority or is otherwise calculated to adversely affect any individual, group or entity; or

-

6.4.11 in such a way as to, or commit any act that would or does, impose an unreasonable or disproportionately large load on our infrastructure.

-

6.5 Prohibitions in relation to usage of Services, Mobile Application: Without limitation, the User further undertakes not to or permit anyone else to:-

-

6.5.1 resell any products or services;

-

6.5.2 furnish false data including false names, addresses and contact details and fraudulently use credit/debit card numbers;

-

6.5.3 attempt to circumvent our security or network including to access data not intended for the User, log into a server or account the User is not expressly authorized to access, or probe the security of other networks (such as running a port scan);

-

6.5.4 execute any form of network monitoring which will intercept data not intended for the User;

-

6.5.5 enter into fraudulent interactions or transactions with us or a Service Provider (including interacting or transacting purportedly on behalf of a third party where the User has no authority to bind that third party or the User is pretending to be a third party);

-

6.5.6 extract data from or hack into the Mobile Application;

-

6.5.7 use the Services or Mobile Application in breach of these Terms and Conditions of Use;

-

6.5.8 engage in any unlawful activity in connection with the use of the Mobile Application or the Services; or

-

6.5.9 engage in any conduct which, in our exclusive reasonable opinion, restricts or inhibits any other customer from properly using or enjoying the Mobile Application or Services.

-

-

7. RULES ABOUT USE OF THE SERVICE AND THE MOBILE APPLICATION

-

7.1 We will use reasonable endeavors to correct any errors or omissions as soon as practicable after being notified of them. However, we do not guarantee that the Services or the Mobile Application will be free of faults, and we do not accept liability for any such faults, errors or omissions. In the event of any such error, fault or omission, Users should report it by contacting us at JORDAN: 962798583052 .

-

7.2 We do not warrant that Users’ use of the Services or the Mobile Application will be uninterrupted and we do not warrant that any information (or messages) transmitted via the Services or the Mobile Application will be transmitted accurately, reliably, in a timely manner or at all. Notwithstanding that we will try to allow uninterrupted access to the Services and the Mobile Application, access to the Services and the Mobile Application may be suspended, restricted or terminated at any time.

-

7.3 We do not give any warranty that the Services and the Mobile Application are free from viruses or anything else which may have a harmful effect on any technology.

-

7.4 We reserve the right to change, modify, substitute, suspend or remove without notice any information or Services on the Mobile Application from time to time. Users’ access to the Mobile Application and/or the Services may also be occasionally restricted to allow for repairs, maintenance or the introduction of new facilities or services. We will attempt to restore such access as soon as we reasonably can. For the avoidance of doubt, we reserve the right to withdraw any information or Services from the Mobile Application at any time.

-

7.5 We reserve the right to block access to and/or to edit or remove any material which in our reasonable opinion may give rise to a breach of these Terms and Conditions of Use.

-

7.6 The acceptance and denial of the service request may occur at first by the Service Provider, who can accept or deny the service when receiving a notification for a request. The User may cancel the contract for any reason which may or may not apply cancellation fees for which the conditions and amount is determined and communicated by the Company. Both recognize that “Intaleq” is not liable for any delays, cancellations, failure to cancel the contract and miscommunication between the User and the Service Provider, nor for any delay or failure in the delivery of services from the Service Provider.

-

-

8. SUSPENSION AND TERMINATION

-

8.1 If the User uses (or others, with the User’s permission use) the Mobile Application, any Services in contravention of these Terms and Conditions of Use, we may suspend their use of the Services and/or Mobile Application.

-

8.2 If we suspend the Services or Mobile Application, we may refuse to restore the Services or Mobile Application for the User’s use until we receive an assurance from them, in a form we deem acceptable, that there will be no further breach of the provisions of these Terms and Conditions of Use.

-

8.3 The Company shall fully co-operate with any law enforcement authorities or court order requesting or directing the Company to disclose the identity or locate anyone in breach of these Terms and Conditions of Use.

-

8.4 Without limitation to anything else in this Clause 8, we shall be entitled immediately or at any time (in whole or in part) to: (a) suspend the Services and/or Mobile Application; (b) suspend Users’ use of the Services and/or Mobile Application; and/or (c) suspend the use of the Services and/or Mobile Application for persons we believe to be connected (in whatever manner) to the concerned User, if:

-

8.4.1 the User commits any breach of these Terms and Conditions of Use;

-

8.4.2 we suspect, on reasonable grounds, that the User has, might or will commit a breach of these Terms and Conditions of Use; or

-

8.4.3 we suspect, on reasonable grounds, that the User may have committed or will be committing any fraud against us or any person.

-

8.5 Our rights under this Clause 8 shall not prejudice any other right or remedy we may have in respect of any breach or any rights, obligations or liabilities accrued prior to termination.

-

-

9. DISCLAIMER AND EXCLUSION OF LIABILITY

-

9.1 The Mobile Application, the Services, the information on the Mobile Application and use of all related facilities are provided on an "as is, as available" basis without any warranties whether express or implied.

-

9.2 The credit balance shall remain valid for the specific period. The credit in the wallet will be expired after 6 months of inactivity.

-

9.3 To the fullest extent permitted by applicable law, we disclaim all representations and warranties relating to the Mobile Application and its contents, including in relation to any inaccuracies or omissions in the Mobile Application, warranties of merchantability, quality, fitness for a particular purpose, accuracy, availability, non-infringement or implied warranties from course of dealing or usage of trade.

-

9.4 We do not warrant that the Mobile Application will always be accessible, uninterrupted, timely, secure, error free or free from computer virus or other invasive or damaging code or that the Mobile Application will not be affected by any acts of nature or other force majeure events, including inability to obtain or shortage of necessary materials, equipment facilities, power or telecommunications, lack of telecommunications equipment or facilities and failure of information technology or telecommunications equipment or facilities.

-

9.5 While we may use reasonable efforts to include accurate and up-to-date information on the Mobile Application, we make no warranties or representations as to its accuracy, timeliness or completeness.

-

9.6 We shall not be liable for any acts or omissions of any third parties howsoever caused, and for any direct, indirect, incidental, special, consequential or punitive damages, howsoever caused, resulting from or in connection with the Mobile Application and the services offered in the mobile application, Users’ access to, use of or inability to use the mobile application or the services offered in the mobile application, reliance on or downloading from the mobile application and/or services, or any delays, inaccuracies in the information or in its transmission including but not limited to damages for loss of business or profits, use, data or other intangible, even if we have been advised of the possibility of such damages.

-

9.7 We shall not be liable in contract, tort (including negligence or breach of statutory duty) or otherwise howsoever and whatever the cause thereof, for any indirect, consequential, collateral, special or incidental loss or damage suffered or incurred by the User in connection with the Mobile Application and these Terms and Conditions of Use. For the purposes of these Terms and Conditions of Use, indirect or consequential loss or damage includes, without limitation, loss of revenue, profits, anticipated savings or business, loss of data or goodwill, loss of use or value of any equipment including software, claims of third parties, and all associated and incidental costs and expenses.

-

9.8 The above exclusions and limitations apply only to the extent permitted by law. None of the User’s statutory rights as a consumer that cannot be excluded or limited are affected.

-

9.9 Notwithstanding our efforts to ensure that our system is secure, the User acknowledges that all electronic data transfers are potentially susceptible to interception by others. We cannot, and do not, warrant that data transfers pursuant to the Mobile Application, or electronic mail transmitted to and from us, will not be monitored or read by others.

-

-

10. INDEMNITY

-

The User agrees to indemnify and keep us indemnified against any claim, action, suit or proceeding brought or threatened to be brought against us which is caused by or arising out of (a) the User’s use of the Services, (b) any other party’s use of the Services using the User’s user ID, verification PIN and/or any identifier number allocated by the Company, and/or (c) the User’s breach of any of these Terms and Conditions of Use, and to pay us damages, costs and interest in connection with such claim, action, suit or proceeding.

-

-

11. INTELLECTUAL PROPERTY RIGHTS

-

11.1 All editorial content, information, photographs, illustrations, artwork and other graphic materials, and names, logos and trade marks on the Mobile Application are protected by copyright laws and/or other laws and/or international treaties, and belong to us and/or our suppliers, as the case may be. These works, logos, graphics, sounds or images may not be copied, reproduced, retransmitted, distributed, disseminated, sold, published, broadcasted or circulated whether in whole or in part, unless expressly permitted by us and/or our suppliers, as the case may be.

-

11.2 Nothing contained on the Mobile Application should be construed as granting by implication, estoppel, or otherwise, any license or right to use any trademark displayed on the Mobile Application without our written permission. Misuse of any trademarks or any other content displayed on the Mobile Application is prohibited.

-

11.3 We will not hesitate to take legal action against any unauthorized usage of our trade marks, name or symbols to preserve and protect its rights in the matter. All rights not expressly granted herein are reserved. Other product and company names mentioned herein may also be the trademarks of their respective owners.

-

-

12. AMENDMENTS

-

12.1 We may periodically make changes to the contents of the Mobile Application, including to the descriptions and prices of goods and services advertised, at any time and without notice. We assume no liability or responsibility for any errors or omissions in the content of the Mobile Application.

-

12.2 We reserve the right to amend these Terms and Conditions of Use from time to time without notice. The revised Terms and Conditions of Use will be posted on the Mobile Application and shall take effect from the date of such posting. The User is advised to review these terms and conditions periodically as they are binding upon the User.

-

-

13. APPLICABLE LAW AND JURISDICTION

-

13.1 These Terms and Conditions of Use shall be governed by and construed in accordance with the applicable Federal laws of Kingdom of Saudi Arabia.

-

13.2 The Mobile Application can be accessed from all countries around the world where the local technology permits. As each of these places have differing laws, by accessing the Mobile Application both the User and we agree that the laws of the country where accessed, without regard to the conflicts of laws principles thereof, will apply to all matters relating to the use of the Mobile Application.

-

13.3 the User accepts and agrees that both the User and we shall submit to the exclusive jurisdiction of the courts of the country where accessed in respect of any dispute arising out of and/or in connection with these Terms and Conditions of Use.

-

-

14. PRIVACY POLICY

-

14.1 Access to the Mobile Application and use of the Services offered on the Mobile Application by the Company and/or its group of companies & partners is subject to this Privacy Policy. By accessing the Mobile Application and by continuing to use the Services offered, Users are deemed to have accepted this Privacy Policy, and in particular, they are deemed to have consented to our use and disclosure of their personal information in the manner prescribed in this Privacy Policy and for the purposes set out in Clauses 3.7 and/or 4.1.1 We reserve the right to amend this Privacy Policy from time to time. If the User disagrees with any part of this Privacy Policy, the User must immediately discontinue their access to the Mobile Application and their use of the Services.

-

14.2 As part of the normal operation of our Services, we collect, use and, in some cases, disclose information about the User to third parties. Accordingly, we have developed this Privacy Policy in order for Users to understand how we collect, use, communicate and disclose and make use of their personal information when they use the Services on the Mobile Application:-

-

(a) Before or at the time of collecting personal information, we will identify the purposes for which information is being collected.

-

(b) We will collect and use of personal information solely with the objective of fulfilling those purposes specified by us and for other compatible purposes, unless we obtain the consent of the individual concerned or as required by law.

-

(c) We will only retain personal information as long as necessary for the fulfillment of those purposes.

-

(d) We will collect personal information by lawful and fair means and, where appropriate, with the knowledge or consent of the individual concerned.

-

(e) Personal information should be relevant to the purposes for which it is to be used, and, to the extent necessary for those purposes, should be accurate, complete, and up-to-date.

-

(f) We will protect personal information by reasonable security safeguards against loss or theft, as well as unauthorized access, disclosure, copying, use or modification.

-

(g) The Company further reserves the right to use all legal means possible and to identify the Users, as well as to request, at any time, additional data and documents it considers appropriate in order to verify personal data informed by the user.

-

We are committed to conducting our business in accordance with these principles in order to ensure that the confidentiality of personal information is protected and maintained.

-

14.3 Social logins policy
Our Services offers you the ability to register and login using Facebook. Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile Information may include your name and social token.
We will use the information we receive only to associate your social token with your Intaleq account or for the purposes that are described in this privacy policy.

14.4 Account and data deletion
Based on the applicable laws of your country, you may have the right to request the deletion of your personal data in some circumstances. If you want to delete your account or personal data in the application, please contact us via e-mail: support@mobile-app.store. We will respond to your request within 30 days.

-

15. In-Ride Policy

-

15.1 Smoking Policy:

-

No smoking or other use of tobacco products (including, but not limited to, cigarettes, pipes, cigars, snuff, or chewing tobacco) is permitted during rides. No cigarette butts or other traces of smell, litter, or tobacco use should be present in the vehicle. image

-

15.2 COVID-19 Policy: Face masks must be always worn during rides.

-
-
-
-
-
+
+

تاريخ النفاذ: 9 أغسطس 2025

+

آخر تحديث: 9 أغسطس 2025

+

1. المقدمة والقبول

+

عبر تحميل أو تسجيل أو استخدام تطبيق "انطلق" ("التطبيق")، فإنك توافق على الالتزام بسياسة الخصوصية وشروط الاستخدام هذه. إذا كنت لا توافق، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يُعد قبولاً لهذه الشروط وأي تحديثات مستقبلية لها.

+

2. التعريفات

+
    +
  • "انطلق"، "نحن": تشير إلى شركة انطلق لنقل الركاب، دمشق – سوريا (مالك ومشغل التطبيق)، التي توفر المنصة التقنية.
  • +
  • "السائق": مقدم خدمة مستقل يستخدم التطبيق لتقديم خدمات النقل.
  • +
  • "الراكب"، "أنت": الفرد الذي يستخدم التطبيق لطلب خدمات النقل.
  • +
  • "الخدمات": عملية الربط بين الركاب والسائقين التي يسهلها تطبيقنا.
  • +
+ +

3. سياسة الخصوصية

- - -
-
- - - - -
-

- All rights reserved. Fast Global Technology Holding Limited. © 2022 -

-
-
- -
- - - - -
- - - +

أ. المعلومات التي تقدمها بنفسك:

+
    +
  • بالنسبة للسائقين: لضمان السلامة والامتثال للقوانين، نجمع بيانات الهوية الشخصية، بما في ذلك الاسم الكامل، رقم الهاتف، صورة شخصية، والوثائق الرسمية (مثل رخصة القيادة وتسجيل المركبة).
  • +
  • بالنسبة للركاب: نطلب فقط رقم هاتف للتسجيل والتواصل. نحن غير مخولين بطلب أو الاطلاع على وثائق الهوية الرسمية للركاب.
  • +
+ +

ب. المعلومات التي تُجمع تلقائيًا:

+
    +
  • بيانات الموقع: نجمع بيانات الموقع الجغرافي الدقيقة عند استخدام التطبيق لتسهيل تحديد أماكن الانطلاق والوصول، الملاحة، ولأغراض السلامة.
  • +
  • بيانات الجهاز: نجمع معلومات عن جهازك (طراز، نظام تشغيل، معرفات فريدة) لضمان عمل التطبيق وللتحقق الأمني.
  • +
  • بيانات الاستخدام: نسجل كيفية تفاعلك مع التطبيق، بما في ذلك سجل الرحلات والميزات المستخدمة، بهدف تحسين خدماتنا.
  • +
+ +

3.2 معلومات الدفع

+

نحن لا نجمع أو نعالج أو نخزن أي معلومات دفع حساسة مثل أرقام بطاقات الائتمان/الخصم. نحن نسهل عمليات الدفع عبر ربطك بمزودي خدمات محليين مرخصين:

+
    +
  • الدفع عبر رصيد الهاتف المحمول: تتم معالجة الدفعات عبر شركتي MTN و Syriatel مباشرة من خلالهما بناءً على رقم هاتفك المسجل لديهم. يتطلب تأكيد العملية إدخال رمز تحقق (OTP) يُرسل من قبل شركة الاتصالات.
  • +
  • الدفع عبر البطاقات البنكية: نربطك بشركة "eCash" السورية لمعالجة الدفعات بالبطاقات. هي التي تتولى المعاملة، وسيقوم البنك الذي تتعامل معه بإرسال رمز تحقق (OTP) إلى هاتفك لتفويض العملية.
  • +
- - -
+

6. تحديثات السياسة

+

قد نقوم بتحديث هذه الشروط. في حال إجراء تغييرات جوهرية، سنقوم بإعلامك داخل التطبيق. سيُطلب منك مراجعة الشروط الجديدة وقبولها لمواصلة استخدام الخدمات، لضمان أن موافقتك فعالة ومبنية على معرفة.

+

7. حذف الحساب والتواصل

+

لديك الحق في طلب حذف حسابك وبياناتك الشخصية. للقيام بذلك، أو لأي استفسارات أخرى، يرجى التواصل معنا. سنرد على طلبات الحذف في غضون 30 يومًا.

+

البريد الإلكتروني: support@intaleqapp.com

+ + + '''; } diff --git a/lib/controller/auth/certificate.dart b/lib/controller/auth/certificate.dart new file mode 100644 index 0000000..27ba20a --- /dev/null +++ b/lib/controller/auth/certificate.dart @@ -0,0 +1,40 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; +import 'package:crypto/crypto.dart'; + +Future verifyCertificateManually( + String host, int port, String expectedPin) async { + try { + final socket = await SecureSocket.connect(host, port, + timeout: const Duration(seconds: 5)); + + final certificate = socket.peerCertificate; + if (certificate == null) { + print("❌ لا يوجد شهادة."); + return false; + } + + final der = certificate.der; + final actualPin = base64.encode(sha256.convert(der).bytes); + + print("📛 HOST: $host"); + print("📜 Subject: ${certificate.subject}"); + print("📜 Issuer: ${certificate.issuer}"); + print("📅 Valid From: ${certificate.startValidity}"); + print("📅 Valid To: ${certificate.endValidity}"); + print( + "🔐 Server Pin: $actualPin → ${actualPin == expectedPin ? '✅ MATCH' : '❌ MISMATCH'}"); + + socket.destroy(); + return actualPin == expectedPin; + } catch (e) { + print("❌ خطأ أثناء الاتصال أو الفحص: $e"); + return false; + } +} + +/// تحويل المفتاح العام إلى بصمة SHA-256 +List sha256Convert(Uint8List der) { + return sha256.convert(der).bytes; +} diff --git a/lib/controller/auth/otp_controller.dart b/lib/controller/auth/otp_controller.dart index 518357f..2ad926e 100644 --- a/lib/controller/auth/otp_controller.dart +++ b/lib/controller/auth/otp_controller.dart @@ -25,7 +25,7 @@ class PhoneAuthHelper { link: _sendOtpUrl, payload: {'receiver': phoneNumber}, ); - // Log.print('response: ${response}'); + Log.print('response: ${response}'); if (response != 'failure') { final data = (response); // if (data['status'] == 'success') { diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 0ba0091..69e9615 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -216,7 +216,7 @@ class FirebaseMessagesController extends GetxController { 'Passenger come to you'.tr, 'Hi ,I will go now'.tr, 'ding'); } update(); - } else if (message.notification!.title! == 'Hi ,I Arrive your site') { + } else if (message.notification!.title! == 'Hi ,I Arrive your site'.tr) { if (Platform.isAndroid) { notificationController.showNotification( 'Hi ,I Arrive your site'.tr, ''.tr, 'ding'); diff --git a/lib/controller/home/device_tier.dart b/lib/controller/home/device_tier.dart new file mode 100644 index 0000000..02f5f51 --- /dev/null +++ b/lib/controller/home/device_tier.dart @@ -0,0 +1,86 @@ +import 'dart:io'; +import 'package:device_info_plus/device_info_plus.dart'; + +import '../../main.dart'; + +// مفاتيح التخزين (بسيطة) +const _kDeviceTierKey = 'deviceTier'; // 'low' | 'mid' | 'high' +const _kDeviceTierCheckedAtKey = 'deviceTierTime'; // millisSinceEpoch + +Future detectAndCacheDeviceTier({bool force = false}) async { + // لا تعيد الفحص إذا عملناه خلال آخر 24 ساعة + if (!force) { + final last = box.read(_kDeviceTierCheckedAtKey); + if (last is int) { + final dt = DateTime.fromMillisecondsSinceEpoch(last); + if (DateTime.now().difference(dt) < const Duration(hours: 24)) { + final cached = box.read(_kDeviceTierKey); + if (cached is String && cached.isNotEmpty) + return cached; // low/mid/high + } + } + } + + final info = DeviceInfoPlugin(); + int score = 0; + + if (Platform.isAndroid) { + final a = await info.androidInfo; + final int sdk = a.version.sdkInt ?? 0; + final int cores = Platform.numberOfProcessors; + final int abisCount = a.supportedAbis.length; + final bool isEmu = !(a.isPhysicalDevice ?? true); + + // SDK (أقدم = أضعف) + if (sdk <= 26) + score += 3; // 8.0 وأقدم + else if (sdk <= 29) + score += 2; // 9-10 + else if (sdk <= 30) score += 1; // 11 + + // الأنوية + if (cores <= 4) + score += 3; + else if (cores <= 6) + score += 2; + else if (cores <= 8) score += 1; + + // ABI count (القليل غالباً أضعف) + if (abisCount <= 1) + score += 2; + else if (abisCount == 2) score += 1; + + // محاكي + if (isEmu) score += 2; + } else { + // iOS/منصات أخرى: تقدير سريع بالأنوية فقط + final int cores = Platform.numberOfProcessors; + if (cores <= 4) + score += 3; + else if (cores <= 6) + score += 2; + else if (cores <= 8) score += 1; + } + + // تحويل السكور إلى تصنيف + final String tier = (score >= 6) + ? 'low' + : (score >= 3) + ? 'mid' + : 'high'; + + box.write(_kDeviceTierKey, tier); + box.write(_kDeviceTierCheckedAtKey, DateTime.now().millisecondsSinceEpoch); + return tier; +} + +// للقراءة السريعة وقت ما تحتاج: +String getCachedDeviceTier() { + final t = box.read(_kDeviceTierKey); + if (t is String && t.isNotEmpty) return t; + return 'mid'; +} + +bool isLowEnd() => getCachedDeviceTier() == 'low'; +bool isMidEnd() => getCachedDeviceTier() == 'mid'; +bool isHighEnd() => getCachedDeviceTier() == 'high'; diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index c532eac..533e6db 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -5,6 +5,7 @@ import 'dart:math' show Random, atan2, cos, max, min, pi, pow, sin, sqrt; import 'dart:math' as math; import 'dart:ui'; import 'dart:convert'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:http/http.dart' as http; import 'package:Intaleq/constant/univeries_polygon.dart'; @@ -51,6 +52,7 @@ import '../functions/launch.dart'; import '../functions/package_info.dart'; import '../functions/secure_storage.dart'; import '../payment/payment_controller.dart'; +import 'device_tier.dart'; import 'vip_waitting_page.dart'; class MapPassengerController extends GetxController { @@ -256,6 +258,7 @@ class MapPassengerController extends GetxController { late double totalPassengerBalashDiscount = 0; late double totalPassengerRaihGaiDiscount = 0; late double totalPassengerScooter = 0; + late double totalPassengerVan = 0; late double totalDriver = 0; late double averageDuration = 0; late double costDuration = 0; @@ -2830,6 +2833,23 @@ class MapPassengerController extends GetxController { pow(start.longitude - end.longitude, 2)); } + String formatSyrianPhoneNumber(String phoneNumber) { + // Trim any whitespace from the input. + String trimmedPhone = phoneNumber.trim(); + + // If the number starts with '09', remove the leading '0' and prepend '963'. + if (trimmedPhone.startsWith('09')) { + return '963${trimmedPhone.substring(1)}'; + } + // If the number already starts with '963', return it as is to avoid duplication. + if (trimmedPhone.startsWith('963')) { + return trimmedPhone; + } + // For any other case (e.g., number starts with '9' without a '0'), + // prepend '963' to ensure the correct format. + return '963$trimmedPhone'; + } + Future getTokenForParent() async { if (box.read(BoxName.sosPhonePassenger) == null) { Get.defaultDialog( @@ -2840,7 +2860,7 @@ class MapPassengerController extends GetxController { child: MyTextForm( controller: sosPhonePassengerProfile, label: 'insert sos phone'.tr, - hint: 'insert sos phone'.tr, + hint: 'e.g. 0912345678'.tr, type: TextInputType.phone, ), ), @@ -2849,22 +2869,22 @@ class MapPassengerController extends GetxController { onPressed: () async { if (sosFormKey.currentState!.validate()) { Get.back(); + var numberPhone = + formatSyrianPhoneNumber(sosPhonePassengerProfile.text); await CRUD().post( link: AppLink.updateprofile, payload: { 'id': box.read(BoxName.passengerID), - 'sosPhone': sosPhonePassengerProfile.text, + 'sosPhone': numberPhone, }, ); - box.write( - BoxName.sosPhonePassenger, sosPhonePassengerProfile.text); + box.write(BoxName.sosPhonePassenger, numberPhone); } })); } - + var numberPhone = formatSyrianPhoneNumber(sosPhonePassengerProfile.text); var res = await CRUD().getTokenParent( - link: AppLink.getTokenParent, - payload: {'phone': '+2${box.read(BoxName.sosPhonePassenger)}'}); + link: AppLink.getTokenParent, payload: {'phone': numberPhone}); // Check if `res` is already a map if (res is Map) { @@ -3158,11 +3178,51 @@ class MapPassengerController extends GetxController { mapController?.animateCamera(CameraUpdate.newLatLng(newPosition)); } + // @override + // void onClose() { + // _timer?.cancel(); + // _animationTimers.forEach((_, timer) => timer.cancel()); + // _animationTimers.clear(); + // super.onClose(); + // } @override void onClose() { + print( + "--- MapPassengerController: Closing and cleaning up all resources. ---"); + + // 1. إلغاء المؤقتات الفردية + // Using ?.cancel() is safe even if the timer is null + markerReloadingTimer.cancel(); + markerReloadingTimer1.cancel(); + markerReloadingTimer2.cancel(); + timerToPassengerFromDriverAfterApplied?.cancel(); _timer?.cancel(); - _animationTimers.forEach((_, timer) => timer.cancel()); + + // 2. إلغاء جميع المؤقتات في الخريطة (للتحريكات السلسة) + _animationTimers.forEach((key, timer) { + timer.cancel(); + }); _animationTimers.clear(); + + // 3. إغلاق متحكمات البث (StreamControllers) لمنع تسريب الذاكرة + // Using .close() is the correct way to shut down a stream + if (!_timerStreamController.isClosed) { + _timerStreamController.close(); + } + if (!_beginRideStreamController.isClosed) { + _beginRideStreamController.close(); + } + if (!_rideStatusStreamController.isClosed) { + _rideStatusStreamController.close(); + } + if (!timerController.isClosed) { + timerController.close(); + } + + // 4. التخلص من متحكم الخريطة (ممارسة جيدة) + mapController?.dispose(); + + print("--- Cleanup complete. ---"); super.onClose(); } @@ -3462,55 +3522,85 @@ class MapPassengerController extends GetxController { update(); } + double _haversineKm(double lat1, double lon1, double lat2, double lon2) { + const R = 6371.0; // km + final dLat = (lat2 - lat1) * math.pi / 180.0; + final dLon = (lon2 - lon1) * math.pi / 180.0; + final a = math.sin(dLat / 2) * math.sin(dLat / 2) + + math.cos(lat1 * math.pi / 180.0) * + math.cos(lat2 * math.pi / 180.0) * + math.sin(dLon / 2) * + math.sin(dLon / 2); + final c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)); + return R * c; + } + Future getPlaces() async { - final isTextEmpty = placeDestinationController.text.trim().isEmpty; - if (isTextEmpty) { - placesDestination = []; // لا يوجد نص للبحث + final q = placeDestinationController.text.trim(); + if (q.isEmpty) { + placesDestination = []; update(); return; } - final query = placeDestinationController.text.trim(); final lat = passengerLocation.latitude; final lng = passengerLocation.longitude; - // حدود البحث ±0.2 تقريبًا ~ مسافة 20 كم تقريبًا - final double range = 2.2; - final lat_min = lat - range; - final lat_max = lat + range; - final lng_min = lng - range; - final lng_max = lng + range; + const range = 2.2; + final latMin = lat - range; + final latMax = lat + range; + final lngMin = lng - range; + final lngMax = lng + range; try { final response = await CRUD().post( link: AppLink.getPlacesSyria, payload: { - 'query': query, - 'lat_min': lat_min.toString(), - 'lat_max': lat_max.toString(), - 'lng_min': lng_min.toString(), - 'lng_max': lng_max.toString(), + 'query': q, + 'lat_min': latMin.toString(), + 'lat_max': latMax.toString(), + 'lng_min': lngMin.toString(), + 'lng_max': lngMax.toString(), }, ); - print('response: $response'); - if (response != 'failure') { - final data = (response); - Log.print('data: ${data}'); + final list = (response['message'] as List?) ?? []; - placesDestination = data['message'] ?? []; - Log.print('placesDestination.length: ${placesDestination.length}'); + // احسب المسافة وألصقها بكل عنصر + for (final p in list) { + final plat = double.tryParse(p['latitude']?.toString() ?? '') ?? 0.0; + final plng = double.tryParse(p['longitude']?.toString() ?? '') ?? 0.0; + p['distanceKm'] = _haversineKm(lat, lng, plat, plng); + } + // رتّب حسب الأقرب + list.sort((a, b) { + final da = (a['distanceKm'] ?? 1e9) as double; + final db = (b['distanceKm'] ?? 1e9) as double; + final cmp = da.compareTo(db); + if (cmp != 0) return cmp; + + // تعادل؟ فضّل من يطابق الاسم + final nameA = + (a['name'] ?? a['name_ar'] ?? a['name_en'] ?? '').toString(); + final nameB = + (b['name'] ?? b['name_ar'] ?? b['name_en'] ?? '').toString(); + final qLower = q.toLowerCase(); + final hitA = nameA.toLowerCase().contains(qLower) ? 0 : 1; + final hitB = nameB.toLowerCase().contains(qLower) ? 0 : 1; + return hitA.compareTo(hitB); + }); + + placesDestination = list; update(); } else { - print('Server error: ${response.statusCode}'); + print('Server error'); } } catch (e) { print('Exception: $e'); } - } - // Future getPlaces() async { + } // Future getPlaces() async { // var languageCode; // // تحديد اللغة حسب الإدخال @@ -3713,6 +3803,100 @@ class MapPassengerController extends GetxController { } } +// داخل MapPassengerController + bool lowPerf = false; + Timer? _camThrottle; + DateTime _lastUiUpdate = DateTime.fromMillisecondsSinceEpoch(0); + +// نادِها في onInit مثلاً + Future detectPerfMode() async { + try { + if (GetPlatform.isAndroid) { + final info = await DeviceInfoPlugin().androidInfo; + final sdk = info.version.sdkInt ?? 0; + final ram = info.availableRamSize ?? 0; + lowPerf = (sdk < 28) || (ram > 0 && ram < 3 * 1024 * 1024 * 1024); + } else { + lowPerf = false; + } + } catch (_) { + lowPerf = false; + } + update(); + } + +// تحديث الكاميرا بثروتل + void onCameraMoveThrottled(CameraPosition pos) { + if (_camThrottle?.isActive ?? false) return; + _camThrottle = Timer(const Duration(milliseconds: 160), () { + // ضع فقط المنطق الضروري هنا لتقليل الحمل + int waypointsLength = Get.find().wayPoints.length; + int index = wayPointIndex; + if (waypointsLength > 0) { + placesCoordinate[index] = + '${pos.target.latitude},${pos.target.longitude}'; + } + newMyLocation = pos.target; + }); + } + +// تهيئة polylines خفيفة (استدعها بعد جلب المسار) + Set polyLinesLight = {}; + List simplifyPolyline(List pts, double epsilonMeters) { + if (pts.length <= 2) return pts; + double _perpDist(LatLng p, LatLng a, LatLng b) { + // مسافة عمودية تقريبية بالأمتار + double _toRad(double d) => d * math.pi / 180.0; + // تحويل بسيط للمتر (تقريبي) + final x1 = a.longitude, y1 = a.latitude; + final x2 = b.longitude, y2 = b.latitude; + final x0 = p.longitude, y0 = p.latitude; + final num = ((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1).abs(); + final den = math.sqrt(math.pow(y2 - y1, 2) + math.pow(x2 - x1, 2)); + // تحويل درجات -> أمتار تقريبي (1 درجة ~ 111km) + final degDist = den == 0 ? 0 : num / den; + return degDist * 111000; // متر + } + + List dp(int start, int end) { + double maxDist = 0; + int index = start; + for (int i = start + 1; i < end; i++) { + final d = _perpDist(pts[i], pts[start], pts[end]); + if (d > maxDist) { + maxDist = d; + index = i; + } + } + if (maxDist > epsilonMeters) { + final r1 = dp(start, index); + final r2 = dp(index, end); + return [...r1.sublist(0, r1.length - 1), ...r2]; + } else { + return [pts[start], pts[end]]; + } + } + + return dp(0, pts.length - 1); + } + + void buildLightPolylines(List originalPoints) { + final simplified = simplifyPolyline(originalPoints, lowPerf ? 12 : 3); + polyLinesLight = { + Polyline( + polylineId: const PolylineId('route_light'), + points: simplified, + width: lowPerf ? 4 : 6, + geodesic: true, + color: AppColor.primaryColor, + endCap: Cap.roundCap, + startCap: Cap.roundCap, + jointType: JointType.round, + ), + }; + update(); + } + Future savePlaceToServer( String latitude, String longitude, String name, String rate) async { var data = { @@ -4008,7 +4192,7 @@ class MapPassengerController extends GetxController { await getCarsLocationByPassengerAndReloadMarker( box.read(BoxName.carType), 5000); await getNearestDriverByPassengerLocation(); - Log.print('reloadMarkers: from startMarkerReloading'); + // Log.print('reloadMarkers: from startMarkerReloading'); } else { // runWhenRideIsBegin(); } @@ -4328,7 +4512,7 @@ class MapPassengerController extends GetxController { box.write(BoxName.tripData, response); startNameAddress = shortenAddress(data[0]['start_address']); - print('data[0][start_address]: ${data[0]['start_address']}'); + // print('data[0][start_address]: ${data[0]['start_address']}'); endNameAddress = shortenAddress(data[0]['end_address']); isLoading = false; newStartPointLocation = LatLng( @@ -4387,25 +4571,28 @@ class MapPassengerController extends GetxController { position: LatLng( data[0]["end_location"]['lat'], data[0]["end_location"]['lng']), icon: endIcon, - infoWindow: InfoWindow( - title: endNameAddress, - snippet: - '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '${'Your Ride Duration is '.tr}$hours ${'H and'.tr} $minutes ${'m'.tr}' : '${'Your Ride Duration is '.tr} $minutes ${'m'.tr}'}'), + // infoWindow: InfoWindow( + // title: endNameAddress, + // snippet: + // '$distance ${'KM'.tr} ⌛ ${hours > 0 ? '${'Your Ride Duration is '.tr}$hours ${'H and'.tr} $minutes ${'m'.tr}' : '${'Your Ride Duration is '.tr} $minutes ${'m'.tr}'}'), ), ); // // Show info windows automatically // Future.delayed(const Duration(milliseconds: 500), () { // mapController?.showMarkerInfoWindow(const MarkerId('start')); // }); - Future.delayed(const Duration(milliseconds: 500), () { - mapController?.showMarkerInfoWindow(const MarkerId('end')); - }); - update(); + // Future.delayed(const Duration(milliseconds: 500), () { + // mapController?.showMarkerInfoWindow(const MarkerId('end')); + // }); + // update(); if (polyLines.isNotEmpty) { clearPolyline(); } else { - _animatePolyline(polylineCoordinates); + // الآن بإمكانك قراءة القيمة من الـBox في أي مكان: + bool lowEndMode = box.read(BoxName.lowEndMode) ?? true; + + animatePolylineLayered(polylineCoordinates); rideConfirm = false; isMarkersShown = true; @@ -4413,50 +4600,95 @@ class MapPassengerController extends GetxController { } } - Future _animatePolyline(List coordinates) async { - const int totalAnimations = 7; +// 1) تقليل النقاط إلى حد أقصى 30 نقطة (مع بداية ونهاية محفوظة وتوزيع متساوٍ) + List _downsampleEven(List coords, {int maxPoints = 30}) { + if (coords.isEmpty) return const []; + if (coords.length <= maxPoints) return List.from(coords); - Color getAnimationColor(int cycle) { - switch (cycle) { - case 0: - return AppColor.primaryColor; - case 1: - return AppColor.writeColor; - case 2: - return AppColor.primaryColor; - default: - return AppColor.primaryColor; - } + final int n = coords.length; + final int keep = maxPoints.clamp(2, n); + final List idx = []; + for (int i = 0; i < keep; i++) { + final double pos = i * (n - 1) / (keep - 1); + idx.add(pos.round()); } + final seen = {}; + final List out = []; + for (final i in idx) { + if (seen.add(i)) out.add(coords[i]); + } + if (out.first != coords.first) out.insert(0, coords.first); + if (out.last != coords.last) out.add(coords.last); + while (out.length > maxPoints) { + out.removeAt(out.length ~/ 2); + } + return out; + } - for (int cycle = 0; cycle < totalAnimations; cycle++) { - polyLines.clear(); - List animatedPoints = []; +// 2) رسم متدرّج بطبقات متراكبة (بدون حذف)، برونزي ↔ أخضر، مع zIndex وعرض مختلف + Future animatePolylineLayered(List coordinates, + {int layersCount = 8, int stepDelayMs = 10}) async { + // امسح أي طبقات قديمة فقط الخاصة بالطريق + polyLines.removeWhere((p) => p.polylineId.value.startsWith('route_layer_')); + update(); + + final List coords = _downsampleEven(coordinates, maxPoints: 20); + if (coords.length < 2) return; + + // ألوان مع شفافية خفيفة للتمييز + Color bronze([int alpha = 220]) => const Color(0xFFCD7F32).withAlpha(alpha); + Color green([int alpha = 220]) => Colors.green.withAlpha(alpha); + + Color _layerColor(int layer) => (layer % 2 == 0) ? bronze() : green(); + + // عرض الخط: البرونزي أعرض، الأخضر أنحف + int _layerWidth(int layer) => (layer % 2 == 0) ? 6 : 4; + + // لكل طبقة: أنشئ Polyline بهوية فريدة وزي إندكس أعلى من السابقة + for (int layer = 0; layer < layersCount; layer++) { + final id = PolylineId('route_layer_$layer'); + polyLines.add(Polyline( + polylineId: id, + points: const [], + width: _layerWidth(layer), + color: _layerColor(layer), + zIndex: layer, // مهم لإظهار جميع الطبقات + endCap: Cap.roundCap, + startCap: Cap.roundCap, + geodesic: true, + visible: true, + )); + } + update(); + + // نبني كل طبقة تدريجيًا فوق التي قبلها — بدون مسح الطبقات السابقة + for (int layer = 0; layer < layersCount; layer++) { + final id = PolylineId('route_layer_$layer'); + final List growing = []; + + for (int i = 0; i < coords.length; i++) { + growing.add(coords[i]); + + // حدّث فقط هذه الطبقة + polyLines.removeWhere((p) => p.polylineId == id); + polyLines.add(Polyline( + polylineId: id, + points: List.from(growing), + width: _layerWidth(layer), + color: _layerColor(layer), + zIndex: layer, + endCap: Cap.roundCap, + startCap: Cap.roundCap, + geodesic: true, + visible: true, + )); - for (int i = 0; i < coordinates.length; i++) { - animatedPoints.add(coordinates[i]); - polyLines.clear(); - polyLines.add( - Polyline( - polylineId: const PolylineId('animated_route'), - points: List.from(animatedPoints), - width: 4, - color: getAnimationColor(cycle), - endCap: Cap.roundCap, - startCap: Cap.roundCap, - geodesic: true, - ), - ); update(); - await Future.delayed(const Duration(milliseconds: 10)); + await Future.delayed(Duration(milliseconds: stepDelayMs)); } - if (cycle < totalAnimations - 1) { - await Future.delayed(const Duration(milliseconds: 500)); - polyLines.clear(); - update(); - await Future.delayed(const Duration(milliseconds: 200)); - } + // مهلة خفيفة بين الطبقات عشان يبان التبديل + await Future.delayed(const Duration(milliseconds: 120)); } } @@ -4518,59 +4750,6 @@ class MapPassengerController extends GetxController { double distanceOfDestination = 0; bool haveSteps = false; late LatLng latestPosition; -// getMapPoints(String originSteps, String destinationSteps, int index) async { -// isWayPointStopsSheetUtilGetMap = false; -// haveSteps = true; -// await getCarsLocationByPassenger(); -// // isLoading = true; -// update(); -// String url = '${AppLink.googleMapsLink}directions/json' -// '?origin=${coordinatesWithoutEmpty.first}' -// '&destination=${coordinatesWithoutEmpty.last}'; -// if (coordinatesWithoutEmpty.length > 2) { -// String waypoints = ""; -// for (int i = 1; i < coordinatesWithoutEmpty.length - 1; i++) { -// waypoints += "${coordinatesWithoutEmpty[i]}|"; -// } -// waypoints = waypoints.substring(0, waypoints.length - 1); -// url += "&waypoints=$waypoints"; -// } -// url += '&language=en' -// '&avoid=tolls|ferries' -// '&key=${AK.mapAPIKEY}'; -// var response = await CRUD().getGoogleApi(link: url, payload: {}); -// data = response['routes'][0]['legs']; -// // isLoading = false; -// int durationToRide0 = data[0]['duration']['value']; -// durationToRide = durationToRide + durationToRide0; -// distance = distanceOfDestnation + (data[0]['distance']['value']) / 1000; -// update(); -// final points = -// decodePolyline(response["routes"][0]["overview_polyline"]["points"]); -// for (int i = 0; i < points.length; i++) { -// if (points[i][0].toString() != '') { -// double lat = points[i][0].toDouble(); -// double lng = points[i][1].toDouble(); -// polylineCoordinatesPointsAll[index].add(LatLng(lat, lng)); -// } -// } -// // Define the northeast and southwest coordinates -// update(); -// if (polyLines.isNotEmpty) { -// // clearPolyline(); -// } else { -// var polyline = Polyline( -// polylineId: PolylineId(response["routes"][0]["summary"]), -// points: polylineCoordinatesPointsAll[index], -// width: 10, -// color: Colors.blue, -// ); -// polyLines.add(polyline); -// rideConfirm = false; -// // isMarkersShown = true; -// update(); -// } -// } getMapPoints(String originSteps, String destinationSteps, int index) async { isWayPointStopsSheetUtilGetMap = false; @@ -4670,161 +4849,149 @@ class MapPassengerController extends GetxController { final promo = TextEditingController(); bool promoTaken = false; 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 || - totalPassengerElectric > 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; - totalPassengerElectricDiscount = - totalPassengerElectric * 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( - 'totalPassengerElectricDiscount: $totalPassengerElectricDiscount'); - totalPassengerElectric = - totalPassengerElectric - totalPassengerElectricDiscount; - totalPassengerElectricDiscount = - totalPassengerElectric * discountPercentage / 100; - if (totalPassengerElectricDiscount > 25) { - totalPassengerElectricDiscount = - 25; // Limit the discount to 25 - } - Log.print( - 'totalPassengerElectricDiscount: $totalPassengerElectricDiscount'); - totalPassengerElectric = - totalPassengerElectric - totalPassengerElectricDiscount; - - 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); - } - }); - } - } else { + if (promoTaken == true) { MyDialog().getDialog( - 'Promo Already Used'.tr, 'You have already used this promo code.'.tr, - () { - Get.back(); - }); + 'Promo Already Used'.tr, + 'You have already used this promo code.'.tr, + () => Get.back(), + ); + return; + } + + if (!promoFormKey.currentState!.validate()) return; + + // عتبات تفعيل البرومو بالليرة السورية + const double minPromoLowSYP = 16000; // Speed / Balash + const double minPromoHighSYP = 20000; // Comfort / Electric / Lady + + try { + final value = await CRUD().get( + link: AppLink.getPassengersPromo, + payload: {'promo_code': promo.text}, + ); + + if (value == 'failure') { + MyDialog().getDialog( + 'Promo Ended'.tr, + 'The promotion period has ended.'.tr, + () => Get.back(), + ); + return; + } + + // تحقق أولي: هل عندنا أي فئة حاليًا فوق العتبات لتفعيل البرومو؟ + final bool eligibleNow = (totalPassengerSpeed >= minPromoLowSYP) || + (totalPassengerBalash >= minPromoLowSYP) || + (totalPassengerComfort >= minPromoHighSYP) || + (totalPassengerElectric >= minPromoHighSYP) || + (totalPassengerLady >= minPromoHighSYP); + + if (!eligibleNow) { + Get.snackbar( + 'Lowest Price Achieved'.tr, 'Cannot apply further discounts.'.tr, + backgroundColor: AppColor.yellowColor); + return; + } + + final decode = jsonDecode(value); + if (decode["status"] != "success") { + MyDialog().getDialog( + 'Promo Ended'.tr, + 'The promotion period has ended.'.tr, + () => Get.back(), + ); + return; + } + + Get.snackbar('Promo Code Accepted'.tr, '', + backgroundColor: AppColor.greenColor); + + final firstElement = decode["message"][0]; + final int discountPercentage = + int.tryParse(firstElement['amount'].toString()) ?? 0; + + // قيمة المحفظة (قد تكون سالبة) + final double walletVal = double.tryParse( + box.read(BoxName.passengerWalletTotal)?.toString() ?? '0') ?? + 0.0; + + // دالة مساعدة: تطبق الخصم لكل فئة حسب عتبتها + double _applyDiscountPerTier({ + required double fare, + required double minThreshold, + required bool isWalletNegative, + }) { + if (fare < minThreshold) return fare; // غير مؤهل + + // منطقك السابق: + // - إذا المحفظة سالبة: fare + (-wallet) - (fare * pct) + // - إذا المحفظة ليست سالبة: fare - (fare * pct) + final double discount = fare * (discountPercentage / 100.0); + + if (isWalletNegative) { + final double neg = (-1) * walletVal; // walletVal < 0 + return (fare + neg - discount).clamp(0, double.infinity); + } else { + return (fare - discount).clamp(0, double.infinity); + } + } + + final bool isWalletNegative = walletVal < 0; + + // Comfort + totalPassengerComfort = _applyDiscountPerTier( + fare: totalPassengerComfort, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Electric + totalPassengerElectric = _applyDiscountPerTier( + fare: totalPassengerElectric, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Lady + totalPassengerLady = _applyDiscountPerTier( + fare: totalPassengerLady, + minThreshold: minPromoHighSYP, + isWalletNegative: isWalletNegative, + ); + + // Speed + totalPassengerSpeed = _applyDiscountPerTier( + fare: totalPassengerSpeed, + minThreshold: minPromoLowSYP, + isWalletNegative: isWalletNegative, + ); + + // Balash + totalPassengerBalash = _applyDiscountPerTier( + fare: totalPassengerBalash, + minThreshold: minPromoLowSYP, + isWalletNegative: isWalletNegative, + ); + + // (اختياري) لو عندك فئات أخرى تريد تطبيق البرومو عليها، أضفها بنفس النمط. + + // تعديل دخل السائق حسب نسبة البرومو (كما كان في كودك) + totalDriver = totalDriver - (totalDriver * discountPercentage / 100.0); + + promoTaken = true; + update(); + + // مؤثرات نجاح + Confetti.launch( + context, + options: const ConfettiOptions(particleCount: 100, spread: 70, y: 0.6), + ); + + Get.back(); + await Future.delayed(const Duration(milliseconds: 120)); + } catch (e) { + Get.snackbar('Error'.tr, e.toString(), + backgroundColor: AppColor.redColor); } } @@ -4847,298 +5014,237 @@ class MapPassengerController extends GetxController { double totalPassengerRayehGaiComfort = 0; double totalPassengerRayehGaiBalash = 0; Future bottomSheet() async { - if (data.isNotEmpty) { - durationToAdd = Duration(seconds: durationToRide); - hours = durationToAdd.inHours; - minutes = (durationToAdd.inMinutes % 60).round(); - DateTime currentTime = DateTime.now(); - newTime = currentTime.add(durationToAdd); - averageDuration = (durationToRide / 60) / distance; - // costDuration = (durationToRide / 60) * averageDuration * 0.016; - costDuration = (durationToRide / 60).floorToDouble(); - 'passengerWalletTotal----- ${box.read(BoxName.passengerWalletTotal)}'; - double costComfort, - costSpeed, - costDelivery, - costBalash, - costLady, - costRayehGai, - costRayehGaiBalash, - costRayehGaiComfort = 0; - update(); + if (data.isEmpty) return; - 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; + // === إعدادات عامة === + const double minFareSYP = 16000; // حد أدنى + const double minBillableKm = 0.3; // حد أدنى للمسافة المفوترة + const double ladyFlatAddon = 2000; // إضافة ثابتة لـ Lady + const double airportAddonSYP = 20000; // إضافة المطار - update(); - } else if (currentTime.hour >= 21 && currentTime.hour < 0) { - // costDistance = distance * latePrice; - costComfort = (distance * comfortPrice) + costDuration * latePrice; - costSpeed = (distance * speedPrice) + costDuration * latePrice; - costBalash = (distance * (speedPrice - 1)) + costDuration * latePrice; - costDelivery = (distance * deliveryPrice) + costDuration * latePrice; - costLady = (distance * comfortPrice + 2) + costDuration * latePrice; - 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; + // كهرباء + const double electricPerKmUplift = 400; // زيادة/كم + const double electricFlatAddon = 1000; // زيادة ثابتة - update(); - } 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; + // Long Speed + const double longSpeedThresholdKm = 40.0; + const double longSpeedPerKm = 2600.0; // Speed عند >40كم - 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; + // قواعد الرحلات البعيدة للدقائق (تعمل لكل الأوقات) + const double mediumDistThresholdKm = 25.0; // >25كم + const double longDistThresholdKm = 35.0; // >35كم + const double longTripPerMin = 600.0; + const int minuteCapMedium = 60; // سقف دقائق عند >25كم + const int minuteCapLong = 60; // سقف دقائق عند >35كم + const int freeMinutesLong = 10; // عفو 10 دقائق عند >35كم - update(); - } else if (currentTime.hour >= 14 && currentTime.hour <= 17) { - // if (averageDuration > 2.5) { - // costDistance = distance * heavyPrice; - costComfort = (distance * comfortPrice) + costDuration * heavyPrice; - costSpeed = (distance * speedPrice) + costDuration * heavyPrice; - costBalash = (distance * (speedPrice - 1)) + costDuration * heavyPrice; - costDelivery = (distance * deliveryPrice) + costDuration * heavyPrice; - costLady = (distance * comfortPrice + 2) + costDuration * heavyPrice; - 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; + // تخفيضات المسافات الكبيرة للفئات غير Speed + const double extraReduction100 = 0.07; // +7% فوق تخفيض >40كم للرحلات >100كم + const double maxReductionCap = 0.35; // سقف 35% كحد أقصى - update(); - // } / - } else { - // costDistance = distance * (naturePrice - .1); - costComfort = (distance * comfortPrice) + costDuration; - costSpeed = (distance * speedPrice) + costDuration; - costBalash = (distance * (speedPrice - 1)) + costDuration; - costDelivery = (distance * deliveryPrice) + costDuration; - costLady = (distance * comfortPrice + 2) + costDuration; - 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(); + // ====== زمن الرحلة ====== + durationToAdd = Duration(seconds: durationToRide); + hours = durationToAdd.inHours; + minutes = (durationToAdd.inMinutes % 60).round(); + final DateTime currentTime = DateTime.now(); + newTime = currentTime.add(durationToAdd); + averageDuration = (durationToRide / 60) / distance; + final int totalMinutes = (durationToRide / 60).floor(); + + // ====== أدوات مساعدة ====== + bool _isAirport(String s) { + final t = s.toLowerCase(); + return t.contains('airport') || + s.contains('مطار') || + s.contains('المطار'); + } + + bool _isClub(String s) { + final t = s.toLowerCase(); + return t.contains('club') || + t.contains('nightclub') || + t.contains('night club') || + s.contains('ديسكو') || + s.contains('ملهى ليلي'); + } + + // أسعار الدقيقة من السيرفر + final double naturePerMin = naturePrice; // طبيعي + final double latePerMin = latePrice; // ليل + final double heavyPerMin = heavyPrice; // ذروة + + // سعر الدقيقة حسب الوقت (أساس قبل قواعد المسافة) + double _perMinuteByTime(DateTime now, bool clubCtx) { + final h = now.hour; + if (h >= 21 || h < 1) return latePerMin; // ليل + if (h >= 1 && h < 5) return clubCtx ? (latePerMin * 2) : latePerMin; + if (h >= 14 && h <= 17) return heavyPerMin; // ذروة + return naturePerMin; // طبيعي + } + + // حد أدنى + double _applyMinFare(double fare) => + (fare < minFareSYP) ? minFareSYP : fare; + + // عمولة الراكب (kazan من السيرفر) + double _withCommission(double base) => + (base * (1 + kazan / 100)).ceilToDouble(); + + // ====== سياق ====== + final bool airportCtx = + _isAirport(startNameAddress) || _isAirport(endNameAddress); + final bool clubCtx = _isClub(startNameAddress) || _isClub(endNameAddress); + + // ====== مسافة مفوترة ====== + final double billableDistance = + (distance < minBillableKm) ? minBillableKm : distance; + + // ====== Speed (قصير/طويل) ====== + final bool isLongSpeed = billableDistance > longSpeedThresholdKm; + final double perKmSpeedBaseFromServer = + speedPrice; // مثال: 2900 يأتي من السيرفر + final double perKmSpeed = + isLongSpeed ? longSpeedPerKm : perKmSpeedBaseFromServer; + + // ====== تخفيضات الفئات الأخرى حسب بُعد الرحلة ====== + // نسبة التخفيض عند >40كم محسوبة مقارنة بسعر Speed الأساسي القادم من السيرفر + double reductionPct40 = 0.0; + if (perKmSpeedBaseFromServer > 0) { + reductionPct40 = (1.0 - (longSpeedPerKm / perKmSpeedBaseFromServer)) + .clamp(0.0, maxReductionCap); + } + // نسبة التخفيض عند >100كم + final double reductionPct100 = + (reductionPct40 + extraReduction100).clamp(0.0, maxReductionCap); + + // نحدد أي تخفيض سنستخدمه + double distanceReduction = 0.0; // لا تخفيض افتراضيًا + if (billableDistance > 100.0) { + distanceReduction = reductionPct100; + } else if (billableDistance > 40.0) { + distanceReduction = reductionPct40; + } + + // ====== منطق الدقيقة يعمل لكل الأوقات ويتكيّف مع المسافة ====== + double effectivePerMin = _perMinuteByTime(currentTime, clubCtx); + int billableMinutes = totalMinutes; + + if (billableDistance > longDistThresholdKm) { + // >35كم: 600/د + سقف 60 + عفو 10 + effectivePerMin = longTripPerMin; + final int capped = + (billableMinutes > minuteCapLong) ? minuteCapLong : billableMinutes; + billableMinutes = capped - freeMinutesLong; + if (billableMinutes < 0) billableMinutes = 0; + } else if (billableDistance > mediumDistThresholdKm) { + // >25كم و≤35كم: 600/د + سقف 60 (بدون عفو) + effectivePerMin = longTripPerMin; + billableMinutes = (billableMinutes > minuteCapMedium) + ? minuteCapMedium + : billableMinutes; + } + // ≤25كم: نبقي السعر حسب الوقت بدون سقف/عفو + + // ====== أسعار/كم قبل التخفيض ====== + final double perKmComfortRaw = comfortPrice; + final double perKmDelivery = deliveryPrice; + final double perKmVanRaw = + (familyPrice > 0 ? familyPrice : (speedPrice + 1300)); + // Electric مبني على Comfort + final double perKmElectricRaw = perKmComfortRaw + electricPerKmUplift; + + // ====== تطبيق التخفيضات على الفئات (نفس نسبة Speed للبعيد) ====== + // ملاحظة: Balash يتبع Speed دائمًا (Speed-500) فلا حاجة لتخفيض إضافي له. + double perKmComfort = perKmComfortRaw * (1.0 - distanceReduction); + double perKmElectric = perKmElectricRaw * (1.0 - distanceReduction); + double perKmVan = perKmVanRaw * (1.0 - distanceReduction); + + // نضمن عدم الهبوط تحت الصفر + perKmComfort = perKmComfort.clamp(0, double.infinity); + perKmElectric = perKmElectric.clamp(0, double.infinity); + perKmVan = perKmVan.clamp(0, double.infinity); + + // Awfar/Balash: مرتبط بسرعة Speed بعد التفعيل + final double perKmBalash = (perKmSpeed - 500).clamp(0, double.infinity); + + // ====== دوال الاحتساب ====== + double _oneWayFare({ + required double perKm, + required bool isLady, + double flatAddon = 0, + }) { + double fare = billableDistance * perKm; + fare += + billableMinutes * effectivePerMin; // دقائق بعد السقف/العفو إن وُجد + fare += flatAddon; + if (isLady) fare += ladyFlatAddon; + if (airportCtx) fare += airportAddonSYP; + return _applyMinFare(fare); + } + + double _roundTripFare({required double perKm}) { + // خصم 40% لمسافة إياب واحدة + زمن مضاعف (بنفس قواعد الدقيقة المعدّلة) + double distPart = + (billableDistance * 2 * perKm) - ((billableDistance * perKm) * 0.4); + double timePart = (billableMinutes * 2) * effectivePerMin; + double fare = distPart + timePart; + if (airportCtx) fare += airportAddonSYP; + return _applyMinFare(fare); + } + + // ====== حساب كل الفئات (Base قبل العمولة) ====== + final double costSpeed = _oneWayFare(perKm: perKmSpeed, isLady: false); + final double costBalash = _oneWayFare(perKm: perKmBalash, isLady: false); + final double costComfort = _oneWayFare(perKm: perKmComfort, isLady: false); + final double costElectric = _oneWayFare( + perKm: perKmElectric, isLady: false, flatAddon: electricFlatAddon); + final double costDelivery = + _oneWayFare(perKm: perKmDelivery, isLady: false); + final double costLady = _oneWayFare( + perKm: perKmComfort, + isLady: true); // Lady تعتمد Comfort بعد التخفيض + إضافة ثابتة + final double costVan = _oneWayFare(perKm: perKmVan, isLady: false); + final double costRayehGai = _roundTripFare(perKm: perKmSpeed); + final double costRayehGaiComfort = _roundTripFare(perKm: perKmComfort); + final double costRayehGaiBalash = _roundTripFare(perKm: perKmBalash); + + // ====== أسعار الراكب بعد العمولة (kazan من السيرفر) ====== + totalPassengerSpeed = _withCommission(costSpeed); + totalPassengerBalash = _withCommission(costBalash); + totalPassengerComfort = _withCommission(costComfort); + totalPassengerElectric = _withCommission(costElectric); + totalPassengerLady = _withCommission(costLady); + totalPassengerScooter = _withCommission(costDelivery); + totalPassengerVan = _withCommission(costVan); + totalPassengerRayehGai = _withCommission(costRayehGai); + totalPassengerRayehGaiComfort = _withCommission(costRayehGaiComfort); + totalPassengerRayehGaiBalash = _withCommission(costRayehGaiBalash); + + // افتراضي للعرض + totalPassenger = totalPassengerSpeed; + totalCostPassenger = totalPassenger; + + // ====== دعم رصيد محفظة سلبي ====== + try { + final walletStr = box.read(BoxName.passengerWalletTotal).toString(); + final walletVal = double.tryParse(walletStr) ?? 0.0; + if (walletVal < 0) { + final neg = (-1) * walletVal; + totalPassenger += neg; + totalPassengerComfort += neg; + totalPassengerElectric += neg; + totalPassengerLady += neg; + totalPassengerBalash += neg; + totalPassengerScooter += neg; + totalPassengerRayehGai += neg; + totalPassengerRayehGaiComfort += neg; + totalPassengerRayehGaiBalash += neg; + totalPassengerVan += neg; } + } catch (_) {} - var totalDriver1 = costDistance + costDuration; - totalCostPassenger = totalDriver1 + (totalDriver1 * kazan / 100); - totalPassenger = costSpeed + (costSpeed * kazan / 100); - if (isInUniversity) { - Log.print('isInUniversity: $isInUniversity'); - totalPassengerComfort = - 20 + (costComfort + (costComfort * kazan / 100)).ceilToDouble(); - totalPassengerElectric = - 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; - totalPassengerElectricDiscount = - totalPassengerElectric + totalPassengerElectric * (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); - totalPassengerElectric = totalPassengerElectricDiscount - - (totalPassengerElectricDiscount * 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(); - totalPassengerElectric = - (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; - totalPassengerElectricDiscount = - 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); - totalPassengerElectric = totalPassengerElectricDiscount - - (totalPassengerElectricDiscount * 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; - totalPassengerSpeed = 20; - totalPassengerBalash = 20; - totalPassengerComfort = 30; - totalPassengerElectric = 30; - totalPassengerLady = 30; - totalPassengerScooter = 18; - } else { - totalPassenger = totalCostPassenger; - update(); - } - if (double.parse(box.read(BoxName.passengerWalletTotal)) < 0) { - totalPassenger = totalPassenger + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerComfort = totalPassengerComfort + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerElectric = totalPassengerElectric + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerLady = totalPassengerLady + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerBalash = totalPassengerBalash + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerScooter = totalPassengerScooter + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - totalPassengerRayehGai = totalPassengerScooter + - (-1) * (double.parse(box.read(BoxName.passengerWalletTotal))); - update(); - } - // } - - // buttomSheetMapPage(); - changeBottomSheetShown(); - } else {} + update(); + changeBottomSheetShown(); } addToken() async { @@ -5507,7 +5613,12 @@ class MapPassengerController extends GetxController { double comfortPrice = 8; double speedPrice = 4; double mashwariPrice = 4; + double familyPrice = 4; double deliveryPrice = 1.2; + double minFareSYP = 16000; // حد أدنى للأجرة (سوريا) + double minBillableKm = 1.0; // حد أدنى للمسافة المفوترة + double commissionPct = 15; // عمولة التطبيق % (راكب) + getKazanPercent() async { var res = await CRUD().get( link: AppLink.getKazanPercent, @@ -5523,16 +5634,11 @@ class MapPassengerController extends GetxController { speedPrice = double.parse(json['message'][0]['speedPrice']); deliveryPrice = double.parse(json['message'][0]['deliveryPrice']); mashwariPrice = double.parse(json['message'][0]['freePrice']); + familyPrice = double.parse(json['message'][0]['familyPrice']); fuelPrice = double.parse(json['message'][0]['fuelPrice']); } } - void startFetchingData() { - Timer.periodic(const Duration(milliseconds: 50), (Timer timer) async { - await getKazanPercent(); - }); - } - getPassengerRate() async { var res = await CRUD().get( link: AppLink.getPassengerRate, @@ -5604,44 +5710,157 @@ class MapPassengerController extends GetxController { } } - var k; @override void onInit() async { + super.onInit(); + + // مرحلة 0: الضروري جداً لعرض الخريطة سريعاً mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); - k = await getAIKey('HERE_API'); - getFavioratePlaces(); - readyWayPoints(); - addCustomPicker(); - addCustomCarIcon(); - addCustomLadyIcon(); - addCustomMotoIcon(); - addCustomStepIcon(); - addCustomStartIcon(); - addCustomEndIcon(); - addToken(); - await getLocation(); - addFingerPrint(); - getPassengerLocationUniversity(); - _initializePolygons(); - // await addToken(); - getKazanPercent(); - getPassengerRate(); - getRideStatusFromStartApp(); - reloadStartApp = false; - startMarkerReloading(); - Get.put(TextToSpeechController()); - Get.put(FirebaseMessagesController()); + await initilizeGetStorage(); // إعداد سريع + await _initMinimalIcons(); // start/end فقط + await addToken(); // لو لازم للمصادقة + await getLocation(); // لتحديد الكاميرا box.write(BoxName.carType, 'yet'); box.write(BoxName.tipPercentage, '0'); - Get.put(AudioRecorderController()); - // await getNearestDriverByPassengerLocation(); - firstTimeRunToGetCoupon(); - initilizeGetStorage(); - cardNumber = await SecureStorage().readData(BoxName.cardNumber); + await detectAndCacheDeviceTier(); - super.onInit(); + // لا تُنشئ Controllers الثقيلة الآن: + Get.lazyPut(() => TextToSpeechController(), + fenix: true); + Get.lazyPut(() => FirebaseMessagesController(), + fenix: true); + Get.lazyPut(() => AudioRecorderController(), + fenix: true); + + // ابدأ الخريطة الآن (الشاشة ظهرت للمستخدم) + // لاحقاً: استخدم SchedulerBinding.instance.addPostFrameCallback إذا احتجت. + + // مرحلة 1: مهام ضرورية للتسعير لكن غير حرجة لظهور UI + unawaited(_stagePricingAndState()); + + // مرحلة 2: تحسينات/كماليات بالخلفية + unawaited(_stageNiceToHave()); + + // ابدأ إعادة تحميل الماركر لكن بثروتل داخلي + startMarkerReloading(); // تأكد أنه مَخنوق التحديث (throttled) } +// === Helpers === + + Future _initMinimalIcons() async { + addCustomStartIcon(); + addCustomEndIcon(); + // أجّل باقي الأيقونات: + // addCustomCarIcon(), addCustomLadyIcon(), addCustomMotoIcon(), addCustomStepIcon() + } + + Future _stagePricingAndState() async { + try { + await getKazanPercent(); // أسعار السيرفر + } catch (_) {} + try { + await getRideStatusFromStartApp(); + } catch (_) {} + // لو عندك ضبط “وضع خفيف” حسب الجهاز: + _applyLowEndModeIfNeeded(); + } + + Future _stageNiceToHave() async { + // نفّذ بالتوازي + await Future.wait([ + Future(() async { + try { + getFavioratePlaces(); + } catch (_) {} + }), + Future(() async { + try { + readyWayPoints(); + } catch (_) {} + }), + Future(() async { + try { + addCustomPicker(); + } catch (_) {} + }), + Future(() async { + try { + addCustomCarIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomLadyIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomMotoIcon(); + } catch (_) {} + }), + Future(() async { + try { + addCustomStepIcon(); + } catch (_) {} + }), + Future(() async { + try { + getPassengerRate(); + } catch (_) {} + }), + Future(() async { + try { + firstTimeRunToGetCoupon(); + } catch (_) {} + }), + ]); + try { + cardNumber = await SecureStorage().readData(BoxName.cardNumber); + } catch (_) {} + } + + void _applyLowEndModeIfNeeded() { + // مثال بسيط: يمكنك حفظ فلاج بنظامك (من السيرفر/الإعدادات/الكاش) لتفعيل وضع خفيف + // لاحقاً فعّل: map.trafficEnabled=false, buildingsEnabled=false, تبسيط polylines... + // controller.lowEndMode = true; + } + // @override + // void onInit() async { + // mapAPIKEY = await storage.read(key: BoxName.mapAPIKEY); + // // k = await getAIKey('HERE_API'); + // getFavioratePlaces(); + // readyWayPoints(); + // addCustomPicker(); + // addCustomCarIcon(); + // addCustomLadyIcon(); + // addCustomMotoIcon(); + // addCustomStepIcon(); + // addCustomStartIcon(); + // addCustomEndIcon(); + // addToken(); + // await getLocation(); + // addFingerPrint(); + // // getPassengerLocationUniversity(); + // // _initializePolygons(); + // // await addToken(); + // getKazanPercent(); + // getPassengerRate(); + // getRideStatusFromStartApp(); + // reloadStartApp = false; + // startMarkerReloading(); + // Get.put(TextToSpeechController()); + // Get.put(FirebaseMessagesController()); + // box.write(BoxName.carType, 'yet'); + // box.write(BoxName.tipPercentage, '0'); + // Get.put(AudioRecorderController()); + // // await getNearestDriverByPassengerLocation(); + // firstTimeRunToGetCoupon(); + // initilizeGetStorage(); + // cardNumber = await SecureStorage().readData(BoxName.cardNumber); + + // super.onInit(); + // } + uploadPassengerLocation() async { await CRUD().post(link: AppLink.addpassengerLocation, payload: { "passengerId": box.read(BoxName.passengerID), diff --git a/lib/controller/home/profile/invit_controller.dart b/lib/controller/home/profile/invit_controller.dart index fdec1c2..329270f 100644 --- a/lib/controller/home/profile/invit_controller.dart +++ b/lib/controller/home/profile/invit_controller.dart @@ -4,8 +4,6 @@ import 'package:Intaleq/constant/box_name.dart'; import 'package:Intaleq/constant/colors.dart'; import 'package:Intaleq/constant/links.dart'; import 'package:Intaleq/controller/functions/crud.dart'; -import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; -import 'package:Intaleq/controller/payment/payment_controller.dart'; import 'package:flutter/material.dart'; import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:get/get.dart'; @@ -17,6 +15,7 @@ import '../../../views/widgets/error_snakbar.dart'; import '../../../views/widgets/mydialoug.dart'; import '../../functions/launch.dart'; import '../../notification/notification_captain_controller.dart'; +import '../../payment/payment_controller.dart'; class InviteController extends GetxController { final TextEditingController invitePhoneController = TextEditingController(); @@ -27,21 +26,31 @@ class InviteController extends GetxController { int selectedTab = 0; PassengerStats passengerStats = PassengerStats(); + + List contacts = []; + RxList> contactMaps = >[].obs; + + @override + void onInit() { + super.onInit(); + // It's good practice to fetch initial data in onInit or onReady + // fetchDriverStats(); + // fetchDriverStatsPassengers(); + } + 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 - } + // --- Sharing Methods --- + Future shareDriverCode() async { if (driverCouponCode != null) { final String shareText = ''' -Join Intaleq as a driver using my referral code! -Use code: $driverCouponCode -Download the Intaleq Driver app now and earn rewards! +${'Join Intaleq as a driver using my referral code!'.tr} +${'Use code:'.tr} $driverCouponCode +${'Download the Intaleq Driver app now and earn rewards!'.tr} '''; await Share.share(shareText); } @@ -50,19 +59,15 @@ Download the Intaleq Driver app now and earn rewards! Future sharePassengerCode() async { if (couponCode != null) { final String shareText = ''' -Get a discount on your first Intaleq ride! -Use my referral code: $couponCode -Download the Intaleq app now and enjoy your ride! +${'Get a discount on your first Intaleq ride!'.tr} +${'Use my referral code:'.tr} $couponCode +${'Download the Intaleq app now and enjoy your ride!'.tr} '''; await Share.share(shareText); } } - @override - void onInit() { - super.onInit(); - // fetchDriverStats(); - } + // --- Data Fetching --- void fetchDriverStats() async { try { @@ -74,7 +79,9 @@ Download the Intaleq app now and enjoy your ride! driverInvitationData = data['message']; update(); } - } catch (e) {} + } catch (e) { + Log.print("Error fetching driver stats: $e"); + } } void fetchDriverStatsPassengers() async { @@ -88,216 +95,207 @@ Download the Intaleq app now and enjoy your ride! 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); + Log.print("Error fetching passenger stats: $e"); } } - List contacts = []; - List selectedContacts = []; - RxList> contactMaps = >[].obs; + // --- Contact Handling --- + /// **IMPROVEMENT**: This function now filters out contacts without any phone numbers. + /// This is the fix for the `RangeError` you were seeing, which happened when the UI + /// tried to access the first phone number of a contact that had none. Future pickContacts() async { try { - // Request contacts permission if (await FlutterContacts.requestPermission(readonly: true)) { - // Fetch all contacts with full properties - final List allContacts = await FlutterContacts.getContacts( - withProperties: true, - withThumbnail: false, - withPhoto: true, - ); + final List allContacts = + await FlutterContacts.getContacts(withProperties: true); + final int totalContactsOnDevice = allContacts.length; - // Check if contacts are available - if (allContacts.isNotEmpty) { - // Store the contacts - contacts = allContacts; - Log.print('contacts: $contacts'); + // **FIX**: Filter contacts to only include those with at least one phone number. + contacts = allContacts.where((c) => c.phones.isNotEmpty).toList(); + final int contactsWithPhones = contacts.length; - // 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 + if (contactsWithPhones > 0) { + Log.print('Found $contactsWithPhones contacts with phone numbers.'); + contactMaps.value = contacts.map((contact) { 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(), + 'name': contact.displayName, + 'phones': contact.phones.map((p) => p.number).toList(), + 'emails': contact.emails.map((e) => e.address).toList(), }; - }).toList()); - + }).toList(); update(); + + // **IMPROVEMENT**: Provide feedback if some contacts were filtered out. + if (contactsWithPhones < totalContactsOnDevice) { + Get.snackbar('Contacts Loaded'.tr, + '${'Showing'.tr} $contactsWithPhones ${'of'.tr} $totalContactsOnDevice ${'contacts. Others were hidden because they don\'t have a phone number.'.tr}', + snackPosition: SnackPosition.BOTTOM); + } } else { - Get.snackbar('No contacts available'.tr, - 'Please add contacts to your phone.'.tr); + Get.snackbar('No contacts found'.tr, + 'No contacts with phone numbers were found on your device.'.tr); } } else { Get.snackbar('Permission denied'.tr, 'Contact permission is required to pick contacts'.tr); } } catch (e) { + Log.print('Error picking contacts: $e'); Get.snackbar( 'Error'.tr, 'An error occurred while picking contacts: $e'.tr); } } - void onSelectPassengerInvitation(int index) async { - MyDialog().getDialog( - int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver'] - .toString()) < - 2 - ? '${'When'.tr} ${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} ' - : 'You deserve the gift'.tr, - '${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver'].toString()} / 2 ${'Trip'.tr}', - () async { - if (int.parse(driverInvitationDataToPassengers[index] - ['countOfInvitDriver'] - .toString()) < - 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(); - }, - ); - } - } - }, - ); + void selectPhone(String phone) { + invitePhoneController.text = phone; + update(); + 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 {} + /// **IMPROVEMENT**: A new robust function to format phone numbers specifically for Syria (+963). + /// It handles various user inputs gracefully to produce a standardized international format. + String _formatSyrianPhoneNumber(String phone) { + // 1. Remove all non-digit characters to clean the input. + String digitsOnly = phone.replaceAll(RegExp(r'\D'), ''); + + // 2. If it already starts with the country code, we assume it's correct. + if (digitsOnly.startsWith('963')) { + return '+$digitsOnly'; } - } - 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')) { + // 3. If it starts with '09' (common local format), remove the leading '0'. + if (digitsOnly.startsWith('09')) { digitsOnly = digitsOnly.substring(1); } - return digitsOnly; + // 4. Prepend the Syrian country code. + return '+963$digitsOnly'; } + /// **IMPROVEMENT**: This method now uses the new phone formatting logic and + /// sends a much-improved, user-friendly WhatsApp message. void sendInviteToPassenger() async { if (invitePhoneController.text.isEmpty || - invitePhoneController.text.length < 11) { + invitePhoneController.text.length < 9) { mySnackeBarError('Please enter a correct phone'.tr); - return; } - // try { - String phoneNumber = formatPhoneNumber(invitePhoneController.text); + try { + // Use the new formatting function to ensure the number is correct. + String formattedPhoneNumber = + _formatSyrianPhoneNumber(invitePhoneController.text); - var response = - await CRUD().post(link: AppLink.addInvitationPassenger, payload: { - "driverId": box.read(BoxName.passengerID), - "inviterPassengerPhone": ('+2$phoneNumber') - }); + var response = + await CRUD().post(link: AppLink.addInvitationPassenger, payload: { + "driverId": box.read(BoxName.passengerID), + "inviterPassengerPhone": formattedPhoneNumber, + }); - if (response != 'failure') { - var d = response; - Get.snackbar('Success', 'Invite sent successfully'.tr); + if (response != 'failure') { + var d = response; + Get.snackbar('Success'.tr, 'Invite sent successfully'.tr, + backgroundColor: Colors.green, colorText: Colors.white); - String message = '${'*Intaleq 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'; + String expirationTime = d['message']['expirationTime'].toString(); + String inviteCode = d['message']['inviteCode'].toString(); - launchCommunication('whatsapp', '+2$phoneNumber', message); + // New and improved WhatsApp message for better user engagement. + String message = + "👋 ${'Hello! I\'m inviting you to try Intaleq.'.tr}\n\n" + "🎁 ${'Use my invitation code to get a special gift on your first ride!'.tr}\n\n" + "${'Your personal invitation code is:'.tr}\n" + "*$inviteCode*\n\n" + "⏳ ${'Be sure to use it quickly! This code expires at'.tr} *$expirationTime*.\n\n" + "📲 ${'Download the app now:'.tr}\n" + "• *Android:* https://play.google.com/store/apps/details?id=com.Intaleq.intaleq\n" + "• *iOS:* https://apps.apple.com/st/app/intaleq-rider/id6748075179\n\n" + "${'See you on the road!'.tr} 🚗"; - invitePhoneController.clear(); - } else { - Get.snackbar('Error'.tr, "Invite code already used".tr, - backgroundColor: AppColor.redColor, - duration: const Duration(seconds: 4)); + launchCommunication('whatsapp', formattedPhoneNumber, message); + invitePhoneController.clear(); + update(); + } else { + Get.snackbar( + 'Error'.tr, "This phone number has already been invited.".tr, + backgroundColor: AppColor.redColor, + duration: const Duration(seconds: 4)); + } + } catch (e) { + Log.print("Error sending invite: $e"); + Get.snackbar( + 'Error'.tr, 'An unexpected error occurred. Please try again.'.tr, + backgroundColor: AppColor.redColor); + } + } + + // This function is dependent on the `pickContacts` method filtering out contacts without phones. + savePhoneToServer() async { + for (var contactMap in contactMaps) { + // The `pickContacts` function ensures the 'phones' list is not empty here. + var phones = contactMap['phones'] as List; + var res = await CRUD().post(link: AppLink.savePhones, payload: { + "name": contactMap['name'] ?? 'No Name', + "phones": phones.first, // Safely access the first phone number + "phones2": phones.join(', '), + }); + if (res == 'failure') { + Log.print('Failed to save contact: ${contactMap['name']}'); + } + } + } + + void onSelectPassengerInvitation(int index) async { + try { + final invitation = driverInvitationDataToPassengers[index]; + final tripCount = + int.tryParse(invitation['countOfInvitDriver'].toString()) ?? 0; + final passengerName = invitation['passengerName'].toString(); + final isGiftTaken = invitation['isGiftToken'].toString() == '1'; + + if (tripCount >= 2) { + // Gift can be claimed + if (!isGiftTaken) { + MyDialog().getDialog( + 'You deserve the gift'.tr, + '${'Claim your 20 LE gift for inviting'.tr} $passengerName!', + () async { + Get.back(); // Close dialog first + await Get.find().addPassengersWallet('20'); + await CRUD().post( + link: AppLink.updatePassengerGift, + payload: {'id': invitation['id']}, + ); + NotificationCaptainController().addNotificationCaptain( + invitation['passengerInviterId'].toString(), + "You have got a gift for invitation".tr, + '${"You have earned 20".tr} ${'LE'}', + false, + ); + fetchDriverStatsPassengers(); // Refresh list + }, + ); + } else { + MyDialog().getDialog( + "Gift Already Claimed".tr, + "You have already received your gift for inviting $passengerName." + .tr, + () => Get.back(), + ); + } + } else { + // Gift not yet earned + MyDialog().getDialog( + '${'Keep it up!'.tr}', + '$passengerName ${'has completed'.tr} $tripCount / 2 ${'trips'.tr}. ${"You can claim your gift once they complete 2 trips.".tr}', + () => Get.back(), + ); + } + } catch (e) { + Log.print("Error in onSelectPassengerInvitation: $e"); } - // } catch (e) { - // Get.snackbar('Error', 'An error occurred'.tr); - // } } } diff --git a/lib/controller/local/translations.dart b/lib/controller/local/translations.dart index 31decb2..4925bef 100644 --- a/lib/controller/local/translations.dart +++ b/lib/controller/local/translations.dart @@ -5,164 +5,269 @@ class MyTranslation extends Translations { Map> get keys => { "ar": { "Syria": "سوريا", - "SYP": "ليرة", + "SYP": "ليرة سورية", "Order": "طلب", "OrderVIP": "طلب VIP", + "Hi ,I Arrive your site": "أنا وصلت لموقعك", "Cancel Trip": "إلغاء الرحلة", - "Passenger Cancel Trip": "الراكب ألغى الرحلة", + "Passenger Cancel Trip": "الراكب لغى الرحلة", "VIP Order": "طلب VIP", - "The driver accepted your trip": "السائق قبل رحلتك", + "The driver accepted your trip": "الكابتن وافق على رحلتك", "message From passenger": "رسالة من الراكب", "Cancel": "إلغاء", "Trip Cancelled. The cost of the trip will be added to your wallet.": - "تم إلغاء الرحلة. سيتم إضافة تكلفة الرحلة إلى محفظتك.", + "تم إلغاء الرحلة. ستتم إضافة تكلفة الرحلة إلى محفظتك.", "token change": "تغيير الرمز", - "face detect": "كشف الوجه", - "Face Detection Result": "نتيجة كشف الوجه", - "similar": "مشابه", - "not similar": "غير مشابه", - "Hi ,I will go now": "مرحبًا، سأذهب الآن", + "face detect": "التحقق من الوجه", + "Face Detection Result": "نتيجة التحقق من الوجه", + "similar": "مطابق", + "not similar": "غير مطابق", + "Hi ,I will go now": "مرحباً، أنا ذاهب الآن", "Passenger come to you": "الراكب قادم إليك", "Call Income": "مكالمة واردة", "Call Income from Passenger": "مكالمة واردة من الراكب", - "Criminal Document Required": "مطلوب وثيقة جنائية", - "You should have upload it .": "يجب عليك تحميلها.", + "Criminal Document Required": "مطلوب وثيقة لا حكم عليه", + "You should have upload it .": "يجب عليك رفعها.", "Call End": "انتهاء المكالمة", "The order has been accepted by another driver.": - "تم قبول الطلب من قبل سائق آخر.", - "The order Accepted by another Driver": - "تم قبول الطلب من قبل سائق آخر", + "تم قبول الطلب من قبل كابتن آخر.", + "The order Accepted by another Driver": "الطلب تم قبوله من كابتن آخر", "We regret to inform you that another driver has accepted this order.": - "نأسف لإعلامك بأن سائقًا آخر قد قبل هذا الطلب.", - "Driver Applied the Ride for You": "السائق قدم الطلب لك", + "نأسف لإبلاغك بأن كابتن آخر قد قبل هذا الطلب.", + "Driver Applied the Ride for You": "الكابتن قام بطلب الرحلة لك", "Applied": "تم التقديم", - "Hi ,I Arrive your site": "مرحبًا، لقد وصلت إلى موقعك", - "Please go to Car Driver": "يرجى الذهاب إلى سائق السيارة", - "Ok I will go now.": "حسنًا، سأذهب الآن.", + "My Wallet": "محفظتي", + "Top up Balance": "تعبئة الرصيد", + "Please go to Car Driver": "الرجاء التوجه إلى سيارة الكابتن", + "Ok I will go now.": "حسناً، أنا ذاهب الآن.", "Accepted Ride": "تم قبول الرحلة", - "Driver Accepted the Ride for You": "السائق قبل الرحلة لك", - "Promo": "عرض ترويجي", - "Show latest promo": "عرض أحدث عرض ترويجي", + "Driver Accepted the Ride for You": "الكابتن قبل رحلتك", + "Promo": "عرض", + "Show latest promo": "عرض آخر العروض", "Trip Monitoring": "مراقبة الرحلة", - "Driver Is Going To Passenger": "السائق في طريقه إليك", - "Please stay on the picked point.": - "يرجى البقاء في نقطة الالتقاط المحددة.", - "message From Driver": "رسالة من السائق", + "Driver Is Going To Passenger": "الكابتن بالطريق إليك", + "Please stay on the picked point.": "الرجاء البقاء في نقطة الانطلاق.", + "message From Driver": "رسالة من الكابتن", "Trip is Begin": "بدأت الرحلة", "welcome to intaleq": "أهلاً بك في انطلق", "login or register subtitle": - "أدخل رقم هاتفك للدخول أو إنشاء حساب جديد", - "phone number label": "رقم الهاتف", - "phone number required": "يرجى إدخال رقم الهاتف", + "أدخل رقم موبايلك لتسجيل الدخول أو لإنشاء حساب جديد", + "phone number label": "رقم الموبايل", + "phone number required": "الرجاء إدخال رقم الموبايل", "send otp button": "إرسال رمز التحقق", - "verify your number title": "التحقق من الرقم", - "otp sent subtitle": "تم إرسال رمز تحقق من 5 أرقام إلى\n@phoneNumber", + "verify your number title": "التحقق من رقمك", + "otp sent subtitle": + "تم إرسال رمز تحقق مؤلف من 5 أرقام إلى\n@phoneNumber", "verify and continue button": "تحقق ومتابعة", "enter otp validation": "الرجاء إدخال رمز التحقق المكون من 5 أرقام", "one last step title": "خطوة أخيرة", - "complete profile subtitle": "أكمل بياناتك الشخصية للبدء", + "complete profile subtitle": "أكمل معلوماتك الشخصية للبدء", "first name label": "الاسم الأول", - "first name required": "يرجى إدخال الاسم الأول", + "first name required": "الرجاء إدخال الاسم الأول", "last name label": "الاسم الأخير", "Verify OTP": "التحقق من الرمز", "Verification Code": "رمز التحقق", "We have sent a verification code to your mobile number:": - "لقد أرسلنا رمز التحقق إلى رقم هاتفك المحمول:", + "لقد أرسلنا رمز التحقق إلى رقم موبايلك:", "Verify": "تحقق", "Resend Code": "إعادة إرسال الرمز", - "You can resend in": "يمكنك إعادة الإرسال خلال", + "You can resend in": "يمكنك إعادة الإرسال بعد", "seconds": "ثانية", "Error": "خطأ", "Please enter the complete 6-digit code.": - "الرجاء إدخال الرمز المكون من 6 أرقام بالكامل.", - "last name required": "يرجى إدخال الاسم الأخير", + "الرجاء إدخال الرمز كاملاً المكون من 6 أرقام.", + "last name required": "الرجاء إدخال الاسم الأخير", "email optional label": "البريد الإلكتروني (اختياري)", - "complete registration button": "إكمال التسجيل", + "complete registration button": "إتمام التسجيل", "User with this phone number or email already exists.": - "المستخدم بهذا الرقم الهاتفي أو البريد الإلكتروني موجود مسبقًا.", + "يوجد حساب مسجل بنفس رقم الموبايل أو البريد الإلكتروني.", "otp sent success": "تم إرسال رمز التحقق إلى واتساب.", "failed to send otp": "فشل إرسال الرمز.", - "server error try again": "حدث خطأ بالخادم، يرجى المحاولة لاحقاً.", + "server error try again": + "حدث خطأ في الخادم، الرجاء المحاولة مرة أخرى.", "an error occurred": "حدث خطأ غير متوقع: @error", "otp verification failed": "رمز التحقق غير صحيح.", "registration failed": "فشلت عملية التسجيل.", "welcome user": "أهلاً بك، @firstName!", - "Cancel Trip from driver": "إلغاء الرحلة من السائق", + "Cancel Trip from driver": "إلغاء الرحلة من قبل الكابتن", "We will look for a new driver.\nPlease wait.": - "سنبحث عن سائق جديد.\nمن فضلك انتظر.", - "The driver canceled your ride.": "السائق ألغى رحلتك.", - "Driver Finish Trip": "السائق أنهى الرحلة", - "you will pay to Driver": "ستدفع للسائق", - "Don't forget your personal belongings.": "لا تنسى أغراضك الشخصية.", + "جاري البحث عن كابتن جديد.\nالرجاء الانتظار.", + "The driver canceled your ride.": "الكابتن ألغى رحلتك.", + "Driver Finish Trip": "الكابتن أنهى الرحلة", + "you will pay to Driver": "ستدفع للكابتن", + "Don't forget your personal belongings.": "لا تنسَ أغراضك الشخصية.", "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 Intaleq app": - "من فضلك تأكد من أن لديك جميع أغراضك الشخصية وأن أي أجر متبقي، إذا كان ينطبق، قد تم إضافته إلى محفظتك قبل المغادرة. شكرًا لاختيارك تطبيق Intaleq", + "يرجى التأكد من أخذ جميع أغراضك الشخصية، وأن أي مبلغ متبقٍ قد أُضيف إلى محفظتك قبل المغادرة. شكراً لاختيارك تطبيق انطلق.", "Finish Monitor": "إنهاء المراقبة", - "Trip finished": "الرحلة انتهت", - "Call Income from Driver": "مكالمة واردة من السائق", - "Driver Cancelled Your Trip": "السائق ألغى رحلتك", + "Trip finished": "انتهت الرحلة", + "Call Income from Driver": "مكالمة واردة من الكابتن", + "Driver Cancelled Your Trip": "الكابتن ألغى رحلتك", "you will pay to Driver you will be pay the cost of driver time look to your Intaleq Wallet": - "ستدفع للسائق، ستقوم بدفع تكلفة وقت السائق، انظر إلى محفظتك في Intaleq", - "Order Applied": "تم تطبيق الطلب", + "ستقوم بدفع تكلفة وقت الكابتن، راجع محفظتك في انطلق", + "Order Applied": "تم تقديم الطلب", "Share App": "مشاركة التطبيق", "Wallet": "المحفظة", + "Balance": "الرصيد", + "Don’t forget your personal belongings.": "لا تنسَ أغراضك الشخصية.", "Profile": "الملف الشخصي", - "Contact Support": "اتصل بالدعم", + "Contact Support": "التواصل مع الدعم", "Session expired. Please log in again.": - "انتهت الجلسة. يرجى تسجيل الدخول مرة أخرى.", + "انتهت صلاحية الجلسة. الرجاء تسجيل الدخول مرة أخرى.", "Security Warning": "⚠️ تحذير أمني", "Potential security risks detected. The application may not function correctly.": - "تم اكتشاف مخاطر أمنية محتملة. قد لا يعمل التطبيق بشكل صحيح.", - "please order now": "الرجاء الطلب الآن", - "Where to": "إلى أين", - "Where are you going?": "إلى أين تذهب؟", + "تم كشف مخاطر أمنية محتملة. قد لا يعمل التطبيق بشكل صحيح.", + "please order now": "اطلب الآن", + "Where to": "إلى أين؟", + "Where are you going?": "لوين رايح؟", "Quick Actions": "إجراءات سريعة", - "My Wallet": "محفظتي", + "My Balance": "رصيدي", "Order History": "سجل الطلبات", - "Contact Us": "اتصل بنا", - "Driver": "السائق", + "Contact Us": "تواصل معنا", + "Driver": "كابتن", "Complaint": "شكوى", "Promos": "العروض", "Recent Places": "الأماكن الأخيرة", "From": "من", - "WhatsApp Location Extractor": "مستخرج موقع واتساب", + "WhatsApp Location Extractor": "استخراج الموقع من واتساب", "Location Link": "رابط الموقع", "Paste location link here": "الصق رابط الموقع هنا", - "Go to this location": "انتقل إلى هذا الموقع", + "Go to this location": "اذهب إلى هذا الموقع", "Paste WhatsApp location link": "الصق رابط موقع واتساب", "Select Order Type": "اختر نوع الطلب", "Choose who this order is for": "اختر لمن هذا الطلب", - "I want to order for myself": "أريد الطلب لنفسي", - "I want to order for someone else": "أريد الطلب لشخص آخر", + "I want to order for myself": "أريد أن أطلب لنفسي", + "I want to order for someone else": "أريد أن أطلب لشخص آخر", "Order for someone else": "اطلب لشخص آخر", "Order for myself": "اطلب لنفسي", "Are you want to go this site": "هل تريد الذهاب إلى هذا الموقع؟", "No": "لا", "Intaleq Wallet": "محفظة انطلق", - 'Have a promo code?': "هل لديك رمز ترويجي؟", - "Your Wallet balance is ": "رصيدك في المحفظة هو ", + "Have a promo code?": "هل لديك رمز خصم؟", + "Your Wallet balance is ": "رصيد محفظتك هو ", "Cash": "كاش", - "Pay directly to the captain": "ادفع للكابتن مباشرةً", + "Pay directly to the captain": "ادفع للكابتن مباشرة", "Top up Wallet to continue": "اشحن المحفظة للمتابعة", - "Or pay with Cash instead": "أو ادفع بالكاش بدلاً من ذلك", - "Confirm & Find a Ride": "تأكيد والبحث عن مشوار", + "Or pay with Cash instead": "أو ادفع كاش بدلاً من ذلك", + "Confirm & Find a Ride": "تأكيد وإيجاد رحلة", "Balance:": "الرصيد:", - 'Alerts': "تنبيهات", - "Welcome Back!": "مرحبًا بعودتك!", + "Alerts": "الإشعارات", + "Welcome Back!": "أهلاً بعودتك!", "Current Balance": "الرصيد الحالي", - 'Set Wallet Phone Number': "تعيين رقم هاتف المحفظة", - 'Link a phone number for transfers': "ربط رقم هاتف للتحويلات", - 'Payment History': "سجل المدفوعات", - 'View your past transactions': "عرض معاملاتك السابقة", - 'Top up Wallet': "اشحن المحفظة", - 'Add funds using our secure methods': - "أضف أموالًا باستخدام طرقنا الآمنة", + "Set Wallet Phone Number": "تعيين رقم هاتف للمحفظة", + "Link a phone number for transfers": "اربط رقم هاتف لإجراء التحويلات", + "Payment History": "سجل الدفعات", + "View your past transactions": "عرض معاملاتك السابقة", + "Top up Wallet": "تعبئة المحفظة", + "Add funds using our secure methods": + "أضف رصيداً باستخدام طرقنا الآمنة", + "Speed": "سرعة", + "Comfort": "راحة", + "Electric": "كهربائية", + "Lady": "سيدة", + "Van": "عائلية", + "Rayeh Gai": "رايح جاي", + "Join Intaleq as a driver using my referral code!": + "انضم إلى 'انطلق' ككابتن باستخدام رمز دعوتي!", + "Use code:": "استخدم الرمز:", + "Download the Intaleq Driver app now and earn rewards!": + "حمّل تطبيق 'انطلق' للكباتن الآن واحصل على مكافآت!", + "Get a discount on your first Intaleq ride!": + "احصل على خصم على رحلتك الأولى مع 'انطلق'!", + "Use my referral code:": "استخدم رمز دعوتي:", + "Download the Intaleq app now and enjoy your ride!": + "حمّل تطبيق 'انطلق' الآن واستمتع برحلتك!", + "Contacts Loaded": "تم تحميل جهات الاتصال", + "Showing": "يتم عرض", + "of": "من", + "contacts. Others were hidden because they don't have a phone number.": + "جهة اتصال. تم إخفاء البقية لعدم وجود أرقام هواتف لديهم.", + "No contacts found": "لم يتم العثور على جهات اتصال", + "No contacts with phone numbers were found on your device.": + "لم يتم العثور على جهات اتصال لديها أرقام هواتف في جهازك.", + "Permission denied": "تم رفض الإذن", + "Contact permission is required to pick contacts": + "مطلوب إذن الوصول لجهات الاتصال لاختيار الأسماء.", + "An error occurred while picking contacts:": + "حدث خطأ أثناء اختيار جهات الاتصال:", + "Please enter a correct phone": "الرجاء إدخال رقم هاتف صحيح", + "Success": "نجاح", + "Invite sent successfully": "تم إرسال الدعوة بنجاح", + "Hello! I'm inviting you to try Intaleq.": + "مرحباً! أدعوك لتجربة تطبيق 'انطلق'.", + "Use my invitation code to get a special gift on your first ride!": + "استخدم رمز دعوتي لتحصل على هدية خاصة في رحلتك الأولى!", + "Your personal invitation code is:": "رمز دعوتك الشخصي هو:", + "Be sure to use it quickly! This code expires at": + "لا تتأخر! صلاحية هذا الرمز تنتهي في", + "Download the app now:": "حمّل التطبيق الآن:", + "See you on the road!": "نلتقي على الطريق!", + "This phone number has already been invited.": + "لقد تم إرسال دعوة لهذا الرقم مسبقاً.", + "An unexpected error occurred. Please try again.": + "حدث خطأ غير متوقع. الرجاء المحاولة مرة أخرى.", + "You deserve the gift": "أنت تستحق الهدية", + "Claim your 20 LE gift for inviting": + "اطلب هديتك بقيمة 20 جنيه لدعوة", + "You have got a gift for invitation": "لقد حصلت على هدية لدعوتك", + "You have earned 20": "لقد ربحت 20", + "LE": "ل.س", + "Vibration feedback for all buttons": "تفعيل الاهتزاز لجميع الأزرار", + "Share with friends and earn rewards": + "شارك التطبيق مع أصدقائك واحصل على مكافآت", + "Gift Already Claimed": "تم استلام الهدية مسبقاً", + "You have already received your gift for inviting": + "لقد استلمت هديتك بالفعل مقابل هذه الدعوة", + "Keep it up!": "استمر!", + "has completed": "أكمل", + "trips": "رحلات", + "Personal Information": "المعلومات الشخصية", + "Name": "الاسم", + "Not set": "غير محدد", + "Gender": "الجنس", + "Education": "التحصيل العلمي", + "Work & Contact": "العمل والاتصال", + "Employment Type": "نوع العمل", + "Marital Status": "الحالة الاجتماعية", + "SOS Phone": "رقم الطوارئ", + "Sign Out": "تسجيل الخروج", + "Delete My Account": "حذف حسابي", + "Update Gender": "تحديث الجنس", + "Update": "تحديث", + "Update Education": "تحديث التحصيل العلمي", + "Are you sure? This action cannot be undone.": + "هل أنت متأكد؟ لا يمكن التراجع عن هذا الإجراء.", + "Confirm your Email": "تأكيد بريدك الإلكتروني", + "Type your Email": "اكتب بريدك الإلكتروني", + "Delete Permanently": "حذف نهائي", + "Male": "ذكر", + "Female": "أنثى", + "Other": "آخر", + "High School Diploma": "شهادة ثانوية", + "Associate Degree": "دبلوم", + "Bachelor's Degree": "إجازة جامعية", + "Master's Degree": "ماجستير", + "Doctoral Degree": "دكتوراه", + "Select your preferred language for the app interface.": + "اختر لغتك المفضلة لواجهة التطبيق.", + "Language Options": "خيارات اللغة", + "You can claim your gift once they complete 2 trips.": + "يمكنك طلب هديتك بعد إتمامه لرحلتين.", + "Closest & Cheapest": "الأقرب والأرخص", + "Comfort choice": "خيار الراحة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "تنقّل في سيارة كهربائية حديثة وصامتة. خيار مميز وصديق للبيئة لرحلة هادئة.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خدمة فان واسعة ومثالية للعائلات والمجموعات. سفر مريح، آمن، واقتصادي.", + "Quiet & Eco-Friendly": "هادئة وصديقة للبيئة", + "Lady Captain for girls": "كابتن سيدة للبنات", + "Van for familly": "سيارة فان للعائلة", "Are you sure to delete this location?": "هل أنت متأكد من حذف هذا الموقع؟", "Submit a Complaint": "تقديم شكوى", - "Submit Complaint": "تقديم شكوى", + "Submit Complaint": "إرسال الشكوى", "No trip history found": "لا يوجد سجل للرحلات", - "Your past trips will appear here.": "رحلاتك السابقة ستظهر هنا.", - "1. Describe Your Issue": "١. صف مشكلتك", + "Your past trips will appear here.": "ستظهر رحلاتك السابقة هنا.", + "1. Describe Your Issue": "١. اشرح مشكلتك", "Enter your complaint here...": "اكتب شكواك هنا...", "2. Attach Recorded Audio": "٢. إرفاق تسجيل صوتي", "No audio files found.": "لم يتم العثور على ملفات صوتية.", @@ -173,466 +278,448 @@ class MyTranslation extends Translations { "Date": "التاريخ", "Today's Promos": "عروض اليوم", "No promos available right now.": "لا توجد عروض متاحة حالياً.", - "Check back later for new offers!": - "تحقق مرة أخرى لاحقاً للعروض الجديدة!", - "Valid Until:": "صالح لغاية:", - "CODE": "الكود", + "Check back later for new offers!": "تحقق لاحقاً من وجود عروض جديدة!", + "Valid Until:": "صالح حتى:", + "CODE": "الرمز", "Login": "تسجيل الدخول", - "Sign in for a seamless experience": "سجل دخولك لتجربة سلسة", - "Sign In with Google": "الدخول باستخدام جوجل", - "Sign in with Apple": "الدخول باستخدام أبل", + "Sign in for a seamless experience": "سجل دخولك لتجربة سلسلة", + "Sign In with Google": "الدخول عبر جوجل", + "Sign in with Apple": "الدخول عبر آبل", "User not found": "المستخدم غير موجود", "Need assistance? Contact us": "هل تحتاج مساعدة؟ تواصل معنا", "Email": "البريد الإلكتروني", - "Your email address": "عنوان بريدك الإلكتروني", + "Your email address": "بريدك الإلكتروني", "Enter a valid email": "أدخل بريداً إلكترونياً صالحاً", "Password": "كلمة المرور", - "Your password": "كلمة المرور الخاصة بك", + "Your password": "كلمة مرورك", "Enter your password": "أدخل كلمة المرور", "Submit": "إرسال", - "Terms of Use & Privacy Notice": "شروط الاستخدام وإشعار الخصوصية", + "Terms of Use & Privacy Notice": "شروط الاستخدام وبيان الخصوصية", "By selecting \"I Agree\" below, I confirm that I have read and agree to the ": "باختيار \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على ", "Terms of Use": "شروط الاستخدام", " and acknowledge the ": " وأقر بـ ", - "Privacy Notice": "إشعار الخصوصية", - ". I am at least 18 years old.": ". عمري لا يقل عن 18 عاماً.", - "I Agree": "أوافق", + "Privacy Notice": "بيان الخصوصية", + ". I am at least 18 years old.": ". عمري 18 عاماً على الأقل.", + "I Agree": "أوافق على الشروط والأحكام", "Continue": "متابعة", "Enable Location": "تفعيل الموقع", "To give you the best experience, we need to know where you are. Your location is used to find nearby captains and for pickups.": - "لنمنحك أفضل تجربة، نحتاج لمعرفة موقعك. يتم استخدام موقعك للعثور على الكباتن القريبين ولعمليات الالتقاء.", + "لنمنحك أفضل تجربة، نحتاج لمعرفة موقعك. يتم استخدام موقعك للعثور على الكباتن القريبين ولتحديد نقاط الانطلاق.", "Allow Location Access": "السماح بالوصول للموقع", "Welcome to Intaleq!": "أهلاً بك في انطلق!", "Before we start, please review our terms.": "قبل أن نبدأ، يرجى مراجعة شروطنا.", "Your journey starts here": "رحلتك تبدأ هنا", "Cancel Search": "إلغاء البحث", - "Set pickup location": "حدد موقع الانطلاق", - "Move the map to adjust the pin": "حرّك الخريطة لتعديل موضع الدبوس", + "Set pickup location": "تحديد موقع الانطلاق", + "Move the map to adjust the pin": "حرّك الخريطة لتحديد الموقع", "Searching for the nearest captain...": "جاري البحث عن أقرب كابتن...", "No one accepted? Try increasing the fare.": - "لم يقبل أحد؟ حاول زيادة أجرة المشوار.", - "Increase Your Trip Fee (Optional)": "زيادة أجرة المشوار (اختياري)", + "لم يقبل أحد؟ حاول زيادة الأجرة.", + "Increase Your Trip Fee (Optional)": "زيادة أجرة رحلتك (اختياري)", "We haven't found any drivers yet. Consider increasing your trip fee to make your offer more attractive to drivers.": - "لم نتمكن من العثور على أي كابتن حتى الآن. ننصحك بزيادة أجرة المشوار لجعل عرضك أكثر جاذبية للكباتن.", + "لم نعثر على أي كابتن حتى الآن. يمكنك زيادة أجرة الرحلة لجعل عرضك أكثر جاذبية.", "No, thanks": "لا، شكراً", "Increase Fee": "زيادة الأجرة", "Copy": "نسخ", - "Promo Copied!": "تم نسخ الكود!", - "Code": "الكود", + "Promo Copied!": "تم نسخ العرض!", + "Code": "الرمز", "copied to clipboard": "تم نسخه إلى الحافظة", "Price": "السعر", "Intaleq's Response": "رد فريق انطلق", "Awaiting response...": "بانتظار الرد...", "Audio file not attached": "الملف الصوتي غير مرفق", "The audio file is not uploaded yet.\\nDo you want to submit without it?": - "الملف الصوتي لم يتم رفعه بعد.\\nهل تريد الإرسال بدونه؟", + "لم يتم رفع الملف الصوتي بعد.\\nهل تريد الإرسال بدونه؟", "deleted": "تم الحذف", "To Work": "إلى العمل", - "Work Saved": "تم حفظ مكان العمل", - "To Home": "إلى المنزل", - "Home Saved": "تم حفظ مكان المنزل", + "Work Saved": "تم حفظ موقع العمل", + "To Home": "إلى البيت", + "Home Saved": "تم حفظ موقع البيت", "Destination selected": "تم اختيار الوجهة", - "Now select start pick": "الآن اختر نقطة البداية", + "Now select start pick": "الآن حدد نقطة الانطلاق", "OK": "موافق", - "Confirm Pick-up Location": "تأكيد موقع الالتقاط", + "Confirm Pick-up Location": "تأكيد موقع الانطلاق", "Set Location on Map": "حدد الموقع على الخريطة", "Nearest Car: ~": "أقرب سيارة: ~", "Nearest Car": "أقرب سيارة", "No cars nearby": "لا توجد سيارات قريبة", "Favorite Places": "الأماكن المفضلة", "No favorite places yet!": "لا توجد أماكن مفضلة بعد!", - "from your favorites": "من مفضلاتك", + "from your favorites": "من مفضلتك", "Back": "رجوع", - 'Enter your code below to apply the discount.': - 'أدخل رمزك أدناه لتطبيق الخصم', + "Enter your code below to apply the discount.": + "أدخل الرمز أدناه لتطبيق الخصم", "By selecting \"I Agree\" below, I confirm that I have read and agree to the": - "بالنقر على \"أوافق\" أدناه، أؤكد أنني قد قرأت وأوافق على", - "and acknowledge the": "وأعترف بـ", - "Enable Location Access": "تمكين الوصول إلى الموقع", + "باختياري \"أوافق\" أدناه، أؤكد أنني قرأت ووافقت على", + "and acknowledge the": "وأقر بـ", + "Enable Location Access": "تفعيل الوصول إلى الموقع", "We need your location to find nearby drivers for pickups and drop-offs.": - "نحتاج إلى موقعك للعثور على سائقيين قريبين للاستلام والتوصيل.", + "نحتاج موقعك للعثور على كباتن قريبين لنقاط الانطلاق والوصول.", "You should restart app to change language": "يجب إعادة تشغيل التطبيق لتغيير اللغة", "Home Page": "الصفحة الرئيسية", "To change Language the App": "لتغيير لغة التطبيق", "Learn more about our app and mission": - "تعرف أكثر على تطبيقنا ومهمتنا", + "تعرف أكثر على تطبيقنا ورؤيتنا", "Promos For Today": "عروض اليوم", "Choose your ride": "اختر رحلتك", "Your Journey Begins Here": "رحلتك تبدأ من هنا", "Bonus gift": "هدية إضافية", "Pay": "ادفع", "Get": "احصل على", - "Send to Driver Again": "إرسال إلى السائق مرة أخرى", - "Driver Name:": "اسم السائق:", - "No trip data available": "لا توجد بيانات رحلة متاحة", - "Car Plate:": "لوحة السيارة:", - "remaining": "متبقي", + "Send to Driver Again": "أرسل للكابتن مرة أخرى", + "Driver Name:": "اسم الكابتن:", + "No trip data available": "لا تتوفر بيانات للرحلة", + "Car Plate:": "رقم لوحة السيارة:", + "remaining": "متبقٍ", "Order Cancelled": "تم إلغاء الطلب", - "You canceled VIP trip": "لقد ألغيت رحلة VIP", + "You canceled VIP trip": "لقد ألغيت رحلة الـ VIP", "Passenger cancelled order": "الراكب ألغى الطلب", "Your trip is scheduled": "رحلتك مجدولة", - "Don't forget your ride!": "لا تنسى رحلتك!", + "Don't forget your ride!": "لا تنسَ رحلتك!", "Trip updated successfully": "تم تحديث الرحلة بنجاح", - "Car Make:": "ماركة السيارة:", + "Car Make:": "نوع السيارة:", "Car Model:": "موديل السيارة:", "Car Color:": "لون السيارة:", - "Driver Phone:": "هاتف السائق:", + "Driver Phone:": "رقم الكابتن:", "Pre-booking": "حجز مسبق", - "Waiting VIP": "انتظار VIP", - "Driver List": "قائمة السائقين", + "Waiting VIP": "بانتظار VIP", + "Driver List": "قائمة الكباتن", "Confirm Trip": "تأكيد الرحلة", "Select date and time of trip": "اختر تاريخ ووقت الرحلة", "Date and Time Picker": "اختيار التاريخ والوقت", "Trip Status:": "حالة الرحلة:", "pending": "قيد الانتظار", - "accepted": "تم القبول", - "rejected": "تم الرفض", + "accepted": "مقبولة", + "rejected": "مرفوضة", "Apply": "تطبيق", - "Enter your promo code": "أدخل رمز الترويج الخاص بك", - "Apply Promo Code": "تطبيق رمز الترويج", - "Scheduled Time:": "الوقت المحدد:", - "No drivers available": "لا يوجد سائقون متاحون", + "Enter your promo code": "أدخل رمز العرض", + "Apply Promo Code": "تطبيق رمز العرض", + "Scheduled Time:": "الوقت المجدول:", + "No drivers available": "لا يوجد كباتن متاحون", "No drivers available at the moment. Please try again later.": - "لا يوجد سائقون متاحون حاليًا. يرجى المحاولة مرة أخرى لاحقًا.", - "you have a negative balance of": "لديك رصيد سلبي بقيمة", + "لا يوجد كباتن متاحون حالياً. الرجاء المحاولة مرة أخرى.", + "you have a negative balance of": "لديك رصيد سالب بقيمة", "Please try again in a few moments": - "يرجى المحاولة مرة أخرى بعد قليل", - "Unknown Driver": "سائق غير معروف", + "الرجاء المحاولة بعد لحظات قليلة", + "Unknown Driver": "كابتن غير معروف", "in your": "في محفظتك", - "The driver accepted your order for": "قبل السائق طلبك مقابل", + "The driver accepted your order for": "الكابتن قبل طلبك مقابل", "wallet due to a previous trip.": "بسبب رحلة سابقة.", "rides": "رحلات", - "Add Work": "إضافة عمل", + "Add Work": "إضافة العمل", "The reason is": "السبب هو", "User does not have a wallet #1652": "المستخدم ليس لديه محفظة #1652", "Price of trip": "سعر الرحلة", "From:": "من:", "For Intaleq and Delivery trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "لرحلات Intaleq والتوصيل، يتم حساب السعر ديناميكيًا. لرحلات الراحة، يعتمد السعر على الوقت والمسافة.", - "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", - "Add wallet phone you use": "أضف هاتف المحفظة الذي تستخدمه", - "Update Available": "تحديث متاح", + "لرحلات انطلق والتوصيل، يتم حساب السعر بشكل متغير. أما لرحلات الراحة، فيعتمد السعر على الوقت والمسافة.", + "Phone Wallet Saved Successfully": "تم حفظ رقم هاتف المحفظة بنجاح", + "Add wallet phone you use": "أضف رقم هاتف المحفظة الذي تستخدمه", + "Update Available": "يتوفر تحديث", "Phone number must be exactly 11 digits long": - "يجب أن يكون رقم الهاتف 11 رقمًا بالضبط", + "يجب أن يتكون رقم الهاتف من 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.": - "يتوفر إصدار جديد من التطبيق. يرجى التحديث إلى أحدث إصدار.", + "يتوفر إصدار جديد من التطبيق. الرجاء التحديث إلى آخر إصدار.", "We use location to get accurate and nearest passengers for you": - "نستخدم الموقع للحصول على ركاب دقيقين وأقرب لك", + "نستخدم الموقع لنجد لك الركاب الأقرب وبدقة", "This ride is already applied by another driver.": - "هذه الرحلة قد تم التقديم عليها من قبل سائق آخر.", + "هذه الرحلة تم قبولها من قبل كابتن آخر.", "We use your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.": - "نستخدم موقعك الدقيق للعثور على أقرب سائق متاح وتقديم معلومات دقيقة عن الاستلام والتوصيل. يمكنك إدارة هذا في الإعدادات.", + "نستخدم موقعك الدقيق للعثور على أقرب كابتن متاح وتوفير معلومات دقيقة عن نقاط الانطلاق والوصول. يمكنك إدارة ذلك في الإعدادات.", "Where are you, sir?": "أين أنت يا سيدي؟", "I've been trying to reach you but your phone is off.": - "كنت أحاول الوصول إليك ولكن هاتفك مغلق.", + "كنت أحاول الاتصال بك لكن هاتفك مغلق.", "Please don't be late": "من فضلك لا تتأخر", "Please don't be late, I'm waiting for you at the specified location.": - "من فضلك لا تتأخر، أنا في انتظارك في الموقع المحدد.", + "من فضلك لا تتأخر، أنا بانتظارك في الموقع المحدد.", "My location is correct. You can search for me using the navigation app": - "موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة", + "موقعي صحيح. يمكنك إيجادي باستخدام تطبيق الخرائط", "Hello, I'm at the agreed-upon location": - "مرحبًا، أنا في الموقع المتفق عليه", - "How much longer will you be?": "كم من الوقت ستبقى؟", - "Phone number is verified before": "تم التحقق من رقم الهاتف من قبل", + "مرحباً، أنا في الموقع المتفق عليه", + "How much longer will you be?": "كم من الوقت تحتاج بعد؟", + "Phone number is verified before": "تم التحقق من رقم الهاتف مسبقاً", "Change Ride": "تغيير الرحلة", "You can change the destination by long-pressing any point on the map": - "يمكنك تغيير الوجهة بالضغط مطولًا على أي نقطة على الخريطة", + "يمكنك تغيير الوجهة بالضغط المطول على أي نقطة على الخريطة", "Pick from map destination": "اختر الوجهة من الخريطة", "Pick or Tap to confirm": "اختر أو اضغط للتأكيد", "Accepted your order": "تم قبول طلبك", "Order Accepted": "تم قبول الطلب", - "with type": "مع النوع", - "accepted your order at price": "قبل طلبك بالسعر", + "with type": "من نوع", + "accepted your order at price": "وافق على طلبك بسعر", "you canceled order": "لقد ألغيت الطلب", "If you want order to another person": "إذا كنت تريد الطلب لشخص آخر", - "upgrade price": "ترقية السعر", - "Please enter a correct phone": "الرجاء إدخال هاتف صحيح", + "upgrade price": "رفع السعر", "airport": "مطار", "Best choice for a comfortable car with a flexible route and stop points. This airport offers visa entry at this price.": - "أفضل خيار لسيارة مريحة مع مسار مرن ونقاط توقف. هذا المطار يوفر دخول التأشيرة بهذا السعر.", + "الخيار الأفضل لسيارة مريحة مع مسار مرن ونقاط توقف. هذا المطار يوفر تأشيرة دخول بهذا السعر.", "You can upgrade price to may driver accept your order": - "يمكنك ترقية السعر حتى يقبل السائق طلبك", + "يمكنك رفع السعر ليقبل الكابتن طلبك", "Change Route": "تغيير المسار", "No Captain Accepted Your Order": "لم يقبل أي كابتن طلبك", "We are looking for a captain but the price may increase to let a captain accept": - "نحن نبحث عن كابتن ولكن قد يزيد السعر ليتم قبول الطلب", + "نبحث عن كابتن ولكن قد يرتفع السعر ليوافق أحدهم", "No, I want to cancel this trip": "لا، أريد إلغاء هذه الرحلة", "Attention": "انتباه", "Trip Cancelled. The cost of the trip will be deducted from your wallet.": - "تم إلغاء الرحلة. سيتم خصم تكلفة الرحلة من محفظتك.", + "تم إلغاء الرحلة. سيتم خصم تكلفتها من محفظتك.", "You will be charged for the cost of the driver coming to your location.": - "سيتم تحميلك تكلفة قدوم السائق إلى موقعك.", + "سيتم تحميلك تكلفة قدوم الكابتن إلى موقعك.", "reject your order.": "رفض طلبك.", "Order Under Review": "الطلب قيد المراجعة", "is reviewing your order. They may need more information or a higher price.": - "يقوم بمراجعة طلبك. قد يحتاج إلى مزيد من المعلومات أو سعر أعلى.", - "Increase Your Trip Fee (Optional)": "زيادة رسوم رحلتك (اختياري)", + "يقوم بمراجعة طلبك. قد يحتاج لمعلومات إضافية أو سعر أعلى.", "Vibration": "اهتزاز", "Resend code": "إعادة إرسال الرمز", "change device": "تغيير الجهاز", - "Device Change Detected": "تم اكتشاف تغيير الجهاز", + "Device Change Detected": "تم اكتشاف تغيير في الجهاز", "You can only use one device at a time. This device will now be set as your active device.": - "يمكنك استخدام جهاز واحد فقط في كل مرة. سيتم تعيين هذا الجهاز الآن كجهازك النشط.", - "Click here point": "انقر هنا", + "يمكنك استخدام جهاز واحد فقط في كل مرة. سيتم الآن تعيين هذا الجهاز كجهازك النشط.", + "Click here point": "اضغط هنا", "Are you want to change": "هل تريد التغيير؟", "by": "بواسطة", "Enter your complaint here": "أدخل شكواك هنا", "Please enter your complaint.": "الرجاء إدخال شكواك.", "Complaint data saved successfully": "تم حفظ بيانات الشكوى بنجاح", "Trip Monitor": "مراقبة الرحلة", - "Insert SOS Phone": "إدخال هاتف الطوارئ", - "Add SOS Phone": "إضافة هاتف الطوارئ", + "Insert SOS Phone": "إدخال رقم الطوارئ", + "Add SOS Phone": "إضافة رقم الطوارئ", "Dear ,\n\n 🚀 I have just started an exciting trip and I would like to share the details of my journey and my current location with you in real-time! Please download the Intaleq app. It will allow you to view my trip details and my latest location.\n\n 👉 Download link: \n Android [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\n iOS [https://getapp.cc/app/6458734951]\n\n I look forward to keeping you close during my adventure!\n\n Intaleq ,": - "عزيزي،\n\n🚀 لقد بدأت للتو رحلة مثيرة وأود مشاركة تفاصيل رحلتي وموقعي الحالي معك في الوقت الفعلي! يرجى تنزيل تطبيق Intaleq. سيسمح لك بمشاهدة تفاصيل رحلتي وموقعي الأخير.\n\n👉 رابط التحميل:\nAndroid [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\niOS [https://getapp.cc/app/6458734951]\n\nأتطلع إلى إبقائك قريبًا خلال مغامرتي!\n\nIntaleq،", - "Send Intaleq app to him": "إرسال تطبيق Intaleq إليه", + "عزيزي،\n\n🚀 لقد بدأت رحلة شيقة وأود أن أشاركك تفاصيلها وموقعي الحالي بشكل مباشر! حمّل تطبيق انطلق لتتمكن من متابعة تفاصيل رحلتي وآخر موقع لي.\n\n👈 رابط التحميل:\nأندرويد [https://play.google.com/store/apps/details?id=com.mobileapp.store.ride]\nآيفون [https://getapp.cc/app/6458734951]\n\nيسعدني أن تبقى على اطلاع بمغامرتي!\n\nانطلق،", + "Send Intaleq app to him": "أرسل له تطبيق انطلق", "No passenger found for the given phone number": - "لم يتم العثور على راكب لرقم الهاتف المحدد", + "لم يتم العثور على راكب بهذا الرقم", "No user found for the given phone number": - "لم يتم العثور على مستخدم لرقم الهاتف المحدد", + "لم يتم العثور على مستخدم بهذا الرقم", "This price is": "هذا السعر هو", - "Work": "عمل", - "Add Home": "إضافة منزل", + "Work": "العمل", + "Add Home": "إضافة المنزل", "Notifications": "الإشعارات", - "💳 Pay with Credit Card": "💳 الدفع ببطاقة الائتمان", - "⚠️ You need to choose an amount!": "⚠️ تحتاج إلى اختيار مبلغ!", + "💳 Pay with Credit Card": "💳 الدفع بالبطاقة الائتمانية", + "⚠️ You need to choose an amount!": "⚠️ يجب اختيار مبلغ!", "💰 Pay with Wallet": "💰 الدفع بالمحفظة", "You must restart the app to change the language.": "يجب إعادة تشغيل التطبيق لتغيير اللغة.", "joined": "انضم", - "Driver joined the channel": "انضم السائق إلى القناة", - "Driver left the channel": "غادر السائق القناة", + "Driver joined the channel": "الكابتن انضم إلى القناة", + "Driver left the channel": "الكابتن غادر القناة", "Call Page": "صفحة الاتصال", "Call Left": "مكالمات متبقية", - "\$ Next as Cash \$!": "!التالي نقدًا\$", + " Next as Cash !": " التالي كاش!", "To use Wallet charge it": "لاستخدام المحفظة، قم بشحنها", "We are searching for the nearest driver to you": - "نحن نبحث عن أقرب سائق لك", - "Best choice for cities": "أفضل خيار للمدن", + "نبحث لك عن أقرب كابتن", + "Best choice for cities": "الخيار الأفضل للمدن", "Rayeh Gai: Round trip service for convenient travel between cities, easy and reliable.": - "رايح جاي: خدمة الذهاب والعودة لرحلة مريحة بين المدن، سهلة وموثوقة.", - "Rayeh Gai": "رايح جاي", + "رايح جاي: خدمة ذهاب وإياب مريحة بين المدن، سهلة وموثوقة.", "This trip is for women only": "هذه الرحلة للنساء فقط", "Total budgets on month": "إجمالي الميزانية الشهرية", - "You have call from driver": "لديك مكالمة من السائق", - "Comfort": " مريحة", - "Intaleq": "Intaleq", + "You have call from driver": "لديك مكالمة من الكابتن", + "Intaleq": "انطلق", "passenger agreement": "اتفاقية الراكب", "To become a passenger, you must review and agree to the ": - "لتصبح راكبًا، يجب عليك مراجعة والموافقة على", + "لتصبح راكباً، يجب عليك مراجعة والموافقة على", "agreement subtitle": - "للمتابعة، يجب عليك مراجعة شروط الاستخدام وسياسة الخصوصية والموافقة عليها.", + "للمتابعة، يجب مراجعة شروط الاستخدام وسياسة الخصوصية والموافقة عليها.", "terms of use": "شروط الاستخدام", " and acknowledge our Privacy Policy.": "والإقرار بسياسة الخصوصية الخاصة بنا.", - "and acknowledge our": " والإقرار بـ ", + "and acknowledge our": "والإقرار بـ", "privacy policy": "سياسة الخصوصية.", "i agree": "أوافق على الشروط والأحكام", - "continue": "متابعة", "Driver already has 2 trips within the specified period.": - "لدى السائق بالفعل رحلتين خلال الفترة المحددة.", + "لدى الكابتن رحلتان بالفعل خلال الفترة المحددة.", "The invitation was sent successfully": "تم إرسال الدعوة بنجاح", - "Lady": "سيدة", "You should select your country": "يجب عليك اختيار بلدك", "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": "معلومات عنا", + "الكابتن بانتظارك في موقع الانطلاق.", + "About Us": "من نحن", "You can change the vibration feedback for all buttons": - "يمكنك تغيير ردود الاهتزاز لجميع الأزرار", - "Most Secure Methods": "أكثر الطرق أمانًا", - "In-App VOIP Calls": "مكالمات VOIP داخل التطبيق", + "يمكنك تغيير استجابة الاهتزاز لجميع الأزرار", + "Most Secure Methods": "أكثر الطرق أماناً", + "In-App VOIP Calls": "مكالمات صوتية داخل التطبيق", "Recorded Trips for Safety": "رحلات مسجلة للأمان", "\nWe also prioritize affordability, offering competitive pricing to make your rides accessible.": - "\nنحن نولي أيضًا القدرة على تحمل التكاليف أولوية، ونقدم أسعارًا تنافسية لجعل رحلاتك في متناول الجميع.", + "\nنهتم أيضاً بأن تكون الأسعار مناسبة للجميع، حيث نقدم أسعاراً تنافسية لجعل رحلاتك في متناول اليد.", "Intaleq 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:": - "Intaleq هو تطبيق لمشاركة الرحلات مصمم مع مراعاة سلامتك وقدرتك على تحمل التكاليف. نحن نوصلك بسائقين موثوقين في منطقتك، مما يضمن تجربة سفر مريحة وخالية من التوتر.\n\nإليك بعض الميزات الرئيسية التي تميزنا:", - "Sign In by Apple": "تسجيل الدخول باستخدام Apple", - "Sign In by Google": "تسجيل الدخول باستخدام Google", - "How do I request a ride?": "كيف يمكنني طلب رحلة؟", + "انطلق هو تطبيق لمشاركة الرحلات مصمم مع الأخذ بعين الاعتبار سلامتك وميزانيتك. نصلك بكباتن موثوقين في منطقتك، لنضمن لك تجربة تنقل مريحة وخالية من التوتر.\n\nإليك بعض الميزات الرئيسية التي تميزنا:", + "Sign In by Apple": "الدخول عبر Apple", + "Sign In by Google": "الدخول عبر Google", + "How do I request a ride?": "كيف أطلب رحلة؟", "Step-by-step instructions on how to request a ride through the Intaleq app.": - "تعليمات خطوة بخطوة حول كيفية طلب رحلة من خلال تطبيق Intaleq.", - "What types of vehicles are available?": "ما أنواع المركبات المتاحة؟", + "تعليمات مفصلة خطوة بخطوة حول كيفية طلب رحلة عبر تطبيق انطلق.", + "What types of vehicles are available?": + "ما هي أنواع السيارات المتاحة؟", "Intaleq offers a variety of vehicle options to suit your needs, including economy, comfort, and luxury. Choose the option that best fits your budget and passenger count.": - "يقدم Intaleq مجموعة متنوعة من خيارات المركبات لتلبية احتياجاتك، بما في ذلك الاقتصادية والراحة والفاخرة. اختر الخيار الذي يناسب ميزانيتك وعدد الركاب.", - "How can I pay for my ride?": "كيف يمكنني الدفع مقابل رحلتي؟", + "يوفر انطلق مجموعة متنوعة من خيارات السيارات لتناسب احتياجاتك، بما في ذلك الاقتصادية، والمريحة، والفاخرة. اختر الخيار الذي يناسب ميزانيتك وعدد الركاب.", + "How can I pay for my ride?": "كيف يمكنني الدفع لرحلتي؟", "Intaleq offers multiple payment methods for your convenience. Choose between cash payment or credit/debit card payment during ride confirmation.": - "يقدم Intaleq طرق دفع متعددة لراحتك. اختر بين الدفع نقدًا أو ببطاقة الائتمان/الخصم أثناء تأكيد الرحلة.", + "يوفر انطلق طرق دفع متعددة لراحتك. اختر بين الدفع نقداً أو ببطاقة الائتمان/الخصم عند تأكيد الرحلة.", "Can I cancel my ride?": "هل يمكنني إلغاء رحلتي؟", "Yes, you can cancel your ride under certain conditions (e.g., before driver is assigned). See the Intaleq cancellation policy for details.": - "نعم، يمكنك إلغاء رحلتك تحت ظروف معينة (مثلًا، قبل تعيين السائق). راجع سياسة إلغاء Intaleq للحصول على التفاصيل.", - "Driver Registration & Requirements": "تسجيل السائق والمتطلبات", - "How can I register as a driver?": "كيف يمكنني التسجيل كسائق؟", + "نعم، يمكنك إلغاء رحلتك بشروط معينة (مثلاً، قبل تعيين الكابتن). راجع سياسة الإلغاء في انطلق لمعرفة التفاصيل.", + "Driver Registration & Requirements": "تسجيل الكباتن والمتطلبات", + "How can I register as a driver?": "كيف يمكنني التسجيل ككابتن؟", "What are the requirements to become a driver?": - "ما هي متطلبات أن تصبح سائقًا؟", + "ما هي متطلبات الانضمام ككابتن؟", "Visit our website or contact Intaleq support for information on driver registration and requirements.": - "قم بزيارة موقعنا على الإنترنت أو اتصل بدعم Intaleq للحصول على معلومات حول تسجيل السائق والمتطلبات.", + "لمعلومات حول التسجيل والمتطلبات، تفضل بزيارة موقعنا الإلكتروني أو تواصل مع دعم انطلق.", "Intaleq provides in-app chat functionality to allow you to communicate with your driver or passenger during your ride.": - "يوفر Intaleq وظيفة الدردشة داخل التطبيق للسماح لك بالتواصل مع سائقك أو راكبك أثناء رحلتك.", + "يوفر انطلق ميزة الدردشة داخل التطبيق للتواصل مع الكابتن أو الراكب أثناء الرحلة.", "Intaleq prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.": - "Intaleq يعطي الأولوية لسلامتك. نحن نقدم ميزات مثل التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال في حالات الطوارئ.", - "Frequently Questions": "أسئلة متكررة", + "سلامتك أولويتنا في انطلق. نوفر ميزات مثل التحقق من الكابتن، تتبع الرحلة داخل التطبيق، وخيارات الاتصال بالطوارئ.", + "Frequently Questions": "الأسئلة الشائعة", "User does not exist.": "المستخدم غير موجود.", "We need your phone number to contact you and to help you.": - "نحتاج إلى رقم هاتفك للاتصال بك ومساعدتك.", - "You will recieve code in sms message": - "سوف تتلقى رمزًا في رسالة SMS", + "نحتاج رقم هاتفك لنتواصل معك ونساعدك.", + "You will recieve code in sms message": "ستتلقى رمزاً في رسالة نصية", "Please enter": "الرجاء إدخال", "We need your phone number to contact you and to help you receive orders.": - "نحتاج إلى رقم هاتفك للاتصال بك ومساعدتك في استلام الطلبات.", + "نحتاج رقم هاتفك لنتواصل معك ولمساعدتك في استقبال الطلبات.", "The full name on your criminal record does not match the one on your driver's license. Please verify and provide the correct documents.": - "الاسم الكامل في سجلك الجنائي لا يتطابق مع الاسم الموجود في رخصة القيادة الخاصة بك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "الاسم الكامل في وثيقة لا حكم عليه لا يطابق الاسم في رخصة القيادة. الرجاء التحقق وتقديم المستندات الصحيحة.", "The national number on your driver's license does not match the one on your ID document. Please verify and provide the correct documents.": - "الرقم الوطني على رخصة القيادة الخاصة بك لا يتطابق مع الرقم الموجود على وثيقة هويتك. يرجى التحقق وتقديم الوثائق الصحيحة.", + "الرقم الوطني في رخصة القيادة لا يطابق الرقم في هويتك. الرجاء التحقق وتقديم المستندات الصحيحة.", "Capture an Image of Your Criminal Record": - "التقاط صورة لسجلك الجنائي", + "التقط صورة لوثيقة لا حكم عليه", "IssueDate": "تاريخ الإصدار", "Capture an Image of Your car license front": - "التقاط صورة للوجه الأمامي لرخصة سيارتك", + "التقط صورة للوجه الأمامي لرخصة سيارتك", "Capture an Image of Your ID Document front": - "التقاط صورة للوجه الأمامي لوثيقة هويتك", - "NationalID": "الرقم القومي", + "التقط صورة للوجه الأمامي لهويتك", + "NationalID": "الرقم الوطني", "You can share the Intaleq App with your friends and earn rewards for rides they take using your code": - "يمكنك مشاركة تطبيق Intaleq مع أصدقائك وكسب مكافآت عن الرحلات التي يقومون بها باستخدام رمزك.", + "يمكنك مشاركة تطبيق انطلق مع أصدقائك وكسب مكافآت على الرحلات التي يقومون بها باستخدام رمزك.", "FullName": "الاسم الكامل", "No invitation found yet!": "لم يتم العثور على دعوات بعد!", "InspectionResult": "نتيجة الفحص", - "Criminal Record": "السجل الجنائي", - "Share App": "مشاركة التطبيق", + "Criminal Record": "لا حكم عليه", "The email or phone number is already registered.": - "البريد الإلكتروني أو رقم الهاتف مسجل بالفعل.", + "البريد الإلكتروني أو رقم الهاتف مسجل مسبقاً.", "To become a ride-sharing driver on the Intaleq 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 Intaleq app. Please note, submitting fraudulent documents is a serious offense and may result in immediate termination and legal consequences.": - "لتصبح سائق مشاركة رحلات على تطبيق Intaleq، تحتاج إلى تحميل رخصة القيادة الخاصة بك، وثيقة الهوية، ووثيقة تسجيل السيارة. سيقوم نظام الذكاء الاصطناعي الخاص بنا بمراجعة وتأكيد صحتها على الفور في غضون 2-3 دقائق فقط. إذا تمت الموافقة على وثائقك، يمكنك البدء في العمل كسائق على تطبيق Intaleq. يرجى ملاحظة أن تقديم وثائق مزورة جريمة خطيرة وقد يؤدي إلى إنهاء فوري وعواقب قانونية.", + "لتصبح كابتن في تطبيق انطلق، يجب عليك رفع رخصة القيادة، الهوية الشخصية، ورخصة السيارة. سيقوم نظام الذكاء الاصطناعي لدينا بمراجعة وثائقك والتحقق من صحتها خلال 2-3 دقائق. في حال الموافقة، يمكنك البدء بالعمل مباشرة. يرجى العلم أن تقديم وثائق مزورة يعتبر مخالفة خطيرة وقد يؤدي إلى إنهاء حسابك وملاحقات قانونية.", "Documents check": "فحص الوثائق", "Driver's License": "رخصة القيادة", "for your first registration!": "لتسجيلك الأول!", "Get it Now!": "احصل عليه الآن!", "before": "قبل", - "Code not approved": "الرمز غير معتمد", - "3000 LE": "3000 جنيه", + "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:": "قم بتثبيت تطبيقنا:", + "Code approved": "تم قبول الرمز", + "Install our app:": "حمّل تطبيقنا:", "Invite another driver and both get a gift after he completes 100 trips!": - "ادعُ سائقًا آخر واحصلا على هدية بعد إكماله 100 رحلة!", + "ادعُ كابتن آخر واحصلوا على هدية بعد إكماله 100 رحلة!", "Invite": "دعوة", "Are you sure?": "هل أنت متأكد؟", "This will delete all recorded files from your device.": "سيؤدي هذا إلى حذف جميع الملفات المسجلة من جهازك.", - "Select a file": "اختر ملفًا", - "Select a File": "اختر ملفًا", + "Select a file": "اختر ملفاً", + "Select a File": "اختر ملفاً", "Delete": "حذف", - "attach audio of complain": "إرفاق صوت للشكوى", - "Phone Number Check": "فحص رقم الهاتف", - "Drivers received orders": "استلم السائقون الطلبات", + "attach audio of complain": "إرفاق تسجيل صوتي للشكوى", + "Phone Number Check": "التحقق من رقم الهاتف", + "Drivers received orders": "الكباتن استلموا الطلبات", "No audio files recorded.": "لا توجد ملفات صوتية مسجلة.", "This is for delivery or a motorcycle.": - "هذا للتوصيل أو للدراجة النارية.", - "Intaleq Reminder": "تذكير Intaleq", - "It's time to check the Intaleq app!": - "حان الوقت للتحقق من تطبيق Intaleq!", - "you must insert token code": "يجب عليك إدخال رمز الرمز المميز", + "هذا لطلبات التوصيل أو الدراجات النارية.", + "Intaleq Reminder": "تذكير من انطلق", + "It's time to check the Intaleq app!": "حان وقت تفقد تطبيق انطلق!", + "you must insert token code": "يجب إدخال الرمز", "Something went wrong. Please try again.": - "حدث خطأ ما. يرجى المحاولة مرة أخرى.", + "حدث خطأ ما. الرجاء المحاولة مرة أخرى.", "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": "السعر", + "لا توجد تفاصيل كافية عن الشكوى لتقديم حل. يرجى تزويدنا بالمعلومات اللازمة، وسنسعد بمساعدتك.", + "Submit Your Complaint": "قدّم شكواك", "Status": "الحالة", "Choose from contact": "اختر من جهات الاتصال", - "attach correct audio": "إرفاق صوت صحيح", - "be sure": "كن متأكدًا", - "Audio uploaded successfully.": "تم تحميل الصوت بنجاح.", + "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": "اكتمل، يمكنك المطالبة بهديتك", + "شارك هذا الرمز مع أصدقائك واحصل على مكافآت عند استخدامه!", + "Enter phone": "أدخل الرقم", + "complete, you can claim your gift": "اكتمل، يمكنك طلب هديتك", "When": "عندما", - "Enter driver's phone": "أدخل هاتف السائق", + "Enter driver's phone": "أدخل رقم الكابتن", "Send Invite": "إرسال دعوة", "Show Invitations": "عرض الدعوات", "License Type": "نوع الرخصة", "National Number": "الرقم الوطني", - "Name (Arabic)": "الاسم (عربي)", - "Name (English)": "الاسم (إنجليزي)", + "Name (Arabic)": "الاسم (بالعربية)", + "Name (English)": "الاسم (بالإنكليزية)", "Address": "العنوان", "Issue Date": "تاريخ الإصدار", "Expiry Date": "تاريخ الانتهاء", "License Categories": "فئات الرخصة", "driver_license": "رخصة القيادة", - "Capture an Image of Your Driver License": - "التقاط صورة لرخصة القيادة الخاصة بك", - "ID Documents Back": "الوجه الخلفي لوثائق الهوية", - "National ID": "الهوية الوطنية", + "Capture an Image of Your Driver License": "التقط صورة لرخصة قيادتك", + "ID Documents Back": "الوجه الخلفي للهوية", + "National ID": "الرقم الوطني", "Occupation": "المهنة", - "Gender": "الجنس", "Religion": "الدين", - "Marital Status": "الحالة الاجتماعية", "Full Name (Marital)": "الاسم الكامل (حسب الحالة الاجتماعية)", "Expiration Date": "تاريخ الانتهاء", "Capture an Image of Your ID Document Back": - "التقاط صورة للوجه الخلفي لوثيقة هويتك", - "ID Documents Front": "الوجه الأمامي لوثائق الهوية", + "التقط صورة للوجه الخلفي لهويتك", + "ID Documents Front": "الوجه الأمامي للهوية", "First Name": "الاسم الأول", "CardID": "رقم البطاقة", - "Vehicle Details Front": "تفاصيل المركبة (الوجه الأمامي)", + "Vehicle Details Front": "تفاصيل المركبة (الأمام)", "Plate Number": "رقم اللوحة", "Owner Name": "اسم المالك", - "Vehicle Details Back": "تفاصيل المركبة (الوجه الخلفي)", - "Make": "الصنع", + "Vehicle Details Back": "تفاصيل المركبة (الخلف)", + "Make": "الشركة المصنعة", "Model": "الموديل", - "Year": "السنة", - "Chassis": "الشاسيه", + "Year": "سنة الصنع", + "Chassis": "رقم الشاسيه", "Color": "اللون", - "Displacement": "السعة", - "Fuel": "الوقود", + "Displacement": "سعة المحرك", + "Fuel": "نوع الوقود", "Tax Expiry Date": "تاريخ انتهاء الضريبة", "Inspection Date": "تاريخ الفحص", "Capture an Image of Your car license back": - "التقاط صورة للوجه الخلفي لرخصة سيارتك", + "التقط صورة للوجه الخلفي لرخصة سيارتك", "Capture an Image of Your Driver's License": - "التقاط صورة لرخصة القيادة الخاصة بك", + "التقط صورة لرخصة قيادتك", "Sign in with Google for easier email and name entry": - "تسجيل الدخول باستخدام Google لتسهيل إدخال البريد الإلكتروني والاسم", + "سجل الدخول عبر جوجل لتسهيل إدخال الاسم والبريد الإلكتروني", "You will choose allow all the time to be ready receive orders": - "ستختار السماح طوال الوقت لتكون جاهزًا لاستلام الطلبات", - "Welcome to Intaleq!": "مرحبًا بكم في Intaleq!", + "اختر 'السماح طوال الوقت' لتكون جاهزاً لاستقبال الطلبات", "Get to your destination quickly and easily.": - "الوصول إلى وجهتك بسرعة وسهولة.", + "صل إلى وجهتك بسرعة وسهولة.", "Enjoy a safe and comfortable ride.": "استمتع برحلة آمنة ومريحة.", "Choose Language": "اختر اللغة", - "Login": "تسجيل الدخول", "Pay with Wallet": "الدفع بالمحفظة", - "Invalid MPIN": "MPIN غير صالح", - "Invalid OTP": "OTP غير صالح", - "Enter your email address": "أدخل عنوان بريدك الإلكتروني", + "Invalid MPIN": "رمز MPIN غير صالح", + "Invalid OTP": "رمز التحقق غير صالح", + "Enter your email address": "أدخل بريدك الإلكتروني", "Please enter Your Email.": "الرجاء إدخال بريدك الإلكتروني.", "Enter your phone number": "أدخل رقم هاتفك", "Please enter your phone number.": "الرجاء إدخال رقم هاتفك.", - "Please enter Your Password.": "الرجاء إدخال كلمة المرور الخاصة بك.", + "Please enter Your Password.": "الرجاء إدخال كلمة المرور.", "if you dont have account": "إذا لم يكن لديك حساب", "Register": "تسجيل", "Accept Ride's Terms & Review Privacy Notice": - "قبول شروط الرحلة ومراجعة إشعار الخصوصية", + "قبول شروط الرحلة ومراجعة بيان الخصوصية", "By selecting 'I Agree' below, I have reviewed and agree to the Terms of Use and acknowledge the Privacy Notice. I am at least 18 years of age.": - "بالنقر على 'أوافق' أدناه، أكدت أنني قد راجعت وأوافق على شروط الاستخدام وأعترف بإشعار الخصوصية. أنا عمري 18 سنة على الأقل.", - "I Agree": "أوافق", + "باختياري 'أوافق' أدناه، أكون قد راجعت ووافقت على شروط الاستخدام وأقررت ببيان الخصوصية. وعمري لا يقل عن 18 عاماً.", "First name": "الاسم الأول", "Enter your first name": "أدخل اسمك الأول", "Please enter your first name.": "الرجاء إدخال اسمك الأول.", @@ -641,94 +728,93 @@ class MyTranslation extends Translations { "Please enter your last name.": "الرجاء إدخال اسمك الأخير.", "City": "المدينة", "Please enter your City.": "الرجاء إدخال مدينتك.", - "Male": "ذكر", - "Female": "أنثى", "Verify Email": "التحقق من البريد الإلكتروني", "We sent 5 digit to your Email provided": - "أرسلنا 5 أرقام إلى بريدك الإلكتروني المقدم", + "أرسلنا رمزاً من 5 أرقام إلى بريدك الإلكتروني", "5 digit": "5 أرقام", "Send Verification Code": "إرسال رمز التحقق", "Your Ride Duration is ": "مدة رحلتك هي ", - "You will be thier in": "ستكون هناك في", + "You will be thier in": "ستصل خلال", "You trip distance is": "مسافة رحلتك هي", - "Fee is": "الرسوم هي", + "Fee is": "الأجرة هي", "From : ": "من: ", "To : ": "إلى: ", - "Add Promo": "إضافة عرض ترويجي", + "Add Promo": "إضافة عرض", "Confirm Selection": "تأكيد الاختيار", "distance is": "المسافة هي", - "Intaleq LLC": "شركة Intaleq", - "Egypt's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": - "خدمة مشاركة الرحلات الرائدة في مصر، تم تطويرها بفخر من قبل مالكين عرب ومحليين. نولي الأولوية لكوننا قريبين منك - سواء كنت راكبًا عزيزًا أو كابتنًا مخلصًا.", - "Why Choose Intaleq?": "لماذا تختار Intaleq؟", + "Privacy Policy": "سياسة الخصوصية", + "Intaleq LLC": "شركة انطلق", + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.": + "خدمة مشاركة الرحلات الرائدة في سوريا، تم تطويرها بفخر من قبل ملاك عرب ومحليين. أولويتنا هي أن نكون بالقرب منك - ركابنا الكرام وكباتننا المتفانين.", + "Intaleq is the first ride-sharing app in Syria, designed to connect you with the nearest drivers for a quick and convenient travel experience.": + "انطلق هو أول تطبيق لمشاركة الرحلات في سوريا، مصمم ليوصلك بأقرب الكباتن لتجربة تنقل سريعة ومريحة.", + "Why Choose Intaleq?": "لماذا تختار انطلق؟", "Closest to You": "الأقرب إليك", "We connect you with the nearest drivers for faster pickups and quicker journeys.": - "نحن نوصلك بأقرب السائقين لعمليات استلام أسرع ورحلات أسرع.", + "نوصلك بأقرب الكباتن لوصول أسرع ورحلات أسرع.", "Uncompromising Security": "أمان لا هوادة فيه", - "Lady Captains Available": "كابتنات سيدات متاحات", + "Lady Captains Available": "كباتن سيدات متاحات", "Recorded Trips (Voice & AI Analysis)": "رحلات مسجلة (تحليل صوتي وذكاء اصطناعي)", "Fastest Complaint Response": "أسرع استجابة للشكاوى", "Our dedicated customer service team ensures swift resolution of any issues.": - "يضمن فريق خدمة العملاء المخصص لدينا حلًا سريعًا لأي مشكلات.", - "Affordable for Everyone": "بأسعار معقولة للجميع", - "Frequently Asked Questions": "أسئلة شائعة", - "Getting Started": "البدء", + "فريق خدمة العملاء لدينا يضمن حلاً سريعاً لأي مشكلة.", + "Affordable for Everyone": "أسعار مناسبة للجميع", + "Frequently Asked Questions": "الأسئلة المتكررة", + "Getting Started": "البداية", "Simply open the Intaleq app, enter your destination, and tap \"Request Ride\". The app will connect you with a nearby driver.": - "ببساطة افتح تطبيق Intaleq، أدخل وجهتك، واضغط على \"طلب رحلة\". سيتصل التطبيق بسائق قريب.", + "ببساطة افتح تطبيق انطلق، أدخل وجهتك، واضغط \"اطلب رحلة\". سيقوم التطبيق بتوصيلك بكابتن قريب.", "Vehicle Options": "خيارات المركبات", "Intaleq offers a variety of options including Economy, Comfort, and Luxury to suit your needs and budget.": - "يقدم Intaleq مجموعة متنوعة من الخيارات بما في ذلك الاقتصادية والراحة والفاخرة لتلبية احتياجاتك وميزانيتك.", - "Payments": "المدفوعات", + "يقدم انطلق خيارات متنوعة تشمل الاقتصادية، والمريحة، والفاخرة لتناسب احتياجاتك وميزانيتك.", + "Payments": "الدفع", "You can pay for your ride using cash or credit/debit card. You can select your preferred payment method before confirming your ride.": - "يمكنك الدفع مقابل رحلتك نقدًا أو ببطاقة الائتمان/الخصم. يمكنك اختيار طريقة الدفع المفضلة لديك قبل تأكيد رحلتك.", + "يمكنك الدفع لرحلتك نقداً أو ببطاقة الائتمان/الخصم. اختر طريقة الدفع المفضلة لديك قبل تأكيد الرحلة.", "Ride Management": "إدارة الرحلات", "Yes, you can cancel your ride, but please note that cancellation fees may apply depending on how far in advance you cancel.": - "نعم، يمكنك إلغاء رحلتك، ولكن يرجى ملاحظة أن رسوم الإلغاء قد تنطبق اعتمادًا على مدى تقدمك في الإلغاء.", - "For Drivers": "للسائقين", - "Driver Registration": "تسجيل السائق", + "نعم، يمكنك إلغاء رحلتك، ولكن قد يتم تطبيق رسوم إلغاء حسب توقيت الإلغاء.", + "For Drivers": "للكباتن", + "Driver Registration": "تسجيل الكابتن", "To register as a driver or learn about the requirements, please visit our website or contact Intaleq support directly.": - "لتسجيل كسائق أو معرفة المتطلبات، يرجى زيارة موقعنا على الإنترنت أو الاتصال بدعم Intaleq مباشرة.", - "Visit Website/Contact Support": "زيارة الموقع/الاتصال بالدعم", + "للتسجيل ككابتن أو لمعرفة المتطلبات، يرجى زيارة موقعنا أو التواصل مع دعم انطلق مباشرة.", + "Visit Website/Contact Support": "زيارة الموقع / التواصل مع الدعم", "Close": "إغلاق", - "We are searching for the nearest driver": "نحن نبحث عن أقرب سائق", - "Communication": "الاتصال", + "We are searching for the nearest driver": "نبحث عن أقرب كابتن", + "Communication": "التواصل", "How do I communicate with the other party (passenger/driver)?": - "كيف يمكنني التواصل مع الطرف الآخر (الراكب/السائق)؟", + "كيف أتواصل مع الطرف الآخر (الراكب/الكابتن)؟", "You can communicate with your driver or passenger through the in-app chat feature once a ride is confirmed.": - "يمكنك التواصل مع سائقك أو راكبك من خلال ميزة الدردشة داخل التطبيق بمجرد تأكيد الرحلة.", + "يمكنك التواصل مع الكابتن أو الراكب عبر ميزة الدردشة داخل التطبيق بعد تأكيد الرحلة.", "Safety & Security": "السلامة والأمان", "What safety measures does Intaleq offer?": - "ما هي إجراءات السلامة التي يقدمها Intaleq؟", + "ما هي إجراءات السلامة التي يوفرها انطلق؟", "Intaleq offers various safety features including driver verification, in-app trip tracking, emergency contact options, and the ability to share your trip status with trusted contacts.": - "يقدم Intaleq ميزات أمان متنوعة بما في ذلك التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال في حالات الطوارئ، والقدرة على مشاركة حالة رحلتك مع جهات اتصال موثوقة.", + "يوفر انطلق ميزات أمان متنوعة تشمل التحقق من الكابتن، تتبع الرحلة داخل التطبيق، خيارات الاتصال بالطوارئ، وإمكانية مشاركة حالة رحلتك مع جهات اتصال موثوقة.", "Enjoy competitive prices across all trip options, making travel accessible.": - "استمتع بأسعار تنافسية عبر جميع خيارات الرحلات، مما يجعل السفر في متناول الجميع.", + "استمتع بأسعار تنافسية لجميع خيارات الرحلات، مما يجعل التنقل في متناول الجميع.", "Variety of Trip Choices": "تنوع خيارات الرحلات", "Choose the trip option that perfectly suits your needs and preferences.": - "اختر خيار الرحلة الذي يناسب احتياجاتك وتفضيلاتك تمامًا.", - "Your Choice, Our Priority": "اختيارك هو أولويتنا", + "اختر خيار الرحلة الذي يناسب احتياجاتك ورغباتك تماماً.", + "Your Choice, Our Priority": "اختيارك أولويتنا", "Because we are near, you have the flexibility to choose the ride that works best for you.": - "لأننا قريبون، لديك المرونة لاختيار الرحلة التي تناسبك أفضل.", + "لأننا قريبون، لديك المرونة لاختيار الرحلة الأنسب لك.", "duration is": "المدة هي", "Setting": "الإعدادات", "Find answers to common questions": "ابحث عن إجابات للأسئلة الشائعة", - "I don't need a ride anymore": "لم أعد بحاجة إلى رحلة", + "I don't need a ride anymore": "لم أعد بحاجة لرحلة", "I was just trying the application": "كنت أجرب التطبيق فقط", - "No driver accepted my request": "لم يقبل أي سائق طلبي", + "No driver accepted my request": "لم يوافق أي كابتن على طلبي", "I added the wrong pick-up/drop-off location": - "أضفت موقع الاستلام/التوصيل الخاطئ", + "أضفت موقع انطلاق/وصول خاطئ", "I don't have a reason": "ليس لدي سبب", - "Other": "أخرى", "Can we know why you want to cancel Ride ?": "هل يمكننا معرفة سبب رغبتك في إلغاء الرحلة؟", "Cancel Ride": "إلغاء الرحلة", "Add Payment Method": "إضافة طريقة دفع", - "Your Wallet balance is ": "رصيد محفظتك هو ", "Ride Wallet": "محفظة الرحلة", "Payment Method": "طريقة الدفع", - "Type here Place": "اكتب هنا المكان", - "Are You sure to ride to": "هل أنت متأكد من الركوب إلى", + "Type here Place": "اكتب المكان هنا", + "Are You sure to ride to": "هل أنت متأكد من الذهاب إلى", "Confirm": "تأكيد", "You are Delete": "أنت تحذف", "Deleted": "تم الحذف", @@ -736,451 +822,423 @@ class MyTranslation extends Translations { "From : Current Location": "من: الموقع الحالي", "My Cared": "بطاقاتي", "Add Card": "إضافة بطاقة", - "Add Credit Card": "إضافة بطاقة ائتمان", - "Please enter the cardholder name": "الرجاء إدخال اسم حامل البطاقة", - "Please enter the expiry date": "الرجاء إدخال تاريخ الانتهاء", + "Add Credit Card": "إضافة بطاقة ائتمانية", + "Please enter the cardholder name": "الرجاء إدخال اسم صاحب البطاقة", + "Please enter the expiry date": "الرجاء إدخال تاريخ انتهاء الصلاحية", "Please enter the CVV code": "الرجاء إدخال رمز CVV", "Go To Favorite Places": "الذهاب إلى الأماكن المفضلة", - "Go to this Target": "الذهاب إلى هذا الهدف", + "Go to this Target": "اذهب إلى هذه الوجهة", "My Profile": "ملفي الشخصي", - "Sign Out": "تسجيل الخروج", "Are you want to go to this site": "هل تريد الذهاب إلى هذا الموقع؟", "MyLocation": "موقعي", "my location": "موقعي", - "Target": "هدف", - "Update": "تحديث", - "You Should choose rate figure": "يجب عليك اختيار رقم التقييم", + "Target": "الوجهة", + "You Should choose rate figure": "يجب عليك اختيار تقييم", "Login Captin": "تسجيل دخول الكابتن", - "Register Captin": "تسجيل الكابتن", + "Register Captin": "تسجيل كابتن", "Send Verfication Code": "إرسال رمز التحقق", "KM": "كم", "End Ride": "إنهاء الرحلة", "Minute": "دقيقة", "Go to passenger Location now": "اذهب إلى موقع الراكب الآن", - "Duration of the Ride is ": "مدة الرحلة هي ", - "Distance of the Ride is ": "مسافة الرحلة هي ", - "Name of the Passenger is ": "اسم الراكب هو ", - "Hello this is Captain": "مرحبًا، هذا الكابتن", - "Start the Ride": "بدء الرحلة", + "Duration of the Ride is ": "مدة الرحلة ", + "Distance of the Ride is ": "مسافة الرحلة ", + "Name of the Passenger is ": "اسم الراكب ", + "Hello this is Captain": "مرحباً، معك الكابتن", + "Start the Ride": "ابدأ الرحلة", "Please Wait If passenger want To Cancel!": - "الرجاء الانتظار إذا أراد الراكب الإلغاء!", + "الرجاء الانتظار في حال أراد الراكب الإلغاء!", "Total Duration:": "المدة الإجمالية:", "Active Duration:": "المدة النشطة:", - "Waiting for Captin ...": "في انتظار الكابتن ...", - "Age is ": "العمر هو ", - "Rating is ": "التقييم هو ", + "Waiting for Captin ...": "بانتظار الكابتن...", + "Age is ": "العمر: ", + "Rating is ": "التقييم: ", " to arrive you.": "للوصول إليك.", - "Tariff": "التعريفة", + "Tariff": "التعرفة", "Settings": "الإعدادات", - "Feed Back": "ردود الفعل", + "Feed Back": "التقييمات", "Please enter a valid 16-digit card number": - "الرجاء إدخال رقم بطاقة صالح مكون من 16 رقمًا", - "Add Phone": "إضافة هاتف", + "الرجاء إدخال رقم بطاقة صالح مكون من 16 رقماً", + "Add Phone": "إضافة رقم", "Please enter a phone number": "الرجاء إدخال رقم هاتف", - "You dont Add Emergency Phone Yet!": - "لم تقم بإضافة هاتف الطوارئ بعد!", + "You dont Add Emergency Phone Yet!": "لم تقم بإضافة رقم طوارئ بعد!", "You will arrive to your destination after ": "ستصل إلى وجهتك بعد ", "You can cancel Ride now": "يمكنك إلغاء الرحلة الآن", "You Can cancel Ride After Captain did not come in the time": - "يمكنك إلغاء الرحلة بعد أن لم يأت الكابتن في الوقت المحدد", + "يمكنك إلغاء الرحلة إذا لم يأتِ الكابتن في الوقت المحدد", "If you in Car Now. Press Start The Ride": - "إذا كنت في السيارة الآن. اضغط على بدء الرحلة", - "You Dont Have Any amount in": "ليس لديك أي مبلغ في", + "إذا كنت في السيارة الآن، اضغط على 'ابدأ الرحلة'", + "You Dont Have Any amount in": "ليس لديك أي رصيد في", "Wallet!": "المحفظة!", "You Have": "لديك", - "Save Credit Card": "حفظ بطاقة الائتمان", - "Show Promos": "عرض العروض الترويجية", + "Save Credit Card": "حفظ البطاقة الائتمانية", + "Show Promos": "عرض العروض", "10 and get 4% discount": "10 واحصل على خصم 4%", "20 and get 6% discount": "20 واحصل على خصم 6%", "40 and get 8% discount": "40 واحصل على خصم 8%", "100 and get 11% discount": "100 واحصل على خصم 11%", - "Pay with Your PayPal": "الدفع باستخدام PayPal", - "You will choose one of above !": "ستختار أحد الخيارات أعلاه!", - "Delete My Account": "حذف حسابي", + "Pay with Your PayPal": "ادفع عبر PayPal", + "You will choose one of above !": "اختر أحد الخيارات أعلاه!", "Edit Profile": "تعديل الملف الشخصي", - "Name": "الاسم", - "Update Gender": "تحديث الجنس", - "Education": "التعليم", - "Update Education": "تحديث التعليم", - "Employment Type": "نوع التوظيف", - "SOS Phone": "هاتف الطوارئ", - "High School Diploma": "دبلوم المدرسة الثانوية", - "Associate Degree": "درجة الزمالة", - "Bachelor's Degree": "درجة البكالوريوس", - "Master's Degree": "درجة الماجستير", - "Doctoral Degree": "درجة الدكتوراه", "Copy this Promo to use it in your Ride!": - "انسخ هذا العرض الترويجي لاستخدامه في رحلتك!", + "انسخ هذا العرض واستخدمه في رحلتك!", "To change some Settings": "لتغيير بعض الإعدادات", - "Order Request Page": "صفحة طلب الطلب", - "Rouats of Trip": "طرق الرحلة", - "Passenger Name is ": "اسم الراكب هو ", - "Total From Passenger is ": "المجموع من الراكب هو ", - "Duration To Passenger is ": "المدة للراكب هي ", - "Distance To Passenger is ": "المسافة للراكب هي ", - "Total For You is ": "المجموع لك هو ", - "Distance is ": "المسافة هي ", + "Order Request Page": "صفحة طلب الرحلة", + "Rouats of Trip": "مسارات الرحلة", + "Passenger Name is ": "اسم الراكب: ", + "Total From Passenger is ": "الإجمالي من الراكب: ", + "Duration To Passenger is ": "المدة للوصول للراكب: ", + "Distance To Passenger is ": "المسافة للوصول للراكب: ", + "Total For You is ": "الإجمالي لك: ", + "Distance is ": "المسافة: ", " KM": " كم", - "Duration of Trip is ": "مدة الرحلة هي ", + "Duration of Trip is ": "مدة الرحلة: ", " Minutes": " دقائق", - "Apply Order": "تطبيق الطلب", + "Apply Order": "قبول الطلب", "Refuse Order": "رفض الطلب", "Rate Captain": "تقييم الكابتن", "Enter your Note": "أدخل ملاحظتك", - "Type something...": "اكتب شيئًا...", + "Type something...": "اكتب شيئاً...", "Submit rating": "إرسال التقييم", "Rate Passenger": "تقييم الراكب", "Ride Summary": "ملخص الرحلة", - "welcome_message": "مرحبًا بك في Intaleq!", + "welcome_message": "أهلاً بك في انطلق!", "app_description": - "Intaleq هو تطبيق مشاركة ركوب موثوق وآمن وسهل الوصول إليه.", - "get_to_destination": "اذهب إلى وجهتك بسرعة وسهولة.", - "get_a_ride": "مع Intaleq، يمكنك الحصول على رحلة إلى وجهتك في دقائق.", + "انطلق هو تطبيق لمشاركة الرحلات، موثوق، آمن، وفي متناول اليد.", + "get_to_destination": "صل إلى وجهتك بسرعة وسهولة.", + "get_a_ride": "مع انطلق، يمكنك الحصول على توصيلة لوجهتك في دقائق.", "safe_and_comfortable": "استمتع برحلة آمنة ومريحة.", "committed_to_safety": - "Intaleq ملتزمة بالسلامة، وكل كابتناتنا يتم فحصهم بعناية والتحقق من خلفيتهم.", + "تلتزم انطلق بالسلامة، وجميع كباتننا يتم فحصهم بعناية والتحقق من سجلاتهم.", "your ride is Accepted": "تم قبول رحلتك", - "Driver is waiting at pickup.": - "السائق في انتظارك عند نقطة الاستلام.", - "Driver is on the way": "السائق في الطريق", - "Contact Options": "خيارات الاتصال", + "Driver is waiting at pickup.": "الكابتن بانتظارك في نقطة الانطلاق.", + "Driver is on the way": "الكابتن في الطريق", + "Contact Options": "خيارات التواصل", "Send a custom message": "إرسال رسالة مخصصة", "Type your message": "اكتب رسالتك", - "I will go now": "سأذهب الآن", - "You Have Tips": "لديك بقشيش", - " tips\nTotal is": " بقشيش\nالمجموع هو", + "I will go now": "أنا ذاهب الآن", + "You Have Tips": "لديك إكرامية", + " tips\nTotal is": " إكرامية\nالإجمالي هو", "Your fee is ": "أجرتك هي ", "Do you want to pay Tips for this Driver": - "هل تريد دفع بقشيش لهذا السائق؟", - "Tip is ": "البقشيش هو ", + "هل تريد دفع إكرامية لهذا الكابتن؟", + "Tip is ": "الإكرامية: ", "Are you want to wait drivers to accept your order": - "هل تريد الانتظار حتى يقبل السائقون طلبك؟", + "هل تريد انتظار الكباتن ليقبلوا طلبك؟", "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.": - "الكابتن مسؤول عن المسار.", - "We are search for nearst driver": "نحن نبحث عن أقرب سائق", - "Your order is being prepared": "يتم تحضير طلبك", - "The drivers are reviewing your request": "السائقون يراجعون طلبك", - "Your order sent to drivers": "تم إرسال طلبك إلى السائقين", + "الكابتن هو المسؤول عن المسار.", + "We are search for nearst driver": "نبحث عن أقرب كابتن", + "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": "يمكنك الاتصال أو تسجيل صوت لهذه الرحلة", "The trip has started! Feel free to contact emergency numbers, share your trip, or activate voice recording for the journey": - "بدأت الرحلة! لا تتردد في الاتصال بأرقام الطوارئ، مشاركة رحلتك، أو تفعيل التسجيل الصوتي للرحلة.", + "بدأت الرحلة! يمكنك الآن الاتصال بأرقام الطوارئ، مشاركة رحلتك، أو تفعيل التسجيل الصوتي.", "Camera Access Denied.": "تم رفض الوصول إلى الكاميرا.", "Open Settings": "فتح الإعدادات", - "GPS Required Allow !.": "يجب السماح بـ GPS!", + "GPS Required Allow !.": "مطلوب تفعيل GPS!", "Your Account is Deleted": "تم حذف حسابك", "Are you sure to delete your account?": "هل أنت متأكد من حذف حسابك؟", "Your data will be erased after 2 weeks\nAnd you will can't return to use app after 1 month ": - "سيتم حذف بياناتك بعد أسبوعين\nولن تتمكن من العودة لاستخدام التطبيق بعد شهر", + "سيتم حذف بياناتك بعد أسبوعين\nولن تتمكن من استخدام التطبيق مرة أخرى بعد شهر واحد.", "Enter Your First Name": "أدخل اسمك الأول", "Are you Sure to LogOut?": "هل أنت متأكد من تسجيل الخروج؟", "Email Wrong": "البريد الإلكتروني خاطئ", "Email you inserted is Wrong.": "البريد الإلكتروني الذي أدخلته خاطئ.", - "You have finished all times ": "لقد انتهيت من كل المحاولات", + "You have finished all times ": "لقد استنفدت كل المحاولات", "if you want help you can email us here": - "إذا كنت تريد المساعدة يمكنك مراسلتنا هنا", - "Thanks": "شكرًا", + "إذا كنت بحاجة للمساعدة، يمكنك مراسلتنا هنا", + "Thanks": "شكراً", "Email Us": "راسلنا عبر البريد الإلكتروني", "I cant register in your app in face detection ": - "لا يمكنني التسجيل في تطبيقك في كشف الوجه", - "Hi": "مرحبًا", - "No face detected": "لم يتم اكتشاف أي وجه", - "Image detecting result is ": "نتيجة اكتشاف الصورة هي ", - "from 3 times Take Attention": "من 3 مرات انتبه", + "لا أستطيع التسجيل في تطبيقكم بسبب مشكلة في التحقق من الوجه", + "Hi": "مرحباً", + "No face detected": "لم يتم التعرف على أي وجه", + "Image detecting result is ": "نتيجة التعرف على الصورة هي ", + "from 3 times Take Attention": "من 3 محاولات، انتبه", "Be sure for take accurate images please\nYou have": - "كن متأكدًا من التقاط صور دقيقة من فضلك\nلديك", + "الرجاء التأكد من التقاط صور دقيقة\nلديك", "image verified": "تم التحقق من الصورة", "Next": "التالي", "There is no help Question here": "لا يوجد سؤال مساعدة هنا", "You dont have Points": "ليس لديك نقاط", - "You Are Stopped For this Day !": "تم إيقافك لهذا اليوم!", + "You Are Stopped For this Day !": "لقد تم إيقافك لهذا اليوم!", "You must be charge your Account": "يجب عليك شحن حسابك", "You Refused 3 Rides this Day that is the reason \nSee you Tomorrow!": - "لقد رفضت 3 رحلات هذا اليوم وهذا هو السبب\nنراكم غدًا!", + "لقد رفضت 3 رحلات اليوم، ولهذا السبب تم إيقافك.\nنراك غداً!", "Recharge my Account": "إعادة شحن حسابي", - "Ok , See you Tomorrow": "حسنًا، أراك غدًا", - "You are Stopped": "تم إيقافك", + "Ok , See you Tomorrow": "حسناً، أراك غداً", + "You are Stopped": "أنت موقوف", "Connected": "متصل", "Not Connected": "غير متصل", "Your are far from passenger location": "أنت بعيد عن موقع الراكب", "go to your passenger location before\nPassenger cancel trip": - "اذهب إلى موقع الراكب قبل\nأن يلغي الراكب الرحلة", + "اذهب إلى موقع الراكب قبل أن يلغي الرحلة", "You will get cost of your work for this trip": "ستحصل على تكلفة عملك لهذه الرحلة", " in your wallet": "في محفظتك", "you gain": "لقد ربحت", "Order Cancelled by Passenger": "تم إلغاء الطلب من قبل الراكب", - "Success": "نجاح", - "Feedback data saved successfully": "تم حفظ بيانات التعليقات بنجاح", - "No Promo for today .": "لا يوجد عرض ترويجي لهذا اليوم.", + "Feedback data saved successfully": "تم حفظ التقييم بنجاح", + "No Promo for today .": "لا يوجد عرض لليوم.", "Select your destination": "اختر وجهتك", - "Search for your Start point": "ابحث عن نقطة البداية", - "Search for waypoint": "ابحث عن النقطة الوسيطة", + "Search for your Start point": "ابحث عن نقطة انطلاقك", + "Search for waypoint": "ابحث عن نقطة توقف", "Current Location": "الموقع الحالي", - "Add Location 1": "إضافة الموقع 1", + "Add Location 1": "إضافة موقع 1", "You must Verify email !.": "يجب عليك التحقق من البريد الإلكتروني!", - "Cropper": "القاطع", + "Cropper": "قص الصورة", "Saved Sucssefully": "تم الحفظ بنجاح", "Select Date": "اختر التاريخ", "Birth Date": "تاريخ الميلاد", - "Ok": "موافق", - "the 500 points equal 30 JOD": "500 نقطة تساوي 30 دينار أردني", + "Ok": "حسناً", + "the 500 points equal 30 JOD": "500 نقطة تساوي 30 ديناراً أردنياً", "the 500 points equal 30 JOD for you \nSo go and gain your money": - "500 نقطة تساوي 30 دينار أردني لك\nلذا اذهب واكسب أموالك", - "token updated": "تم تحديث الرمز المميز", - "Add Location 2": "إضافة الموقع 2", - "Add Location 3": "إضافة الموقع 3", - "Add Location 4": "إضافة الموقع 4", - "Waiting for your location": "في انتظار موقعك", + "500 نقطة تساوي 30 ديناراً أردنياً لك\nاذهب الآن واكسب أموالك", + "token updated": "تم تحديث الرمز", + "Add Location 2": "إضافة موقع 2", + "Add Location 3": "إضافة موقع 3", + "Add Location 4": "إضافة موقع 4", + "Waiting for your location": "بانتظار موقعك", "Search for your destination": "ابحث عن وجهتك", - "Hi! This is": "مرحبًا! هذا هو", + "Hi! This is": "مرحباً! هذا", " I am using": " أنا أستخدم", - " to ride with": " للركوب مع", - " as the driver.": " كسائق.", - "is driving a ": "يقود ", - " with license plate ": " بلوحة ترخيص ", - " I am currently located at ": " أنا حاليًا في ", - "Please go to Car now ": "الرجاء الذهاب إلى السيارة الآن", + " to ride with": " للتنقل مع", + " as the driver.": " ككابتن.", + "is driving a ": "يقود سيارة ", + " with license plate ": " رقم لوحتها ", + " I am currently located at ": " أنا حالياً في ", + "Please go to Car now ": "الرجاء التوجه إلى السيارة الآن", "You will receive a code in WhatsApp Messenger": - "سوف تتلقى رمزًا في WhatsApp Messenger", + "سوف تستلم الرمز عبر واتساب", "If you need assistance, contact us": - "إذا كنت بحاجة إلى مساعدة، اتصل بنا", - "Promo Ended": "انتهى العرض الترويجي", - "Enter the promo code and get": "أدخل رمز العرض الترويجي واحصل على", + "إذا احتجت للمساعدة، تواصل معنا", + "Promo Ended": "انتهى العرض", + "Enter the promo code and get": "أدخل رمز العرض واحصل على", "DISCOUNT": "خصم", - "No wallet record found": "لم يتم العثور على سجل محفظة", - "for": "لمدة", + "No wallet record found": "لم يتم العثور على سجل للمحفظة", + "for": "لـ", "Intaleq 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.": - "Intaleq هو تطبيق مشاركة ركوب الأكثر أمانًا الذي يقدم العديد من الميزات لكل من الكابتنات والركاب. نقدم أقل معدل عمولة بنسبة 8٪ فقط، مما يضمن لك الحصول على أفضل قيمة مقابل رحلاتك. يتضمن تطبيقنا تأمينًا لأفضل الكابتنات، وصيانة دورية للسيارات مع كبار المهندسين، وخدمات على الطريق لضمان تجربة محترمة وعالية الجودة لجميع المستخدمين.", + "انطلق هو تطبيق مشاركة الرحلات الأكثر أماناً، ويقدم ميزات عديدة للكباتن والركاب. نقدم أقل نسبة عمولة، 8% فقط، لنضمن لك أفضل قيمة لرحلاتك. يشمل تطبيقنا تأميناً لأفضل الكباتن، صيانة دورية للسيارات مع أفضل المهندسين، وخدمات على الطريق لتجربة محترمة وعالية الجودة لجميع المستخدمين.", "You can contact us during working hours from 12:00 - 19:00.": - "يمكنك الاتصال بنا خلال ساعات العمل من 12:00 إلى 19:00.", - "Choose a contact option": "اختر خيار الاتصال", + "يمكنك التواصل معنا خلال ساعات العمل من 12:00 ظهراً حتى 7:00 مساءً.", + "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يمكنك إرسال رسالة WhatsApp أو بريد إلكتروني.", - "Promo code copied to clipboard!": - "تم نسخ رمز العرض الترويجي إلى الحافظة!", + "أوقات العمل من 12:00 ظهراً حتى 7: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:": "صالح حتى:", + "You have copied the promo code.": "لقد نسخت رمز العرض.", "Select Payment Amount": "اختر مبلغ الدفع", - "The promotion period has ended.": "انتهت فترة الترويج.", - "Promo Code Accepted": "تم قبول رمز العرض الترويجي", - "Tap on the promo code to copy it!": - "اضغط على رمز العرض الترويجي لنسخه!", - "Lowest Price Achieved": "تم تحقيق أقل سعر", + "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": "تم استخدام العرض الترويجي بالفعل", + "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": "الرجاء إدخال رمز عرض ترويجي صالح", + "لقد استخدمت هذا العرض مسبقاً.", + "Insert Your Promo Code": "أدخل رمز العرض الخاص بك", + "Enter promo code here": "أدخل رمز العرض هنا", + "Please enter a valid promo code": "الرجاء إدخال رمز عرض صالح", "Awfar Car": "سيارة أوفر", "Old and affordable, perfect for budget rides.": - "قديمة وبأسعار معقولة، مثالية للرحلات المحدودة الميزانية.", + "قديمة واقتصادية، مثالية للرحلات الموفّرة.", " If you need to reach me, please contact the driver directly at": - "إذا كنت بحاجة إلى الوصول إلي، يرجى الاتصال بالسائق مباشرة على", + "إذا احتجت للتواصل معي، يرجى الاتصال بالكابتن مباشرة على", "No Car or Driver Found in your area.": - "لم يتم العثور على سيارة أو سائق في منطقتك.", + "لم يتم العثور على سيارة أو كابتن في منطقتك.", "Please Try anther time ": "الرجاء المحاولة في وقت آخر", "There no Driver Aplly your order sorry for that ": - "لا يوجد سائق ينفذ طلبك، نأسف لذلك", + "لم يتقدم أي كابتن لطلبك، نعتذر عن ذلك", "Trip Cancelled": "تم إلغاء الرحلة", "The Driver Will be in your location soon .": - "سيكون السائق في موقعك قريبًا.", + "سيصل الكابتن إلى موقعك قريباً.", "The distance less than 500 meter.": "المسافة أقل من 500 متر.", - "Promo End !": "انتهى العرض الترويجي!", + "Promo End !": "انتهى العرض!", "There is no notification yet": "لا توجد إشعارات بعد", "Use Touch ID or Face ID to confirm payment": - "استخدم Touch ID أو Face ID لتأكيد الدفع", + "استخدم بصمة الإصبع أو الوجه لتأكيد الدفع", "Contact us for any questions on your order.": - "اتصل بنا لأي أسئلة حول طلبك.", + "تواصل معنا لأي استفسار حول طلبك.", "Pyament Cancelled .": "تم إلغاء الدفع.", "type here": "اكتب هنا", "Scan Driver License": "مسح رخصة القيادة", "Please put your licence in these border": - "الرجاء وضع رخصتك داخل هذه الحدود", - "Camera not initialized yet": "لم يتم تهيئة الكاميرا بعد", - "Take Image": "التقاط صورة", + "الرجاء وضع رخصتك ضمن هذه الحدود", + "Camera not initialized yet": "لم يتم تفعيل الكاميرا بعد", + "Take Image": "التقط صورة", "AI Page": "صفحة الذكاء الاصطناعي", - "Take Picture Of ID Card": "التقاط صورة لبطاقة الهوية", - "Take Picture Of Driver License Card": - "التقاط صورة لبطاقة رخصة القيادة", + "Take Picture Of ID Card": "التقط صورة للهوية", + "Take Picture Of Driver License Card": "التقط صورة لرخصة القيادة", "We are process picture please wait ": - "نحن نعالج الصورة، يرجى الانتظار", + "جاري معالجة الصورة، يرجى الانتظار", "There is no data yet.": "لا توجد بيانات بعد.", "Name :": "الاسم:", - "Drivers License Class: ": "فئة رخصة القيادة: ", - "Document Number: ": "رقم المستند: ", - "Address: ": "العنوان: ", - "Height: ": "الطول: ", - "Expiry Date: ": "تاريخ الانتهاء: ", - "Date of Birth: ": "تاريخ الميلاد: ", + "Drivers License Class: ": "فئة الرخصة:", + "Document Number: ": "رقم الوثيقة:", + "Address: ": "العنوان:", + "Height: ": "الطول:", + "Expiry Date: ": "تاريخ الانتهاء:", + "Date of Birth: ": "تاريخ الميلاد:", "You can't continue with us .\nYou should renew Driver license": - "لا يمكنك الاستمرار معنا.\nيجب عليك تجديد رخصة القيادة", - "Detect Your Face ": "اكتشف وجهك", + "لا يمكنك المتابعة معنا.\nيجب عليك تجديد رخصة القيادة", + "Detect Your Face ": "التحقق من وجهك", "Go to next step\nscan Car License.": - "انتقل إلى الخطوة التالية\nمسح رخصة السيارة.", + "انتقل للخطوة التالية\nمسح رخصة السيارة.", "Name in arabic": "الاسم بالعربية", "Drivers License Class": "فئة رخصة القيادة", "Selected Date": "التاريخ المحدد", "Select Time": "اختر الوقت", "Selected Time": "الوقت المحدد", - "Selected Date and Time": "التاريخ والوقت المحددين", - "Lets check Car license ": "دعونا نتحقق من رخصة السيارة", - "Car": "السيارة", - "Plate": "اللوحة", - "Rides": "الرحلات", - "Selected driver": "السائق المحدد", - "Lets check License Back Face": "دعونا نتحقق من الوجه الخلفي للرخصة", - "Car License Card": "بطاقة رخصة السيارة", - "No image selected yet": "لم يتم اختيار أي صورة بعد", + "Selected Date and Time": "التاريخ والوقت المحددان", + "Lets check Car license ": "لنتحقق من رخصة السيارة", + "Car": "سيارة", + "Plate": "لوحة", + "Rides": "رحلات", + "Selected driver": "الكابتن المختار", + "Lets check License Back Face": "لنتحقق من الوجه الخلفي للرخصة", + "Car License Card": "رخصة السيارة", + "No image selected yet": "لم يتم اختيار صورة بعد", "Made :": "الصنع:", "model :": "الموديل:", - "VIN :": "VIN:", + "VIN :": "رقم الهيكل:", "year :": "السنة:", "ُExpire Date": "تاريخ الانتهاء", - "Login Driver": "تسجيل دخول السائق", + "Login Driver": "دخول الكابتن", "Password must br at least 6 character.": - "يجب أن تكون كلمة المرور مكونة من 6 أحرف على الأقل.", + "يجب أن تتكون كلمة المرور من 6 أحرف على الأقل.", "if you don't have account": "إذا لم يكن لديك حساب", - "Here recorded trips audio": "هنا تسجيلات صوتية للرحلات", - "Register as Driver": "التسجيل كسائق", + "Here recorded trips audio": "هنا التسجيلات الصوتية للرحلات", + "Register as Driver": "التسجيل ككابتن", "By selecting \"I Agree\" below, I have reviewed and agree to the Terms of Use and acknowledge the ": - "بالنقر على \"أوافق\" أدناه، أكدت أنني قد راجعت وأوافق على شروط الاستخدام وأعترف بـ ", + "باختياري \"أوافق\" أدناه، أكون قد راجعت ووافقت على شروط الاستخدام وأقر بـ", "Log Out Page": "صفحة تسجيل الخروج", "Log Off": "تسجيل الخروج", - "Register Driver": "تسجيل السائق", - "Verify Email For Driver": "التحقق من البريد الإلكتروني للسائق", - "Admin DashBoard": "لوحة تحكم المدير", + "Register Driver": "تسجيل كابتن", + "Verify Email For Driver": "التحقق من بريد الكابتن الإلكتروني", + "Admin DashBoard": "لوحة تحكم المشرف", "Your name": "اسمك", - "your ride is applied": "تم تطبيق رحلتك", - "Your password": "كلمة المرور الخاصة بك", - "H and": "ساعة و", - "LE": "جنيه", + "your ride is applied": "تم قبول رحلتك", + "H and": "س و", "JOD": "دينار", - "m": "دقيقة", - "We search nearst Driver to you": "نحن نبحث عن أقرب سائق لك", + "m": "د", + "We search nearst Driver to you": "نبحث لك عن أقرب كابتن", "please wait till driver accept your order": - "الرجاء الانتظار حتى يقبل السائق طلبك", + "الرجاء الانتظار حتى يقبل الكابتن طلبك", "No accepted orders? Try raising your trip fee to attract riders.": - "لا توجد طلبات مقبولة؟ حاول زيادة رسوم رحلتك لجذب الركاب.", + "لا يوجد قبول للطلبات؟ حاول رفع أجرة رحلتك لجذب الكباتن.", "You should select one": "يجب عليك اختيار واحد", - "The driver accept your order for": "قبل السائق طلبك مقابل", - "Increase Fee": "زيادة الرسوم", - "No, thanks": "لا، شكرًا", - "The driver on your way": "السائق في طريقه إليك", + "The driver accept your order for": "الكابتن قبل طلبك مقابل", + "The driver on your way": "الكابتن في طريقه إليك", "Total price from ": "السعر الإجمالي من ", - "Order Details Intaleq": "تفاصيل الطلب Intaleq", - "accepted your order": "قبل طلبك", - "Selected file:": "الملف المحدد:", + "Order Details Intaleq": "تفاصيل طلب انطلق", + "Selected file:": "الملف المختار:", "Your trip cost is": "تكلفة رحلتك هي", "this will delete all files from your device": "سيؤدي هذا إلى حذف جميع الملفات من جهازك", "Exclusive offers and discounts always with the Intaleq app": - "عروض وخصومات حصرية دائمًا مع تطبيق Intaleq", + "عروض وخصومات حصرية دائماً مع تطبيق انطلق", "Submit Question": "إرسال سؤال", "Please enter your Question.": "الرجاء إدخال سؤالك.", "Help Details": "تفاصيل المساعدة", "No trip yet found": "لم يتم العثور على رحلة بعد", - "No Response yet.": "لا توجد استجابة بعد.", - " You Earn today is ": "ما كسبته اليوم هو ", + "No Response yet.": "لا يوجد رد بعد.", + " You Earn today is ": "أرباحك اليوم هي ", " You Have in": " لديك في", - "Total points is ": "إجمالي النقاط هو ", + "Total points is ": "إجمالي النقاط: ", "Total Connection Duration:": "إجمالي مدة الاتصال:", "Passenger name : ": "اسم الراكب: ", - "Cost Of Trip IS ": "تكلفة الرحلة هي ", + "Cost Of Trip IS ": "تكلفة الرحلة: ", "Arrival time": "وقت الوصول", "arrival time to reach your point": "وقت الوصول إلى وجهتك", "For Intaleq and scooter trips, the price is calculated dynamically. For Comfort trips, the price is based on time and distance": - "لرحلات Intaleq والدراجات البخارية، يتم حساب السعر ديناميكيًا. لرحلات الراحة، يعتمد السعر على الوقت والمسافة.", - "Hello this is Driver": "مرحبًا، هذا هو السائق", + "لرحلات انطلق والسكوتر، يتم حساب السعر بشكل متغير. أما لرحلات الراحة، فيعتمد السعر على الوقت والمسافة.", + "Hello this is Driver": "مرحباً، معك الكابتن", "Is the Passenger in your Car ?": "هل الراكب في سيارتك؟", "Please wait for the passenger to enter the car before starting the trip.": - "الرجاء الانتظار حتى يدخل الراكب السيارة قبل بدء الرحلة.", - "No ,still Waiting.": "لا، ما زال في الانتظار.", - "I arrive you": "وصلت إليك", - "I Arrive your site": "وصلت إلى موقعك", + "الرجاء انتظار دخول الراكب إلى السيارة قبل بدء الرحلة.", + "No ,still Waiting.": "لا، ما زلت أنتظر.", + "I arrive you": "أنا وصلتك", + "I Arrive your site": "أنا وصلت لموقعك", "You are not in near to passenger location": - "أنت لست قريبًا من موقع الراكب", + "أنت لست قريباً من موقع الراكب", "please go to picker location exactly": - "الرجاء الذهاب إلى موقع المنتقي بالضبط", + "الرجاء الذهاب إلى موقع الانطلاق بدقة", "You Can Cancel Trip And get Cost of Trip From": - "يمكنك إلغاء الرحلة والحصول على تكلفة الرحلة من", + "يمكنك إلغاء الرحلة والحصول على تكلفتها من", "Are you sure to cancel?": "هل أنت متأكد من الإلغاء؟", "Insert Emergincy Number": "إدخال رقم الطوارئ", "Best choice for comfort car and flexible route and stops point": - "أفضل خيار لسيارة مريحة ومسار مرن ونقاط توقف", - "Insert": "إدراج", + "الخيار الأفضل لسيارة مريحة ومسار مرن ونقاط توقف", + "Insert": "إدخال", "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": - "يمكنك رفض طلب بدون أي تكلفة", + "يمكنك رفض الطلب دون أي تكلفة", "Perfect for adventure seekers who want to experience something new and exciting": - "مثالي لطالبي المغامرة الذين يريدون تجربة شيء جديد ومثير", + "مثالي لمحبي المغامرات الذين يرغبون في تجربة شيء جديد ومثير", "My current location is:": "موقعي الحالي هو:", "and I have a trip on": "ولدي رحلة على", "App with Passenger": "التطبيق مع الراكب", "You will be pay the cost to driver or we will get it from you on next trip": - "ستدفع التكلفة للسائق أو سنحصل عليها منك في الرحلة التالية", - "Trip has Steps": "الرحلة لديها خطوات", + "ستدفع التكلفة للكابتن أو سنحصل عليها منك في الرحلة القادمة", + "Trip has Steps": "الرحلة لها عدة وجهات", "Distance from Passenger to destination is ": - "المسافة من الراكب إلى الوجهة هي ", + "المسافة من الراكب للوجهة: ", "price is": "السعر هو", "This ride type does not allow changes to the destination or additional stops": - "هذا النوع من الرحلة لا يسمح بتغيير الوجهة أو إيقافات إضافية", + "هذا النوع من الرحلات لا يسمح بتغيير الوجهة أو إضافة نقاط توقف", "This price may be changed": "قد يتغير هذا السعر", "No SIM card, no problem! Call your driver directly through our app. We use advanced technology to ensure your privacy.": - "لا توجد بطاقة SIM، لا مشكلة! اتصل بسائقك مباشرة من خلال تطبيقنا. نستخدم تقنية متقدمة لضمان خصوصيتك.", + "لا حاجة لبطاقة SIM! اتصل بالكابتن مباشرة عبر تطبيقنا. نستخدم تقنية متقدمة لضمان خصوصيتك.", "This ride type allows changes, but the price may increase": - "هذا النوع من الرحلة يسمح بالتغييرات، ولكن قد يزيد السعر", + "هذا النوع من الرحلات يسمح بالتغييرات، ولكن قد يرتفع السعر", "Select one message": "اختر رسالة واحدة", - "I'm waiting for you": "أنا في انتظارك", + "I'm waiting for you": "أنا بانتظارك", "We noticed the Intaleq 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.": - "لاحظنا أن Intaleq يتجاوز 100 كم/ساعة. يرجى التباطؤ لسلامتك. إذا شعرت بعدم الأمان، يمكنك مشاركة تفاصيل رحلتك مع جهة اتصال أو الاتصال بالشرطة باستخدام زر SOS الأحمر.", - "Warning: Intaleqing detected!": "تحذير: تم اكتشاف Intaleqing!", + "لاحظنا أن السرعة تجاوزت 100 كم/ساعة. الرجاء تخفيف السرعة من أجل سلامتك. إذا شعرت بعدم الأمان، يمكنك مشاركة تفاصيل رحلتك مع جهة اتصال أو الاتصال بالشرطة باستخدام زر الطوارئ الأحمر.", + "Warning: Intaleqing detected!": "تحذير: تم كشف سرعة زائدة!", "Please help! Contact me as soon as possible.": - "من فضلك ساعد! اتصل بي في أقرب وقت ممكن.", + "الرجاء المساعدة! تواصل معي بأسرع وقت ممكن.", "Share Trip Details": "مشاركة تفاصيل الرحلة", - "Car Plate is ": "لوحة السيارة هي ", + "Car Plate is ": "رقم لوحة السيارة: ", "the 300 points equal 300 L.E for you \nSo go and gain your money": - "300 نقطة تساوي 300 جنيه لك\nلذا اذهب واكسب أموالك", - "the 300 points equal 300 L.E": "300 نقطة تساوي 300 جنيه", + "300 نقطة تساوي 300 ليرة لك\nاذهب الآن واكسب أموالك", + "the 300 points equal 300 L.E": "300 نقطة تساوي 300 ليرة", "The payment was not approved. Please try again.": - "لم يتم الموافقة على الدفع. يرجى المحاولة مرة أخرى.", + "لم تتم الموافقة على الدفع. الرجاء المحاولة مرة أخرى.", "Payment Failed": "فشل الدفع", - "Error": "خطأ", "This is a scheduled notification.": "هذا إشعار مجدول.", "An error occurred during the payment process.": "حدث خطأ أثناء عملية الدفع.", "The payment was approved.": "تمت الموافقة على الدفع.", - "Payment Successful": "نجاح الدفع", + "Payment Successful": "تم الدفع بنجاح", "No ride found yet": "لم يتم العثور على رحلة بعد", "Accept Order": "قبول الطلب", - "Bottom Bar Example": "مثال الشريط السفلي", - "Driver phone": "هاتف السائق", + "Bottom Bar Example": "مثال للشريط السفلي", + "Driver phone": "رقم الكابتن", "Statistics": "الإحصائيات", - "Origin": "الأصل", + "Origin": "نقطة الانطلاق", "Destination": "الوجهة", - "Driver Name": "اسم السائق", - "Driver Car Plate": "لوحة سيارة السائق", + "Driver Name": "اسم الكابتن", + "Driver Car Plate": "رقم لوحة سيارة الكابتن", "Available for rides": "متاح للرحلات", "Scan Id": "مسح الهوية", - "Camera not initilaized yet": "لم يتم تهيئة الكاميرا بعد", + "Camera not initilaized yet": "لم يتم تفعيل الكاميرا بعد", "Scan ID MklGoogle": "مسح هوية MklGoogle", "Language": "اللغة", "Jordan": "الأردن", @@ -1191,176 +1249,168 @@ class MyTranslation extends Translations { "Qatar": "قطر", "Bahrain": "البحرين", "Kuwait": "الكويت", - "But you have a negative salary of": "لكن لديك راتب سلبي بقيمة", - "Promo Code": "رمز الترويج", + "But you have a negative salary of": "لكن لديك رصيد سالب بقيمة", + "Promo Code": "رمز العرض", "Your trip distance is": "مسافة رحلتك هي", - "Enter promo code": "أدخل رمز الترويج", - "You have promo!": "لديك عرض ترويجي!", + "Enter promo code": "أدخل رمز العرض", + "You have promo!": "لديك عرض!", "Cost Duration": "تكلفة المدة", "Duration is": "المدة هي", "Leave": "مغادرة", "Join": "انضمام", "Heading your way now. Please be ready.": - "في طريقي إليك الآن. يرجى الاستعداد.", + "أنا في طريقي إليك الآن. يرجى الاستعداد.", "Approaching your area. Should be there in 3 minutes.": - "أقترب من منطقتك. يجب أن أكون هناك في 3 دقائق.", + "أقترب من منطقتك. سأكون هناك خلال 3 دقائق.", "There's heavy traffic here. Can you suggest an alternate pickup point?": - "هناك زحمة مرورية شديدة هنا. هل يمكنك اقتراح نقطة استلام بديلة؟", + "هناك ازدحام مروري شديد. هل يمكنك اقتراح نقطة انطلاق بديلة؟", "This ride is already taken by another driver.": - "هذه الرحلة قد تم أخذها من قبل سائق آخر.", + "هذه الرحلة قد أخذها كابتن آخر.", "You Should be select reason.": "يجب عليك اختيار السبب.", - " \$": " \$", - "Waiting for Driver ...": "في انتظار السائق ...", + "Waiting for Driver ...": "بانتظار الكابتن...", "Latest Recent Trip": "آخر رحلة حديثة", "from your list": "من قائمتك", "Do you want to change Work location": "هل تريد تغيير موقع العمل؟", "Do you want to change Home location": "هل تريد تغيير موقع المنزل؟", "We Are Sorry That we dont have cars in your Location!": - "نحن آسفون لأنه لا توجد سيارات في موقعك!", + "نأسف لعدم توفر سيارات في موقعك!", "Choose from Map": "اختر من الخريطة", "Pick your ride location on the map - Tap to confirm": "اختر موقع رحلتك على الخريطة - اضغط للتأكيد", - "Closest & Cheapest": "الأقرب والأرخص", "Intaleq is the ride-hailing app that is safe, reliable, and accessible.": - "Intaleq هو تطبيق طلب الركوب الآمن والموثوق والمتاح.", + "انطلق هو تطبيق طلب السيارات الآمن، الموثوق، وفي متناول اليد.", "With Intaleq, you can get a ride to your destination in minutes.": - "مع Intaleq، يمكنك الحصول على رحلة إلى وجهتك في دقائق.", + "مع انطلق، يمكنك الوصول إلى وجهتك في دقائق.", "Intaleq is committed to safety, and all of our captains are carefully screened and background checked.": - "Intaleq ملتزم بالسلامة، وجميع كابتناتنا يتم فحصهم بعناية والتحقق من خلفيتهم.", + "تلتزم انطلق بالسلامة، وجميع كباتننا يتم فحصهم بعناية والتحقق من سجلاتهم.", "Pick from map": "اختر من الخريطة", - "No Car in your site. Sorry!": "لا توجد سيارة في موقعك. آسف!", - "Nearest Car for you about ": "أقرب سيارة لك حوالي ", + "No Car in your site. Sorry!": "لا توجد سيارة في موقعك. نعتذر!", + "Nearest Car for you about ": "أقرب سيارة لك على بعد ", "From :": "من:", "Get Details of Trip": "الحصول على تفاصيل الرحلة", - "If you want add stop click here": "إذا كنت تريد إضافة توقف اضغط هنا", - "Where you want go ": "إلى أين تريد الذهاب ", + "If you want add stop click here": + "إذا أردت إضافة نقطة توقف، اضغط هنا", + "Where you want go ": "إلى أين تريد الذهاب؟", "My Card": "بطاقتي", "Start Record": "بدء التسجيل", - "History of Trip": "سجل الرحلة", + "History of Trip": "سجل الرحلات", "Helping Center": "مركز المساعدة", "Record saved": "تم حفظ التسجيل", - "Trips recorded": "رحلات مسجلة", + "Trips recorded": "الرحلات المسجلة", "Select Your Country": "اختر بلدك", "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country.": - "لضمان حصولك على المعلومات الأكثر دقة لموقعك، يرجى اختيار بلدك أدناه. سيساعد هذا في تخصيص تجربة التطبيق والمحتوى لبلدك.", + "لضمان حصولك على أدق المعلومات لموقعك، يرجى اختيار بلدك أدناه. سيساعد هذا في تخصيص تجربة التطبيق ومحتواه لبلدك.", "Are you sure to delete recorded files": "هل أنت متأكد من حذف الملفات المسجلة؟", "Select recorded trip": "اختر رحلة مسجلة", "Card Number": "رقم البطاقة", - "Hi, Where to ": "مرحبًا، إلى أين ", + "Hi, Where to ": "مرحباً، إلى أين؟", "Pick your destination from Map": "اختر وجهتك من الخريطة", - "Add Stops": "إضافة توقفات", - "Get Direction": "الحصول على الاتجاه", + "Add Stops": "إضافة نقاط توقف", + "Get Direction": "الحصول على الاتجاهات", "Add Location": "إضافة موقع", "Switch Rider": "تبديل الراكب", "You will arrive to your destination after timer end.": "ستصل إلى وجهتك بعد انتهاء المؤقت.", "You can cancel trip": "يمكنك إلغاء الرحلة", "The driver waitting you in picked location .": - "السائق في انتظارك في الموقع المحدد.", - "10\$ and get 3% discount": "10\$ واحصل على خصم 3%", - "20\$ and get 4% discount": "20\$ واحصل على خصم 4%", - "40\$ and get 6% discount": "40\$ واحصل على خصم 6%", - "100\$ and get 9% discount": "100\$ واحصل على خصم 9%", - "Pay with Your": "الدفع باستخدام", - "Pay with Credit Card": "الدفع ببطاقة الائتمان", - "Payment History": "سجل الدفع", - "Show Promos to Charge": "عرض العروض الترويجية للشحن", + "الكابتن بانتظارك في موقع الانطلاق.", + "Pay with Your": "ادفع باستخدام", + "Pay with Credit Card": "الدفع بالبطاقة الائتمانية", + "Show Promos to Charge": "عرض العروض للشحن", "Point": "نقطة", - "How many hours would you like to wait?": "كم ساعة تريد الانتظار؟", - "Driver Wallet": "محفظة السائق", - "Choose between those Type Cars": "اختر بين تلك الأنواع من السيارات", + "How many hours would you like to wait?": "كم ساعة تود الانتظار؟", + "Driver Wallet": "محفظة الكابتن", + "Choose between those Type Cars": "اختر بين أنواع السيارات هذه", "hour": "ساعة", "Select Waiting Hours": "اختر ساعات الانتظار", - "Total Points is": "إجمالي النقاط هو", + "Total Points is": "إجمالي النقاط", "You will receive a code in SMS message": - "سوف تتلقى رمزًا في رسالة SMS", + "ستستلم رمزاً في رسالة نصية", "Done": "تم", - "Total Budget from trips is ": "إجمالي الميزانية من الرحلات هو ", + "Total Budget from trips is ": "إجمالي الميزانية من الرحلات: ", "Total Amount:": "المبلغ الإجمالي:", "Total Budget from trips by\nCredit card is ": - "إجمالي الميزانية من الرحلات بواسطة\nبطاقة الائتمان هو ", + "إجمالي الميزانية من الرحلات بالبطاقة الائتمانية: ", "This amount for all trip I get from Passengers": - "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب", - "Pay from my budget": "الدفع من ميزانيتي", + "هذا المبلغ هو لكل الرحلات التي أحصل عليها من الركاب", + "Pay from my budget": "ادفع من ميزانيتي", "This amount for all trip I get from Passengers and Collected For me in": - "هذا المبلغ لجميع الرحلات التي أحصل عليها من الركاب والمجمعة لي في", - "You can buy points from your budget": - "يمكنك شراء النقاط من ميزانيتك", - "insert amount": "إدراج المبلغ", + "هذا المبلغ هو لكل الرحلات التي أحصل عليها من الركاب والمجمعة لي في", + "You can buy points from your budget": "يمكنك شراء نقاط من ميزانيتك", + "insert amount": "أدخل المبلغ", "You can buy Points to let you online\nby this list below": - "يمكنك شراء النقاط للسماح لك بالاتصال\nمن خلال هذه القائمة أدناه", - "Create Wallet to receive your money": "إنشاء محفظة لاستلام أموالك", - "Enter your feedback here": "أدخل ملاحظاتك هنا", - "Please enter your feedback.": "الرجاء إدخال ملاحظاتك.", - "Feedback": "ملاحظات", + "يمكنك شراء نقاط لتكون متصلاً\nمن القائمة أدناه", + "Create Wallet to receive your money": "أنشئ محفظة لاستلام أموالك", + "Enter your feedback here": "أدخل تقييمك هنا", + "Please enter your feedback.": "الرجاء إدخال تقييمك.", + "Feedback": "تقييم", "Submit ": "إرسال ", - "Click here to Show it in Map": "انقر هنا لعرضه على الخريطة", + "Click here to Show it in Map": "اضغط هنا لعرضه على الخريطة", "Canceled": "تم الإلغاء", - "Type your Email": "اكتب بريدك الإلكتروني", "No I want": "لا أريد", - "Email is": "البريد الإلكتروني هو", - "Phone Number is": "رقم الهاتف هو", - "Date of Birth is": "تاريخ الميلاد هو", - "Sex is ": "الجنس هو ", + "Email is": "البريد الإلكتروني:", + "Phone Number is": "رقم الهاتف:", + "Date of Birth is": "تاريخ الميلاد:", + "Sex is ": "الجنس: ", "Car Details": "تفاصيل السيارة", - "VIN is": "VIN هو", - "Color is ": "اللون هو ", - "Make is ": "الصنع هو ", - "Model is": "الموديل هو", - "Year is": "السنة هي", - "Expiration Date ": "تاريخ الانتهاء ", + "VIN is": "رقم الهيكل:", + "Color is ": "اللون: ", + "Make is ": "الشركة المصنعة: ", + "Model is": "الموديل:", + "Year is": "السنة:", + "Expiration Date ": "تاريخ الانتهاء: ", "Edit Your data": "تعديل بياناتك", - "write vin for your car": "اكتب VIN لسيارتك", - "VIN": "VIN", + "write vin for your car": "اكتب رقم هيكل سيارتك", + "VIN": "رقم الهيكل", "write Color for your car": "اكتب لون سيارتك", - "write Make for your car": "اكتب صنع سيارتك", + "write Make for your car": "اكتب الشركة المصنعة لسيارتك", "write Model for your car": "اكتب موديل سيارتك", - "write Year for your car": "اكتب سنة سيارتك", + "write Year for your car": "اكتب سنة صنع سيارتك", "write Expiration Date for your car": "اكتب تاريخ انتهاء صلاحية سيارتك", - "Tariffs": "التعريفات", + "Tariffs": "التعرفات", "Minimum fare": "الحد الأدنى للأجرة", "Maximum fare": "الحد الأقصى للأجرة", - "Flag-down fee": "رسوم العلم", - "Including Tax": "بما في ذلك الضريبة", + "Flag-down fee": "رسوم بدء الرحلة", + "Including Tax": "شامل الضريبة", "BookingFee": "رسوم الحجز", - "Morning": "الصباح", + "Morning": "صباحاً", "from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)": - "من 07:30 حتى 10:30 (الخميس، الجمعة، السبت، الاثنين)", - "Evening": "المساء", + "من 7:30 صباحاً حتى 10:30 صباحاً (الخميس، الجمعة، السبت، الاثنين)", + "Evening": "مساءً", "from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)": - "من 12:00 حتى 15:00 (الخميس، الجمعة، السبت، الاثنين)", - "Night": "الليل", + "من 12:00 ظهراً حتى 3:00 عصراً (الخميس، الجمعة، السبت، الاثنين)", + "Night": "ليلاً", "You have in account": "لديك في الحساب", "Select Country": "اختر البلد", - "Ride Today : ": "الرحلة اليوم: ", + "Ride Today : ": "رحلة اليوم: ", "After this period\nYou can't cancel!": "بعد هذه الفترة\nلا يمكنك الإلغاء!", - "from 23:59 till 05:30": "من 23:59 حتى 05:30", - "Rate Driver": "تقييم السائق", - "Total Cost is ": "التكلفة الإجمالية هي ", + "from 23:59 till 05:30": "من 11:59 مساءً حتى 5:30 صباحاً", + "Rate Driver": "تقييم الكابتن", + "Total Cost is ": "التكلفة الإجمالية: ", "Write note": "اكتب ملاحظة", "Time to arrive": "وقت الوصول", "Ride Summaries": "ملخصات الرحلات", "Total Cost": "التكلفة الإجمالية", "Average of Hours of": "متوسط ساعات", - " is ON for this month": "يعمل هذا الشهر", + " is ON for this month": " متصل لهذا الشهر", "Days": "أيام", "Total Hours on month": "إجمالي الساعات في الشهر", - "Counts of Hours on days": "عدد ساعات الأيام", - "OrderId": "معرف الطلب", + "Counts of Hours on days": "عدد الساعات في الأيام", + "OrderId": "رقم الطلب", "created time": "وقت الإنشاء", - "Intaleq Over": "انتهت Intaleq", - "I will slow down": "سوف أبطئ", + "Intaleq Over": "انتهت رحلة انطلق", + "I will slow down": "سأخفف السرعة", "Map Passenger": "خريطة الراكب", - "Be Slowly": "كن بطيئًا", + "Be Slowly": "تمهل", "If you want to make Google Map App run directly when you apply order": - "إذا كنت تريد تشغيل تطبيق خرائط Google مباشرة عند تقديم الطلب", + "إذا أردت تشغيل خرائط جوجل مباشرة عند قبول الطلب", "You can change the language of the app": "يمكنك تغيير لغة التطبيق", - "Your Budget less than needed": "ميزانيتك أقل من المطلوب", + "Your Budget less than needed": "رصيدك أقل من المطلوب", "You can change the Country to get all features": - "يمكنك تغيير البلد للحصول على جميع الميزات", + "يمكنك تغيير البلد للحصول على كل الميزات", "Change Country": "تغيير البلد" }, "ar-main": { @@ -1569,9 +1619,25 @@ class MyTranslation extends Translations { "Phone Wallet Saved Successfully": "تم حفظ محفظة الهاتف بنجاح", "Add wallet phone you use": "ضيف رقم محفظة هاتفك اللي بتستخدمها", "Update Available": "تحديث متاح", + 'Intaleq Balance': "رصيد Intaleq", + 'Van for familly': "فان للعائلات", + "Electric": "سيارة كهربائية", + "Van": "فان للعائلات", + "Closest & Cheapest": "الأقرب والأرخص", + "Comfort choice": "خيار الراحة", + "Lady Captain for girls": "سائقة خاصة للسيدات", + "Best choice for cities": "أفضل خيار بين المدن", + "Quiet & Eco-Friendly": "هادئة وصديقة للبيئة", + "Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.": + "سافر في سيارة كهربائية حديثة وهادئة. خيار مميز وصديق للبيئة لرحلة مريحة وسلسة.", + "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together.": + "خدمة فان واسعة مثالية للعائلات والمجموعات. رحلة مريحة وآمنة واقتصادية للتنقل معًا.", "Phone number must be exactly 11 digits long": "رقم التليفون لازم يكون 11 رقم بالظبط", - "Insert Wallet phone number": "أدخل رقم محفظة هاتفك", + 'Set Phone Number': "تعيين رقم الهاتف", + 'Top up Balance to continue': "اشحن الرصيد للمتابعة", + "Insert Wallet phone number": "أدخل رقم محفظة الهاتف", + 'Set 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.": @@ -2532,7 +2598,7 @@ class MyTranslation extends Translations { "This ride is already taken by another driver.": "المشوار ده أخده سواق تاني خلاص.", "You Should be select reason.": "يجب أن تختار سبب.", - " \$": " دينار ", + "Waiting for Driver ...": "في انتظار السواق...", "Latest Recent Trip": "آخر مشوار عملته", "from your list": "من قائمتك", @@ -2592,10 +2658,7 @@ class MyTranslation extends Translations { "You can cancel trip": "تقدر تلغي الرحلة", "The driver waitting you in picked location .": "السواق منتظرك في المكان اللي اخترته.", - "10\$ and get 3% discount": "10 دينار واحصل على خصم 3%", - "20\$ and get 4% discount": "20 دينار واحصل على خصم 4%", - "40\$ and get 6% discount": "40 دينار واحصل على خصم 6%", - "100\$ and get 9% discount": "100 دولار واحصل على خصم 9%", + "Pay with Your": "ادفع بـ", "Pay with Credit Card": "ادفع ببطاقة الائتمان", "Payment History": "سجل المدفوعات", @@ -3826,7 +3889,7 @@ class MyTranslation extends Translations { "This ride is already taken by another driver.": "Bu yolculuk başka bir sürücü tarafından alındı.", "You Should be select reason.": "Bir sebep seçmelisiniz.", - " \$": " \$", + "Waiting for Driver ...": "Sürücü Bekleniyor ...", "Latest Recent Trip": "En Son Yolculuk", "from your list": "listenizden", @@ -3889,10 +3952,6 @@ class MyTranslation extends Translations { "You can cancel trip": "Yolculuğu iptal edebilirsiniz", "The driver waitting you in picked location .": "Sürücü sizi seçilen yerde bekliyor.", - "10\$ and get 3% discount": "10\$ ve %3 indirim", - "20\$ and get 4% discount": "20\$ ve %4 indirim", - "40\$ and get 6% discount": "40\$ ve %6 indirim", - "100\$ and get 9% discount": "100\$ ve %9 indirim", "Pay with Your": "Ödeme Yönteminiz", "Pay with Credit Card": "Kredi Kartı ile Öde", "Payment History": "Ödeme Geçmişi", @@ -17020,7 +17079,7 @@ class MyTranslation extends Translations { "Call Page": "صفحة الاتصال", // "Call End": "انتهاء المكالمة", "Call Left": "مكالمات متبقية", - r"$ Next as Cash $!": " بعدين كاش \$!", + "To use Wallet charge it": "عشان تستخدم المحفظة اشحنها", "We are searching for the nearest driver to you": "بندور لك على أقرب سواق ليك", @@ -17867,7 +17926,7 @@ class MyTranslation extends Translations { "This ride is already taken by another driver.": "المشوار هذا أخذه سواق ثاني خلاص.", "You Should be select reason.": "يجب أن تختار سبب.", - " \$": " دينار ", + "Waiting for Driver ...": "في انتظار السواق...", "Latest Recent Trip": "آخر مشوار سويته", "from your list": "من قائمتك", @@ -17927,10 +17986,7 @@ class MyTranslation extends Translations { "You can cancel trip": "تقدر تلغي الرحلة", "The driver waitting you in picked location .": "السواق ينتظرك في المكان اللي اخترته.", - "10\$ and get 3% discount": "10 دولار واحصل على خصم 3%", - "20\$ and get 4% discount": "20 دولار واحصل على خصم 4%", - "40\$ and get 6% discount": "40 دولار واحصل على خصم 6%", - "100\$ and get 9% discount": "100 دولار واحصل على خصم 9%", + "Pay with Your": "ادفع بـ", "Pay with Credit Card": "ادفع ببطاقة الائتمان", "Payment History": "سجل المدفوعات", @@ -18338,7 +18394,7 @@ class MyTranslation extends Translations { "Call Page": "صفحة الاتصال", // "Call End": "نهاية المكالمة", "Call Left": "مكالمات باقية", - r"$ Next as Cash $!": " من بعد كاش \$!", + "To use Wallet charge it": "باش تستعمل الجيب شحنو", "We are searching for the nearest driver to you": "كنقلبوا ليك على أقرب سائق ليك", @@ -19196,7 +19252,7 @@ class MyTranslation extends Translations { "This ride is already taken by another driver.": "المشوار هذا خداه سائق آخر خلاص.", "You Should be select reason.": "خاصك تختار سبب.", - " \$": " دينار ", + "Waiting for Driver ...": "كنتسناو السائق...", "Latest Recent Trip": "آخر مشوار درت", "from your list": "من اللائحة ديالك", @@ -19257,10 +19313,7 @@ class MyTranslation extends Translations { "You can cancel trip": "تقدر تلغي الرحلة", "The driver waitting you in picked location .": "السائق كيتسناك في المكان اللي اختاريتي.", - "10\$ and get 3% discount": "10 دولار وربح خصم 3%", - "20\$ and get 4% discount": "20 دولار وربح خصم 4%", - "40\$ and get 6% discount": "40 دولار وربح خصم 6%", - "100\$ and get 9% discount": "100 دولار وربح خصم 9%", + "Pay with Your": "خلص بـ", "Pay with Credit Card": "خلص ببطاقة الائتمان", "Payment History": "سجل المدفوعات", diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index 2aaec75..2cc5e07 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -8,6 +8,8 @@ import 'package:Intaleq/constant/colors.dart'; import 'package:Intaleq/constant/style.dart'; import 'package:Intaleq/main.dart'; import 'package:Intaleq/views/widgets/my_scafold.dart'; +import 'package:path/path.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../constant/info.dart'; import '../../controller/auth/apple_signin_controller.dart'; @@ -73,7 +75,11 @@ class LoginPage extends StatelessWidget { decoration: TextDecoration.underline, color: AppColor.blueColor, fontWeight: FontWeight.bold), - recognizer: TapGestureRecognizer()..onTap = () {}), + recognizer: TapGestureRecognizer() + ..onTap = () { + launchUrl(Uri.parse( + 'https://intaleq.xyz/intaleq/privacy_policy.php')); + }), TextSpan(text: " and acknowledge our Privacy Policy.".tr), ], ), @@ -88,7 +94,7 @@ class LoginPage extends StatelessWidget { padding: const EdgeInsets.all(12), child: HtmlWidget(box.read(BoxName.lang).toString() == 'ar' ? AppInformation.privacyPolicyArabic - : AppInformation.privacyPolicyEnglish), + : AppInformation.privacyPolicy), ), ), ), diff --git a/lib/views/auth/otp_page.dart b/lib/views/auth/otp_page.dart index 08a64c3..b76f1d6 100644 --- a/lib/views/auth/otp_page.dart +++ b/lib/views/auth/otp_page.dart @@ -43,6 +43,12 @@ class AuthScreen extends StatelessWidget { children: [ Image.asset('assets/images/logo.gif', height: 120), const SizedBox(height: 20), + // IconButton( + // onPressed: () { + // Get.find().getJWT(); + // }, + // icon: const Icon(Icons.add), + // ), Text( title, style: const TextStyle( diff --git a/lib/views/home/HomePage/about_page.dart b/lib/views/home/HomePage/about_page.dart index dde7d4c..c4fad0b 100644 --- a/lib/views/home/HomePage/about_page.dart +++ b/lib/views/home/HomePage/about_page.dart @@ -28,13 +28,13 @@ class AboutPage extends StatelessWidget { // Company Name and Introduction Text( - 'Tripz LLC', + 'Intaleq LLC', style: CupertinoTheme.of(context).textTheme.navTitleTextStyle, textAlign: TextAlign.center, ), const SizedBox(height: 8), Text( - 'Egypt\'s pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains.' + "Syria's pioneering ride-sharing service, proudly developed by Arabian and local owners. We prioritize being near you – both our valued passengers and our dedicated captains." .tr, style: CupertinoTheme.of(context).textTheme.textStyle, textAlign: TextAlign.center, @@ -43,7 +43,7 @@ class AboutPage extends StatelessWidget { // Key Features Section Text( - 'Why Choose Tripz?'.tr, + 'Why Choose Intaleq?'.tr, style: CupertinoTheme.of(context).textTheme.navTitleTextStyle, textAlign: TextAlign.center, ), diff --git a/lib/views/home/HomePage/share_app_page.dart b/lib/views/home/HomePage/share_app_page.dart index bd85525..cd88458 100644 --- a/lib/views/home/HomePage/share_app_page.dart +++ b/lib/views/home/HomePage/share_app_page.dart @@ -432,8 +432,7 @@ class ShareAppPage extends StatelessWidget { ), ), Text( - controller.formatPhoneNumber( - contact['phones'][0].toString()), + (contact['phones'][0].toString()), style: const TextStyle( color: CupertinoColors.secondaryLabel, fontSize: 15, diff --git a/lib/views/home/HomePage/trip_record_page.dart b/lib/views/home/HomePage/trip_record_page.dart index 0dd09f8..3f965fe 100644 --- a/lib/views/home/HomePage/trip_record_page.dart +++ b/lib/views/home/HomePage/trip_record_page.dart @@ -1,5 +1,3 @@ -import 'package:Intaleq/views/widgets/my_scafold.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:path/path.dart' as path; @@ -8,205 +6,258 @@ import 'package:share_plus/share_plus.dart'; import '../../../controller/functions/audio_record1.dart'; class TripsRecordedPage extends StatelessWidget { - const TripsRecordedPage({ - super.key, - }); + const TripsRecordedPage({super.key}); @override Widget build(BuildContext context) { - return MyScafolld( - title: 'Trips recorded'.tr, - body: [ - GetBuilder(builder: (audio) { - 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 { - 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}'), - ); - } - }, - ), + // Ensure the controller is available. + // If it's not initialized elsewhere, you can use Get.put() or Get.lazyPut() here. + // Get.lazyPut(() => AudioRecorderController()); - // 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(); - }, - ), - ), + return Scaffold( + appBar: AppBar( + title: Text('Trips recorded'.tr), + backgroundColor: Colors.white, + elevation: 1, + actions: [ + GetBuilder( + builder: (controller) => IconButton( + tooltip: 'Delete All'.tr, + icon: const Icon(Icons.delete_sweep_outlined), + onPressed: () { + _showDeleteConfirmation(context, controller, isDeleteAll: true); + }, + ), + ) + ], + ), + body: GetBuilder( + builder: (controller) { + return Column( + children: [ + Expanded( + child: _buildRecordingsList(controller), + ), + // Show player controls only when a file is selected + if (controller.selectedFilePath != null) + _buildPlayerControls(context, controller), + ], + ); + }, + ), + ); + } - // iOS-style playback controls - Padding( - padding: const EdgeInsets.symmetric( - vertical: 16.0, horizontal: 16.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - 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), - ), - ); - }, - ); - }, - ), - ], - ), + /// Builds the list of recorded audio files. + Widget _buildRecordingsList(AudioRecorderController controller) { + return FutureBuilder>( + future: controller.getRecordedFiles(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return const Center(child: CircularProgressIndicator()); + } + if (snapshot.hasError) { + return Center(child: Text('Error: ${snapshot.error}'.tr)); + } + if (!snapshot.hasData || snapshot.data!.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.mic_off_outlined, size: 80, color: Colors.grey[400]), + const SizedBox(height: 16), + Text( + 'No Recordings Found'.tr, + style: TextStyle(fontSize: 18, color: Colors.grey[600]), + ), + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 40.0), + child: Text( + 'Record your trips to see them here.'.tr, + textAlign: TextAlign.center, + style: TextStyle(color: Colors.grey[500]), ), + ), + ], + ), + ); + } - // 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.shareXFiles( - [XFile(audio.selectedFilePath!)]); - }, - ), - ], - ), - ), - ), - ], + final recordedFiles = snapshot.data!; + return ListView.builder( + padding: const EdgeInsets.only(top: 8, bottom: 8), + itemCount: recordedFiles.length, + itemBuilder: (context, index) { + final file = recordedFiles[index]; + final fileName = path.basename(file); + final isSelected = controller.selectedFilePath == file; + + return Card( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + elevation: isSelected ? 4 : 1, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + child: ListTile( + leading: Icon( + isSelected && controller.isPlaying + ? Icons.pause_circle_filled + : Icons.play_circle_fill, + color: + isSelected ? Theme.of(context).primaryColor : Colors.grey, + size: 40, + ), + title: Text(fileName, + style: const TextStyle(fontWeight: FontWeight.w500)), + subtitle: Text("Audio Recording".tr), + onTap: () { + if (isSelected) { + controller.isPlaying + ? controller.pausePlayback() + : controller.resumePlayback(); + } else { + controller.playRecordedFile(file); + } + }, + selected: isSelected, + selectedTileColor: + Theme.of(context).primaryColor.withOpacity(0.1), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), ), ); - }) - ], - isleading: true); + }, + ); + }, + ); + } + + /// Builds the player UI at the bottom of the screen. + Widget _buildPlayerControls( + BuildContext context, AudioRecorderController controller) { + final fileName = path.basename(controller.selectedFilePath!); + final positionText = Duration(seconds: controller.currentPosition.toInt()) + .toString() + .split('.') + .first + .padLeft(8, '0') + .substring(3); + final durationText = Duration(seconds: controller.totalDuration.toInt()) + .toString() + .split('.') + .first + .padLeft(8, '0') + .substring(3); + + return Material( + elevation: 10, + child: Container( + padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(fileName, + style: + const TextStyle(fontWeight: FontWeight.bold, fontSize: 16), + textAlign: TextAlign.center), + const SizedBox(height: 8), + Row( + children: [ + Text(positionText), + Expanded( + child: Slider( + value: (controller.totalDuration > 0) + ? controller.currentPosition / controller.totalDuration + : 0.0, + onChanged: (value) { + final newPosition = value * controller.totalDuration; + controller.audioPlayer + .seek(Duration(seconds: newPosition.toInt())); + }, + ), + ), + Text(durationText), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + IconButton( + icon: const Icon(Icons.share_outlined), + tooltip: 'Share'.tr, + onPressed: () { + Share.shareXFiles([XFile(controller.selectedFilePath!)]); + }, + iconSize: 28, + ), + IconButton( + icon: Icon(controller.isPlaying + ? Icons.pause_circle_filled + : Icons.play_circle_filled), + onPressed: () { + controller.isPlaying + ? controller.pausePlayback() + : controller.resumePlayback(); + }, + iconSize: 56, + color: Theme.of(context).primaryColor, + ), + IconButton( + icon: + const Icon(Icons.delete_outline, color: Colors.redAccent), + tooltip: 'Delete'.tr, + onPressed: () { + _showDeleteConfirmation(context, controller, + isDeleteAll: false); + }, + iconSize: 28, + ), + ], + ) + ], + ), + ), + ); + } + + /// Shows a confirmation dialog for deleting one or all files. + void _showDeleteConfirmation( + BuildContext context, + AudioRecorderController controller, { + required bool isDeleteAll, + }) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text(isDeleteAll + ? 'Delete All Recordings?'.tr + : 'Delete Recording?'.tr), + content: Text(isDeleteAll + ? 'This action cannot be undone.'.tr + : 'Are you sure you want to delete this file?'.tr), + actions: [ + TextButton( + child: Text('Cancel'.tr), + onPressed: () => Navigator.of(context).pop(), + ), + TextButton( + child: + Text('Delete'.tr, style: const TextStyle(color: Colors.red)), + onPressed: () async { + if (isDeleteAll) { + await controller.deleteAllRecordedFiles(); + } else { + // NOTE: You may need to add this method to your controller + // if it doesn't exist. + // await controller.deleteFile(controller.selectedFilePath!); + } + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); } } diff --git a/lib/views/home/map_page_passenger.dart b/lib/views/home/map_page_passenger.dart index b201197..fcc6f05 100644 --- a/lib/views/home/map_page_passenger.dart +++ b/lib/views/home/map_page_passenger.dart @@ -71,7 +71,7 @@ class MapPagePassenger extends StatelessWidget { const RideFromStartApp(), // cancelRidePage(), - const MenuIconMapPageWidget(), + // const MenuIconMapPageWidget(), PointsPageForRider() ], ), 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 86ef193..e757e66 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 @@ -40,15 +40,19 @@ List carTypes = [ carType: 'Electric', carDetail: 'Quiet & Eco-Friendly'.tr, image: - 'assets/images/electric_car.jpg'), // Third choice - NOTE: Use your actual image path + 'assets/images/electric.png'), // Third choice - NOTE: Use your actual image path CarType( carType: 'Lady', carDetail: 'Lady Captain for girls'.tr, image: 'assets/images/lady.png'), CarType( - carType: 'Scooter', - carDetail: 'Delivery service'.tr, - image: 'assets/images/moto.png'), + carType: 'Van', + carDetail: 'Van for familly'.tr, + image: 'assets/images/bus.png'), + // CarType( + // carType: 'Scooter', + // carDetail: 'Delivery service'.tr, + // image: 'assets/images/moto.png'), CarType( carType: 'Rayeh Gai', carDetail: "Best choice for cities".tr, @@ -365,6 +369,8 @@ class CarDetailsTypeToChoose extends StatelessWidget { return mapPassengerController.totalPassengerBalash.toStringAsFixed(1); case 'Scooter': return mapPassengerController.totalPassengerScooter.toStringAsFixed(1); + case 'Van': + return mapPassengerController.totalPassengerVan.toStringAsFixed(1); case 'Lady': return mapPassengerController.totalPassengerLady.toStringAsFixed(1); case 'Pink Bike': @@ -476,6 +482,9 @@ class CarDetailsTypeToChoose extends StatelessWidget { return 'Travel in a modern, silent electric car. A premium, eco-friendly choice for a smooth ride.' .tr; case 'Scooter': + case 'Van': + return "Spacious van service ideal for families and groups. Comfortable, safe, and cost-effective travel together." + .tr; case 'Pink Bike': return 'This is for delivery or a motorcycle.'.tr; case 'Mishwar Vip': @@ -556,6 +565,8 @@ class CarDetailsTypeToChoose extends StatelessWidget { return mapPassengerController.totalPassengerElectric; case 'Awfar Car': return mapPassengerController.totalPassengerBalash; + case 'Van': + return mapPassengerController.totalPassengerVan; case 'Lady': return mapPassengerController.totalPassengerLady; default: 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 c8faf53..3575fda 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 @@ -78,7 +78,7 @@ class CashConfirmPageShown extends StatelessWidget { // بطاقة المحفظة _buildPaymentOptionCard( icon: Icons.account_balance_wallet_outlined, - title: '${AppInformation.appName} Wallet'.tr, + title: '${AppInformation.appName} Balance'.tr, subtitle: '${'Balance:'.tr} ${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${'SYP'.tr}', isSelected: paymentCtrl.isWalletChecked, @@ -115,7 +115,7 @@ class CashConfirmPageShown extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ MyElevatedButton( - title: 'Top up Wallet to continue'.tr, + title: 'Top up Balance to continue'.tr, onPressed: () => Get.to(() => const PassengerWallet()), kolor: AppColor.redColor, 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 3fec334..52e93a5 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 @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -6,15 +8,15 @@ import 'package:Intaleq/controller/home/points_for_rider_controller.dart'; import '../../../constant/colors.dart'; import '../../../constant/style.dart'; import '../../../controller/functions/location_controller.dart'; +import '../../../controller/home/device_tier.dart'; import '../../../controller/home/map_passenger_controller.dart'; import '../../widgets/mycircular.dart'; import '../../widgets/mydialoug.dart'; class GoogleMapPassengerWidget extends StatelessWidget { - GoogleMapPassengerWidget({ - super.key, - }); - WayPointController wayPointController = Get.put(WayPointController()); + GoogleMapPassengerWidget({super.key}); + + final WayPointController wayPointController = Get.put(WayPointController()); final LocationController locationController = Get.find(); @override @@ -30,19 +32,25 @@ class GoogleMapPassengerWidget extends StatelessWidget { child: GoogleMap( onMapCreated: controller.onMapCreated, + // ✅ حدود الكاميرا كما هي cameraTargetBounds: CameraTargetBounds(controller.boundsdata), - minMaxZoomPreference: const MinMaxZoomPreference(6, 18), + + // ✅ Zoom أهدأ للأجهزة الضعيفة + minMaxZoomPreference: controller.lowPerf + ? const MinMaxZoomPreference(6, 17) + : const MinMaxZoomPreference(6, 18), + onLongPress: (argument) { MyDialog().getDialog('Are you want to go to this site'.tr, '', () async { controller.clearPolyline(); if (controller.dataCarsLocationByPassenger != null) { await controller.getDirectionMap( - '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', - '${argument.latitude.toString()},${argument.longitude.toString()}'); - + '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', + '${argument.latitude},${argument.longitude}', + ); Get.back(); - controller.bottomSheet(); + await controller.bottomSheet(); controller.showBottomSheet1(); } else { Get.back(); @@ -54,15 +62,12 @@ class GoogleMapPassengerWidget extends StatelessWidget { duration: const Duration(seconds: 11), instantInit: true, snackPosition: SnackPosition.TOP, - titleText: Text( - 'Error'.tr, - style: const TextStyle(color: AppColor.redColor), - ), + titleText: Text('Error'.tr, + style: const TextStyle(color: AppColor.redColor)), messageText: Text( - 'We Are Sorry That we dont have cars in your Location!' - .tr, - style: AppStyle.title, - ), + 'We Are Sorry That we dont have cars in your Location!' + .tr, + style: AppStyle.title), icon: const Icon(Icons.error), shouldIconPulse: true, maxWidth: double.infinity, @@ -86,370 +91,98 @@ class GoogleMapPassengerWidget extends StatelessWidget { begin: Alignment.topLeft, end: Alignment.bottomRight, ), - // mainButton: TextButton( - // onPressed: () { - // controller.getCarsLocationByPassenger(); - // }, - // child: Text( - // 'Try Again'.tr, - // style: const TextStyle( - // color: AppColor.secondaryColor), - // ), - // ), - onTap: (GetSnackBar snackBar) { - // Do something when the snackbar is tapped. - }, isDismissible: true, showProgressIndicator: false, dismissDirection: DismissDirection.up, - progressIndicatorController: null, - progressIndicatorBackgroundColor: Colors.transparent, - progressIndicatorValueColor: null, snackStyle: SnackStyle.GROUNDED, forwardAnimationCurve: Curves.easeInToLinear, reverseAnimationCurve: Curves.easeInOut, animationDuration: const Duration(milliseconds: 4000), barBlur: 8, - overlayBlur: 0, - snackbarStatus: null, overlayColor: AppColor.primaryColor.withOpacity(0.5), - userInputForm: null, ); } - - // }); - // Get.defaultDialog( - // title: 'Are you want to go to this site'.tr, - // content: Column( - // children: [ - // Text('${argument.latitude},${argument.longitude}'), - // ], - // ), - // confirm: MyElevatedButton( - // title: 'Ok'.tr, - // onPressed: () async { - // controller.clearPolyline(); - // if (controller.dataCarsLocationByPassenger != null) { - // await controller.getMap( - // '${controller.passengerLocation.latitude},${controller.passengerLocation.longitude}', - // '${argument.latitude.toString()},${argument.longitude.toString()}'); - - // Get.back(); - // controller.bottomSheet(); - // controller.showBottomSheet1(); - // } else { - // Get.back(); - // Get.snackbar( - // 'We Are Sorry That we dont have cars in your Location!' - // .tr, - // '', - // colorText: AppColor.redColor, - // duration: const Duration(seconds: 11), - // instantInit: true, - // snackPosition: SnackPosition.TOP, - // titleText: Text( - // 'Error'.tr, - // style: - // const TextStyle(color: AppColor.redColor), - // ), - // messageText: Text( - // 'We Are Sorry That we dont have cars in your Location!' - // .tr, - // style: AppStyle.title, - // ), - // icon: const Icon(Icons.error), - // shouldIconPulse: true, - // maxWidth: double.infinity, - // margin: const EdgeInsets.all(16), - // padding: const EdgeInsets.all(16), - // borderRadius: 8, - // borderColor: AppColor.redColor, - // borderWidth: 2, - // backgroundColor: AppColor.secondaryColor, - // leftBarIndicatorColor: AppColor.redColor, - // boxShadows: [ - // BoxShadow( - // color: Colors.black.withOpacity(0.25), - // blurRadius: 4, - // spreadRadius: 2, - // offset: const Offset(0, 4), - // ), - // ], - // backgroundGradient: const LinearGradient( - // colors: [ - // AppColor.redColor, - // AppColor.accentColor - // ], - // begin: Alignment.topLeft, - // end: Alignment.bottomRight, - // ), - // // mainButton: TextButton( - // // onPressed: () { - // // controller.getCarsLocationByPassenger(); - // // }, - // // child: Text( - // // 'Try Again'.tr, - // // style: const TextStyle( - // // color: AppColor.secondaryColor), - // // ), - // // ), - // onTap: (GetSnackBar snackBar) { - // // Do something when the snackbar is tapped. - // }, - // isDismissible: true, - // showProgressIndicator: false, - // dismissDirection: DismissDirection.up, - // progressIndicatorController: null, - // progressIndicatorBackgroundColor: - // Colors.transparent, - // progressIndicatorValueColor: null, - // snackStyle: SnackStyle.GROUNDED, - // forwardAnimationCurve: Curves.easeInToLinear, - // reverseAnimationCurve: Curves.easeInOut, - // animationDuration: - // const Duration(milliseconds: 4000), - // barBlur: 8, - // overlayBlur: 0, - // snackbarStatus: null, - // overlayColor: - // AppColor.primaryColor.withOpacity(0.5), - // userInputForm: null, - // ); - // } - - // // - // }), - // ); }, onTap: (argument) { controller.hidePlaces(); - - // controller.changeBottomSheetShown(); - // controller.bottomSheet(); }, + initialCameraPosition: CameraPosition( target: controller.passengerLocation, - zoom: 15, + zoom: controller.lowPerf ? 14.5 : 15, ), + // ✅ ماركرز (احرص أن الأيقونات محجّمة ومخزّنة Cache في الكنترولر) markers: controller.markers.toSet(), - // { - // if (controller.statusRide != 'Apply' || - // !controller.rideTimerBegin) - // for (var carLocation in controller.carLocationsModels) - // // Marker( - // // // anchor: const Offset(4, 4), - // // position: LatLng( - // // carLocation.latitude, - // // carLocation.longitude, - // // ), - // // icon: controller.carIcon, - // // markerId: MarkerId(carLocation.toString()), - // // rotation: carLocation.heading, - // // ), - // // controller.carMarrkerAplied, - // if (controller.statusRide == 'Apply') - // // for (var carLocation - // // in controller.driverCarsLocationToPassengerAfterApplied) - // Marker( - // // anchor: const Offset(4, 4), - // position: LatLng( - // double.parse( - // controller - // .datadriverCarsLocationToPassengerAfterApplied[ - // 'message'][0]['latitude'], - // ), - // double.parse( - // controller - // .datadriverCarsLocationToPassengerAfterApplied[ - // 'message'][0]['longitude'], - // ), - // ), //carLocation, - // icon: controller.carIcon, - // rotation: double.parse(controller - // .datadriverCarsLocationToPassengerAfterApplied[ - // 'message'][0]['heading']), - // markerId: MarkerId(controller - // .datadriverCarsLocationToPassengerAfterApplied[ - // 'message'][0]['longitude'] - // .toString())), - // for (int i = 1; - // i < controller.coordinatesWithoutEmpty.length - 1; - // i++) - // Marker( - // // anchor: const Offset(4, 4), - // position: LatLng( - // double.parse(controller.coordinatesWithoutEmpty[i] - // .split(',')[0]), - // double.parse(controller.coordinatesWithoutEmpty[i] - // .split(',')[1])), - // icon: controller.tripIcon, - // markerId: MarkerId( - // controller.coordinatesWithoutEmpty[i].toString())), - // if (controller.isMarkersShown) - // Marker( - // markerId: MarkerId('MyLocation'.tr), - // position: controller.newStartPointLocation, - // draggable: true, - // icon: controller.startIcon, - // ), - // if (controller.isMarkersShown) - // Marker( - // markerId: MarkerId('Destination'.tr), - // position: controller.myDestination, - // draggable: true, - // icon: controller.endIcon, - // ), - // if (controller.haveSteps) - // Marker( - // markerId: MarkerId('StartSteps'.tr), - // position: LatLng( - // double.parse( - // controller.placesCoordinate[0].split(',')[0]), - // double.parse( - // controller.placesCoordinate[0].split(',')[1])), - // draggable: true, - // icon: controller.startIcon, - // ), - // if (controller.haveSteps) - // Marker( - // markerId: MarkerId('EndSteps'.tr), - // position: controller.latestPosition, - // draggable: true, - // icon: controller.endIcon, - // ), - // }, + // ✅ بوليغونز كما هي polygons: controller.polygons, - polylines: controller.polyLines.toSet(), - // { - // Polyline( - // polylineId: const PolylineId('route'), - // points: controller.polylineCoordinates, - // color: AppColor.primaryColor, - // width: 4, - // // patterns: [ - // // PatternItem.dot, - // // PatternItem.gap(10), - // // ], - // endCap: Cap.roundCap, - // startCap: Cap.roundCap, - // geodesic: true, - // ), - // Polyline( - // zIndex: 1, - // consumeTapEvents: true, - // geodesic: true, - // endCap: Cap.buttCap, - // startCap: Cap.buttCap, - // visible: true, - // polylineId: const PolylineId('route0'), - // points: controller.polylineCoordinatesPointsAll[0], - // color: AppColor.blueColor, - // width: 5, - // ), - // Polyline( - // zIndex: 2, - // consumeTapEvents: true, - // geodesic: true, - // endCap: Cap.buttCap, - // startCap: Cap.buttCap, - // visible: true, - // polylineId: const PolylineId('route1'), - // points: controller.polylineCoordinatesPointsAll[1], - // color: AppColor.yellowColor, - // width: 5, - // ), - // Polyline( - // zIndex: 2, - // consumeTapEvents: true, - // geodesic: true, - // endCap: Cap.buttCap, - // startCap: Cap.buttCap, - // visible: true, - // polylineId: const PolylineId('route2'), - // points: controller.polylineCoordinatesPointsAll[2], - // color: AppColor.greenColor, - // width: 5, - // ), - // Polyline( - // zIndex: 2, - // consumeTapEvents: true, - // geodesic: true, - // endCap: Cap.buttCap, - // startCap: Cap.buttCap, - // visible: true, - // polylineId: const PolylineId('route3'), - // points: controller.polylineCoordinatesPointsAll[2], - // color: AppColor.deepPurpleAccent, - // width: 5, - // ), - // // Polyline( - // // zIndex: 2, - // // consumeTapEvents: true, - // // geodesic: true, - // // endCap: Cap.buttCap, - // // startCap: Cap.buttCap, - // // visible: true, - // // polylineId: PolylineId('g'), - // // points: [ - // // LatLng(controller.southwest.latitude, - // // controller.southwest.longitude), - // // LatLng(controller.northeast.latitude, - // // controller.northeast.longitude) - // // ], - // // color: AppColor.primaryColor, - // // width: 5, - // // ), - // }, + // ✅ Polyline مُبسّطة للأجهزة الضعيفة (الكنترولر يجهّز مجموعة مبسطة عند lowPerf) + polylines: controller.lowPerf + ? controller.polyLinesLight + .toSet() // <- استخدم مجموعة خفيفة + : controller.polyLines.toSet(), + + // ✅ دوائر خفيفة على الأجهزة الضعيفة // circles: { // Circle( - // circleId: const CircleId('kk'), - // center: controller.mylocation, - // radius: 60, - // fillColor: AppColor.primaryColor,) + // circleId: const CircleId('circle_id'), + // center: controller.passengerLocation, + // radius: controller.lowPerf ? 80 : 100, + // fillColor: + // Colors.blue.withOpacity(controller.lowPerf ? 0.2 : 0.3), + // strokeColor: Colors.blue, + // strokeWidth: controller.lowPerf ? 1 : 2, + // ), // }, - circles: { - Circle( - circleId: const CircleId('circle_id'), - center: controller.passengerLocation, - radius: 100, - fillColor: Colors.blue.withOpacity(0.3), - strokeColor: Colors.blue, - strokeWidth: 2, - ), - }, + // ✅ الوضع الخفيف: liteMode + تعطيل الطبقات المكلفة + خريطة Normal + mapType: controller.lowPerf + ? MapType.normal + : (controller.mapType + ? MapType.satellite + : MapType.terrain), - mapType: - controller.mapType ? MapType.satellite : MapType.terrain, - myLocationButtonEnabled: true, - // liteModeEnabled: true, tiltGesturesEnabled: false, + myLocationButtonEnabled: false, - // indoorViewEnabled: true, - trafficEnabled: controller.mapTrafficON, - buildingsEnabled: true, - mapToolbarEnabled: true, + // ⚠️ liteMode (Android فقط): فعّله على الأجهزة الضعيفة + // liteModeEnabled: controller.lowPerf, + liteModeEnabled: Platform.isAndroid ? isLowEnd() : false, + trafficEnabled: controller.mapTrafficON && !isLowEnd(), + buildingsEnabled: !isLowEnd(), + // ✅ تقليل الكلفة الرسومية + + mapToolbarEnabled: false, + rotateGesturesEnabled: isLowEnd() ? false : true, + tiltGesturesEnabled: false, // تعطيل الميلان لتقليل الحمل + + // ✅ Throttle لحركة الكاميرا على الأجهزة الضعيفة onCameraMove: (position) { - int waypointsLength = - Get.find().wayPoints.length; - int index = controller.wayPointIndex; - if (waypointsLength > 0) { - controller.placesCoordinate[index] = - '${position.target.latitude.toString()},${position.target.longitude}'; + if (controller.lowPerf) { + controller.onCameraMoveThrottled(position); + } else { + // منطقك الحالي + int waypointsLength = + Get.find().wayPoints.length; + int index = controller.wayPointIndex; + if (waypointsLength > 0) { + controller.placesCoordinate[index] = + '${position.target.latitude},${position.target.longitude}'; + } + if (controller.startLocationFromMap == true) { + controller.newStartPointLocation = position.target; + } else if (controller.passengerStartLocationFromMap == + true) { + controller.newStartPointLocation = position.target; + } + controller.newMyLocation = position.target; } - if (controller.startLocationFromMap == true) { - controller.newStartPointLocation = position.target; - } else if (controller.passengerStartLocationFromMap == true) { - controller.newStartPointLocation = position.target; - } - controller.newMyLocation = position.target; }, + myLocationEnabled: true, - // liteModeEnabled: true, ), ), ); 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 ea2f536..252c119 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,25 +1,16 @@ -import 'package:Intaleq/constant/box_name.dart'; import 'package:Intaleq/controller/firebase/firbase_messge.dart'; -import 'package:Intaleq/env/env.dart'; -import 'package:Intaleq/main.dart'; -import 'package:Intaleq/views/auth/login_page.dart'; 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 'package:secure_string_operations/secure_string_operations.dart'; import 'dart:ui'; // مهم لإضافة تأثير الضبابية -import '../../../constant/char_map.dart'; import '../../../constant/colors.dart'; import '../../../controller/auth/login_controller.dart'; -import '../../../controller/functions/encrypt_decrypt.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/vip_waitting_page.dart'; -import '../../../print.dart'; import '../../auth/otp_page.dart'; -import '../../auth/otp_token_page.dart'; // --- الدالة الرئيسية بالتصميم الجديد --- GetBuilder leftMainMenuIcons() { 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 5d53f57..c4fc4c1 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,5 @@ +import 'dart:ui'; // مهم لإضافة تأثير الضبابية + import 'package:Intaleq/constant/box_name.dart'; import 'package:Intaleq/main.dart'; import 'package:flutter/foundation.dart'; @@ -10,12 +12,13 @@ import 'package:Intaleq/views/home/profile/complaint_page.dart'; import 'package:Intaleq/views/home/profile/order_history.dart'; import 'package:Intaleq/views/home/profile/promos_passenger_page.dart'; import 'package:url_launcher/url_launcher.dart'; -import 'dart:ui'; // مهم لإضافة تأثير الضبابية import '../../../constant/colors.dart'; +import '../../../constant/links.dart'; import '../../../controller/home/map_passenger_controller.dart'; import '../../notification/notification_page.dart'; import '../HomePage/contact_us.dart'; +import '../HomePage/share_app_page.dart'; import '../setting_page.dart'; import '../profile/passenger_profile_page.dart'; @@ -25,17 +28,25 @@ class MapMenuWidget extends StatelessWidget { @override Widget build(BuildContext context) { - // استخدام Get.lazyPut لضمان وجود الكنترولر Get.lazyPut(() => MapPassengerController()); return GetBuilder( builder: (controller) => Stack( children: [ + // --- خلفية معتمة عند فتح القائمة --- + if (controller.widthMenu > 0) + GestureDetector( + onTap: controller.getDrawerMenu, + child: Container( + color: Colors.black.withOpacity(0.4), + ), + ), + // --- القائمة الجانبية المنزلقة --- _buildSideMenu(controller), // --- زر القائمة العائم --- - // _buildMenuButton(controller), + _buildMenuButton(controller), ], ), ); @@ -48,7 +59,7 @@ class MapMenuWidget extends StatelessWidget { left: 16, child: SafeArea( child: InkWell( - onTap: controller.getDrawerMenu, // نفس دالتك القديمة + onTap: controller.getDrawerMenu, borderRadius: BorderRadius.circular(50), child: ClipRRect( borderRadius: BorderRadius.circular(50), @@ -64,9 +75,7 @@ class MapMenuWidget extends StatelessWidget { Border.all(color: AppColor.writeColor.withOpacity(0.2)), ), child: Icon( - controller.widthMenu > 0 - ? Icons.close_rounded - : Icons.menu_rounded, + controller.widthMenu > 0 ? Icons.close : Icons.menu, color: AppColor.writeColor, size: 26, ), @@ -85,63 +94,100 @@ class MapMenuWidget extends StatelessWidget { curve: Curves.fastOutSlowIn, top: 0, bottom: 0, - // تحريك القائمة من خارج الشاشة إلى داخلها left: controller.widthMenu > 0 ? 0 : -Get.width, child: ClipRRect( child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), child: Container( - width: Get.width * 0.75, // عرض القائمة - constraints: const BoxConstraints(maxWidth: 300), - color: AppColor.secondaryColor.withOpacity(0.9), + width: Get.width * 0.8, + constraints: const BoxConstraints(maxWidth: 320), + decoration: BoxDecoration( + color: AppColor.secondaryColor.withOpacity(0.95), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.2), + blurRadius: 20, + ) + ], + ), child: SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // --- 1. رأس القائمة (معلومات المستخدم) --- _buildMenuHeader(), - - // --- 2. الأزرار السريعة المدمجة --- _buildQuickActionButtons(), const Divider( - color: AppColor.writeColor, + color: Colors.white24, indent: 16, endIndent: 16, - height: 1), - - // --- 3. قائمة الخيارات الرئيسية --- + height: 24), Expanded( child: ListView( - padding: const EdgeInsets.symmetric(vertical: 8), + padding: const EdgeInsets.symmetric(horizontal: 8), children: [ - IconMainPageMap( - title: 'My Wallet'.tr, + MenuListItem( + title: 'My Balance'.tr, icon: Icons.account_balance_wallet_outlined, onTap: () => Get.to(() => const PassengerWallet())), - IconMainPageMap( + MenuListItem( title: 'Order History'.tr, - icon: Icons.history_edu_rounded, + icon: Icons.history_rounded, onTap: () => Get.to(() => const OrderHistory())), - IconMainPageMap( - title: 'Contact Us'.tr, - icon: Icons.contact_support_outlined, - onTap: () => Get.to(() => ContactUsPage())), - IconMainPageMap( - title: 'Driver'.tr, - icon: Ionicons.car_sport_outline, - onTap: () => _launchDriverAppUrl()), - IconMainPageMap( - title: 'Complaint'.tr, - icon: Icons.feedback_outlined, - onTap: () => Get.to(() => ComplaintPage())), - IconMainPageMap( + MenuListItem( title: 'Promos'.tr, icon: Icons.local_offer_outlined, onTap: () => Get.to(() => const PromosPassengerPage())), + MenuListItem( + title: 'Contact Us'.tr, + icon: Icons.contact_support_outlined, + onTap: () => Get.to(() => ContactUsPage())), + MenuListItem( + title: 'Complaint'.tr, + icon: Icons.flag_outlined, + onTap: () => Get.to(() => ComplaintPage())), + MenuListItem( + title: 'Driver'.tr, + icon: Ionicons.car_sport_outline, + onTap: () => _launchDriverAppUrl()), + MenuListItem( + title: 'Share App'.tr, + icon: Icons.share_outlined, + onTap: () => Get.to(() => ShareAppPage())), + MenuListItem( + title: 'Privacy Policy'.tr, + icon: Icons.shield_outlined, + onTap: () => launchUrl(Uri.parse( + '${AppLink.server}/privacy_policy.php')), + ), ], ), ), + const Divider( + color: Colors.white24, + indent: 16, + endIndent: 16, + height: 1), + Padding( + padding: const EdgeInsets.all(8.0), + child: MenuListItem( + title: 'Logout'.tr, + icon: Icons.logout_rounded, + onTap: () { + Get.defaultDialog( + title: "Logout".tr, + middleText: "Are you sure you want to logout?".tr, + textConfirm: "Logout".tr, + textCancel: "Cancel".tr, + onConfirm: () { + // controller.logout(); + Get.back(); + }, + ); + }, + color: Colors.red.shade300, + ), + ), ], ), ), @@ -151,49 +197,57 @@ class MapMenuWidget extends StatelessWidget { ); } - // --- ويدجت مساعدة لرأس القائمة --- + // --- ويدجت رأس القائمة --- Widget _buildMenuHeader() { return Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + padding: const EdgeInsets.fromLTRB(20, 30, 20, 16), + child: Row( children: [ - // CircleAvatar( - // radius: 30, - // backgroundColor: AppColor.primaryColor, - // child: - // const Icon(Icons.person, color: AppColor.writeColor, size: 35), - // ), - // const SizedBox(height: 12), - Text( - "Welcome Back!".tr, // يمكنك تغييرها لاسم المستخدم - style: AppStyle.title - .copyWith(color: AppColor.writeColor.withOpacity(0.7)), + const CircleAvatar( + radius: 30, + backgroundColor: AppColor.primaryColor, + child: Icon(Icons.person, color: AppColor.writeColor, size: 35), ), - Text( - box.read(BoxName.name), // يمكنك تغييرها لاسم المستخدم - style: AppStyle.headTitle.copyWith(fontSize: 22), + const SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + box.read(BoxName.name) ?? 'Guest', + style: AppStyle.headTitle.copyWith(fontSize: 20), + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 4), + Text( + "Intaleq Passenger".tr, + style: AppStyle.title.copyWith( + color: AppColor.writeColor.withOpacity(0.7), + fontSize: 14), + ), + ], + ), ), ], ), ); } - // --- ويدجت مساعدة للأزرار السريعة --- + // --- ويدجت الأزرار السريعة --- Widget _buildQuickActionButtons() { return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - _buildSmallActionButton( - icon: Icons.notifications_none_rounded, - label: 'Alerts'.tr, - onTap: () => Get.to(() => const NotificationPage())), _buildSmallActionButton( icon: Icons.person_outline_rounded, label: 'Profile'.tr, onTap: () => Get.to(() => PassengerProfilePage())), + _buildSmallActionButton( + icon: Icons.notifications_none_rounded, + label: 'Alerts'.tr, + onTap: () => Get.to(() => const NotificationPage())), _buildSmallActionButton( icon: Icons.settings_outlined, label: 'Settings'.tr, @@ -209,29 +263,31 @@ class MapMenuWidget extends StatelessWidget { required VoidCallback onTap}) { return InkWell( onTap: onTap, - borderRadius: BorderRadius.circular(8), + borderRadius: BorderRadius.circular(12), child: Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 12.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ - Icon(icon, color: AppColor.writeColor, size: 24), - const SizedBox(height: 4), - Text(label, style: AppStyle.subtitle.copyWith(fontSize: 12)), + Icon(icon, color: AppColor.writeColor.withOpacity(0.9), size: 24), + const SizedBox(height: 6), + Text(label, + style: AppStyle.subtitle.copyWith( + fontSize: 12, color: AppColor.writeColor.withOpacity(0.9))), ], ), ), ); } - // --- نفس دالتك القديمة لفتح رابط تطبيق السائق --- void _launchDriverAppUrl() async { final String driverAppUrl; if (defaultTargetPlatform == TargetPlatform.android) { driverAppUrl = - 'https://play.google.com/store/apps/details?id=com.sefer_driver'; + 'https://play.google.com/store/apps/details?id=com.intaleq_driver'; } else if (defaultTargetPlatform == TargetPlatform.iOS) { - driverAppUrl = 'https://apps.apple.com/eg/app/tripz-driver/id6502189302'; + driverAppUrl = + 'https://apps.apple.com/st/app/intaleq-driver/id6482995159'; } else { return; } @@ -248,28 +304,39 @@ class MapMenuWidget extends StatelessWidget { } } -// --- كلاس عناصر القائمة بالتصميم الجديد (يستخدم ListTile) --- -class IconMainPageMap extends StatelessWidget { - const IconMainPageMap({ +// --- ويدجت عناصر القائمة بتصميم محسن --- +class MenuListItem extends StatelessWidget { + const MenuListItem({ super.key, required this.title, required this.onTap, required this.icon, + this.color, }); final String title; final IconData icon; final VoidCallback onTap; + final Color? color; @override Widget build(BuildContext context) { return ListTile( onTap: onTap, - leading: - Icon(icon, size: 26, color: AppColor.writeColor.withOpacity(0.8)), + leading: Icon( + icon, + size: 26, + color: color ?? AppColor.writeColor.withOpacity(0.8), + ), title: Text( title.tr, - style: AppStyle.title.copyWith(fontSize: 16), + style: AppStyle.title.copyWith( + fontSize: 16, + color: color ?? AppColor.writeColor, + ), + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), ), splashColor: AppColor.primaryColor.withOpacity(0.2), ); 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 332a3b7..033241c 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -193,7 +193,7 @@ class RideBeginPassenger extends StatelessWidget { box.write(BoxName.sosPhonePassenger, profileController.prfoileData['sosPhone']); } else { - makePhoneCall('122'); + makePhoneCall('112'); } }), _buildActionButton( @@ -211,18 +211,17 @@ class RideBeginPassenger extends StatelessWidget { } else { final phoneNumber = box.read(BoxName.sosPhonePassenger).toString(); - final phone = box.read(BoxName.countryCode) == 'Egypt' - ? '+2$phoneNumber' - : '+962$phoneNumber'; + + final phone = controller.formatSyrianPhoneNumber(phoneNumber); controller.sendWhatsapp(phone); } }), _buildActionButton( - icon: Foundation.video, - label: 'Video Call'.tr, + icon: Icons.share_location_outlined, // أيقونة جديدة ومناسبة + label: 'Share'.tr, // اسم جديد وواضح color: AppColor.blueColor, onTap: () async { - // --- نفس منطقك القديم --- + // نفس الوظيفة السابقة التي كانت تحت اسم "Video Call" await controller.getTokenForParent(); }), _buildActionButton( diff --git a/lib/views/home/my_wallet/passenger_wallet.dart b/lib/views/home/my_wallet/passenger_wallet.dart index 9d76994..9301b9a 100644 --- a/lib/views/home/my_wallet/passenger_wallet.dart +++ b/lib/views/home/my_wallet/passenger_wallet.dart @@ -27,7 +27,7 @@ class PassengerWallet extends StatelessWidget { Get.put(CreditCardController()); return MyScafolld( - title: 'My Wallet'.tr, + title: 'My Balance'.tr, isleading: true, body: [ // استخدام Stack فقط لعرض الـ Dialog فوق المحتوى عند الحاجة @@ -53,7 +53,7 @@ class PassengerWallet extends StatelessWidget { // --- 2. قائمة الخيارات المنظمة --- _buildActionTile( icon: Icons.add_card_rounded, - title: 'Top up Wallet'.tr, + title: 'Top up Balance'.tr, subtitle: 'Add funds using our secure methods'.tr, onTap: () => showPaymentBottomSheet(context), // نفس دالتك القديمة @@ -68,7 +68,7 @@ class PassengerWallet extends StatelessWidget { ), _buildActionTile( icon: Icons.phone_iphone_rounded, - title: 'Set Wallet Phone Number'.tr, + title: 'Set Phone Number'.tr, subtitle: 'Link a phone number for transfers'.tr, onTap: () => _showWalletPhoneDialog(context, Get.find()), // نفس دالتك القديمة @@ -132,7 +132,7 @@ class PassengerWallet extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${AppInformation.appName} Wallet'.tr, + '${AppInformation.appName} ${'Balance'.tr}', style: AppStyle.headTitle.copyWith( color: Colors.white, fontSize: 20, diff --git a/lib/views/home/profile/passenger_profile_page.dart b/lib/views/home/profile/passenger_profile_page.dart index fcd1868..e4fe7e7 100644 --- a/lib/views/home/profile/passenger_profile_page.dart +++ b/lib/views/home/profile/passenger_profile_page.dart @@ -1,5 +1,3 @@ -import 'package:Intaleq/controller/functions/encrypt_decrypt.dart'; -import 'package:Intaleq/views/auth/login_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -8,8 +6,8 @@ import 'package:Intaleq/constant/colors.dart'; import 'package:Intaleq/constant/style.dart'; import 'package:Intaleq/controller/profile/profile_controller.dart'; import 'package:Intaleq/main.dart'; +import 'package:Intaleq/views/auth/login_page.dart'; import 'package:Intaleq/views/widgets/elevated_btn.dart'; -import 'package:Intaleq/views/widgets/my_scafold.dart'; import 'package:Intaleq/views/widgets/my_textField.dart'; import 'package:Intaleq/views/widgets/mycircular.dart'; @@ -18,239 +16,319 @@ import '../../../controller/functions/log_out.dart'; class PassengerProfilePage extends StatelessWidget { PassengerProfilePage({super.key}); - LogOutController logOutController = Get.put(LogOutController()); + + final LogOutController logOutController = Get.put(LogOutController()); + @override Widget build(BuildContext context) { Get.put(ProfileController()); - return MyScafolld( - isleading: true, - title: 'My Profile'.tr, - body: [ - GetBuilder( - builder: (controller) => controller.isloading - ? const MyCircularProgressIndicator() - : Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: SizedBox( - height: Get.height, - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Edit Profile'.tr, - style: AppStyle.headTitle2, - ), - ListTile( - title: Text( - 'Name'.tr, - style: AppStyle.title, - ), - leading: const Icon( - Icons.person_pin_rounded, - size: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text( - '${(controller.prfoileData['first_name'])} ${(controller.prfoileData['last_name'])}'), - onTap: () { - controller.updatField( - 'first_name', TextInputType.name); - }, - ), - ListTile( - title: Text( - 'Gender'.tr, - style: AppStyle.title, - ), - leading: Image.asset( - 'assets/images/gender.png', - width: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text((controller.prfoileData['gender'] - .toString())), - onTap: () { - Get.defaultDialog( - title: 'Update Gender'.tr, - content: Column( - children: [ - GenderPicker(), - MyElevatedButton( - title: 'Update'.tr, - onPressed: () { - controller.updateColumn({ - 'id': controller.prfoileData['id'] - .toString(), - 'gender': (controller.gender), - }); - Get.back(); - }, - ) - ], - )); - // controller.updatField('gender'); - }, - ), - ListTile( - title: Text( - 'Education'.tr, - style: AppStyle.title, - ), - leading: Image.asset( - 'assets/images/education.png', - width: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text(controller.prfoileData['education'] - .toString()), - onTap: () { - Get.defaultDialog( - barrierDismissible: true, - title: 'Update Education'.tr, - content: SizedBox( - height: 200, - child: Column( - children: [ - EducationDegreePicker(), - ], - ), - ), - confirm: MyElevatedButton( - title: 'Update Education'.tr, - onPressed: () { - controller.updateColumn({ - 'id': controller.prfoileData['id'] - .toString(), - 'education': - controller.selectedDegree, - }); - Get.back(); - }, - )); - }, - ), - ListTile( - title: Text( - 'Employment Type'.tr, - style: AppStyle.title, - ), - leading: Image.asset( - 'assets/images/employmentType.png', - width: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text(controller - .prfoileData['employmentType'] - .toString()), - onTap: () { - controller.updatField( - 'employmentType', TextInputType.name); - }, - ), - ListTile( - title: Text( - 'Marital Status'.tr, - style: AppStyle.title, - ), - leading: Image.asset( - 'assets/images/maritalStatus.png', - width: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text(controller - .prfoileData['maritalStatus'] - .toString()), - onTap: () { - controller.updatField( - 'maritalStatus', TextInputType.name); - }, - ), - ListTile( - title: Text( - 'SOS Phone'.tr, - style: AppStyle.title, - ), - leading: const Icon( - Icons.sos, - color: AppColor.redColor, - size: 35, - ), - trailing: const Icon(Icons.arrow_forward_ios), - subtitle: Text( - (controller.prfoileData['sosPhone']) - .toString()), - onTap: () async { - await controller.updatField( - 'sosPhone', TextInputType.phone); - box.write(BoxName.sosPhonePassenger, - controller.prfoileData['sosPhone']); - }, - ), - // const Spacer(), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - MyElevatedButton( - title: 'Sign Out'.tr, - onPressed: () { - LogOutController().logOutPassenger(); - }), - GetBuilder( - builder: (logOutController) { - return MyElevatedButton( - title: 'Delete My Account'.tr, - onPressed: () { - Get.defaultDialog( - title: - 'Are you sure to delete your account?' - .tr, - content: Form( - key: logOutController.formKey1, - child: MyTextForm( - controller: logOutController - .emailTextController, - label: 'Type your Email'.tr, - hint: 'Type your Email'.tr, - type: - TextInputType.emailAddress, - ), - ), - confirm: MyElevatedButton( - title: 'Delete My Account'.tr, - kolor: AppColor.redColor, - onPressed: () async { - await logOutController - .deletePassengerAccount(); - }), - cancel: MyElevatedButton( - title: 'No I want'.tr, - onPressed: () { - logOutController - .emailTextController - .clear(); - logOutController.update(); - Get.back(); - })); - }); - }), - ], - ), - ], - ), - ), - ), - )), + return Scaffold( + backgroundColor: Colors.grey[100], + appBar: AppBar( + title: Text('My Profile'.tr, + style: const TextStyle(fontWeight: FontWeight.bold)), + backgroundColor: Colors.grey[100], + elevation: 0, + centerTitle: true, + ), + body: GetBuilder( + builder: (controller) { + if (controller.isloading) { + return const MyCircularProgressIndicator(); + } + return ListView( + padding: + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0), + children: [ + _buildProfileHeader(controller), + const SizedBox(height: 24), + _buildSectionCard( + 'Personal Information'.tr, + [ + _buildProfileTile( + icon: Icons.person_outline, + color: Colors.blue, + title: 'Name'.tr, + subtitle: + '${controller.prfoileData['first_name'] ?? ''} ${controller.prfoileData['last_name'] ?? ''}', + onTap: () => + controller.updatField('first_name', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.wc_outlined, + color: Colors.pink, + title: 'Gender'.tr, + subtitle: controller.prfoileData['gender']?.toString() ?? + 'Not set'.tr, + onTap: () => _showGenderDialog(controller), + ), + _buildProfileTile( + icon: Icons.school_outlined, + color: Colors.orange, + title: 'Education'.tr, + subtitle: controller.prfoileData['education']?.toString() ?? + 'Not set'.tr, + onTap: () => _showEducationDialog(controller), + ), + ], + ), + const SizedBox(height: 24), + _buildSectionCard( + 'Work & Contact'.tr, + [ + _buildProfileTile( + icon: Icons.work_outline, + color: Colors.green, + title: 'Employment Type'.tr, + subtitle: + controller.prfoileData['employmentType']?.toString() ?? + 'Not set'.tr, + onTap: () => controller.updatField( + 'employmentType', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.favorite_border, + color: Colors.purple, + title: 'Marital Status'.tr, + subtitle: + controller.prfoileData['maritalStatus']?.toString() ?? + 'Not set'.tr, + onTap: () => controller.updatField( + 'maritalStatus', TextInputType.name), + ), + _buildProfileTile( + icon: Icons.sos_outlined, + color: Colors.red, + title: 'SOS Phone'.tr, + subtitle: controller.prfoileData['sosPhone']?.toString() ?? + 'Not set'.tr, + onTap: () async { + await controller.updatField( + 'sosPhone', TextInputType.phone); + box.write(BoxName.sosPhonePassenger, + controller.prfoileData['sosPhone']); + }, + ), + ], + ), + const SizedBox(height: 32), + _buildAccountActions(context, logOutController), + ], + ); + }, + ), + ); + } + + Widget _buildProfileHeader(ProfileController controller) { + String fullName = + '${controller.prfoileData['first_name'] ?? ''} ${controller.prfoileData['last_name'] ?? ''}'; + String initials = (fullName.isNotEmpty && fullName.contains(" ")) + ? fullName.split(" ").map((e) => e.isNotEmpty ? e[0] : "").join() + : (fullName.isNotEmpty ? fullName[0] : ""); + + // Logic to hide email if it contains 'intaleqapp.com' + String email = box.read(BoxName.email) ?? ''; + if (email.contains('intaleqapp.com')) { + email = ''; // Clear the email if it contains the domain + } + + return Center( + child: Column( + children: [ + CircleAvatar( + radius: 50, + backgroundColor: AppColor.primaryColor.withOpacity(0.2), + child: Text( + initials, + style: + const TextStyle(fontSize: 40, color: AppColor.primaryColor), + ), + ), + const SizedBox(height: 12), + Text( + fullName, + style: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold), + ), + if (email + .isNotEmpty) // Only show the Text widget if the email is not empty + Text( + email, + style: TextStyle(fontSize: 16, color: Colors.grey[600]), + ), + ], + ), + ); + } + + Widget _buildSectionCard(String title, List children) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(left: 8.0, bottom: 8.0), + child: Text( + title, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.grey[700]), + ), + ), + Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: Column( + children: children, + ), + ), ], ); } + + Widget _buildProfileTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return ListTile( + onTap: onTap, + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 24), + ), + title: Text(title, style: const TextStyle(fontWeight: FontWeight.w500)), + subtitle: Text(subtitle, style: TextStyle(color: Colors.grey[600])), + trailing: + Icon(Icons.arrow_forward_ios, size: 16, color: Colors.grey[400]), + ); + } + + Widget _buildAccountActions( + BuildContext context, LogOutController logOutController) { + return Column( + children: [ + SizedBox( + width: double.infinity, + child: TextButton.icon( + icon: const Icon(Icons.logout), + label: Text('Sign Out'.tr), + style: TextButton.styleFrom( + foregroundColor: Colors.blueGrey, + padding: const EdgeInsets.symmetric(vertical: 12), + ), + onPressed: () { + logOutController.logOutPassenger(); + }, + ), + ), + const SizedBox(height: 8), + SizedBox( + width: double.infinity, + child: TextButton.icon( + icon: const Icon(Icons.delete_forever_outlined), + label: Text('Delete My Account'.tr), + style: TextButton.styleFrom( + foregroundColor: Colors.red, + padding: const EdgeInsets.symmetric(vertical: 12), + ), + onPressed: () => + _showDeleteAccountDialog(context, logOutController), + ), + ), + ], + ); + } + + void _showGenderDialog(ProfileController controller) { + Get.defaultDialog( + title: 'Update Gender'.tr, + content: Column( + children: [ + GenderPicker(), + const SizedBox(height: 16), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'].toString(), + 'gender': controller.gender, + }); + Get.back(); + }, + ) + ], + ), + ); + } + + void _showEducationDialog(ProfileController controller) { + Get.defaultDialog( + title: 'Update Education'.tr, + content: Column( + children: [ + EducationDegreePicker(), + const SizedBox(height: 16), + MyElevatedButton( + title: 'Update'.tr, + onPressed: () { + controller.updateColumn({ + 'id': controller.prfoileData['id'].toString(), + 'education': controller.selectedDegree, + }); + Get.back(); + }, + ), + ], + ), + ); + } + + void _showDeleteAccountDialog( + BuildContext context, LogOutController logOutController) { + Get.defaultDialog( + title: 'Delete My Account'.tr, + middleText: 'Are you sure? This action cannot be undone.'.tr, + content: Form( + key: logOutController.formKey1, + child: MyTextForm( + controller: logOutController.emailTextController, + label: 'Confirm your Email'.tr, + hint: 'Type your Email'.tr, + type: TextInputType.emailAddress, + ), + ), + confirm: MyElevatedButton( + title: 'Delete Permanently'.tr, + kolor: AppColor.redColor, + onPressed: () async { + await logOutController.deletePassengerAccount(); + }, + ), + cancel: TextButton( + child: Text('Cancel'.tr), + onPressed: () { + logOutController.emailTextController.clear(); + Get.back(); + }, + ), + ); + } } -class GenderPicker extends StatelessWidget { - final ProfileController controller = Get.put(ProfileController()); +// --- Helper Widgets for Pickers --- +class GenderPicker extends StatelessWidget { + final ProfileController controller = Get.find(); final List genderOptions = ['Male'.tr, 'Female'.tr, 'Other'.tr]; GenderPicker({super.key}); @@ -258,14 +336,14 @@ class GenderPicker extends StatelessWidget { @override Widget build(BuildContext context) { return SizedBox( - height: 100, + height: 150, child: CupertinoPicker( - itemExtent: 32.0, + itemExtent: 40.0, onSelectedItemChanged: (int index) { controller.setGender(genderOptions[index]); }, children: genderOptions.map((String value) { - return Text(value); + return Center(child: Text(value)); }).toList(), ), ); @@ -273,216 +351,34 @@ class GenderPicker extends StatelessWidget { } class EducationDegreePicker extends StatelessWidget { - final ProfileController controller = Get.put(ProfileController()); - + final ProfileController controller = Get.find(); final List degreeOptions = [ 'High School Diploma'.tr, 'Associate Degree'.tr, - 'Bachelor\'s Degree'.tr, - 'Master\'s Degree'.tr, + "Bachelor's Degree".tr, + "Master's Degree".tr, 'Doctoral Degree'.tr, ]; - EducationDegreePicker({Key? key}) : super(key: key); + EducationDegreePicker({super.key}); @override Widget build(BuildContext context) { return SizedBox( - height: 200, + height: 180, child: CupertinoPicker( - // backgroundColor: AppColor.accentColor, - // looping: true, - squeeze: 2, - // diameterRatio: 5, - itemExtent: 32, + itemExtent: 40.0, onSelectedItemChanged: (int index) { controller.setDegree(degreeOptions[index]); }, children: degreeOptions.map((String value) { - return Text(value); + return Center(child: Text(value)); }).toList(), ), ); } } -class CountryPicker extends StatelessWidget { - final ProfileController controller = Get.put(ProfileController()); - - final List countryOptions = [ - 'Jordan', - 'Syria', - 'Egypt', - 'Turkey', - 'Saudi Arabia', - 'Qatar', - 'Bahrain', - 'Kuwait', - 'USA' - ]; - - CountryPicker({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return GetBuilder(builder: (controller) { - return Padding( - padding: const EdgeInsets.all(20), - child: ListView( - children: [ - const SizedBox( - height: 20, - ), - Text( - "Select Your Country".tr, - style: AppStyle.headTitle2, - textAlign: TextAlign.center, - ), - // const SizedBox( - // height: 20, - // ), - Padding( - padding: const EdgeInsets.all(10), - child: Text( - "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country." - .tr, - style: AppStyle.title, - textAlign: TextAlign.center, - ), - ), - SizedBox( - height: 200, - child: CupertinoPicker( - itemExtent: 32, - onSelectedItemChanged: (int index) { - controller.setCountry(countryOptions[index]); - box.write(BoxName.countryCode, - countryOptions[index]); // Save in English - }, - children: List.generate( - countryOptions.length, - (index) => Center( - child: Text( - countryOptions[index] - .tr, // Display translated if not English - style: AppStyle.title, - ), - ), - ), - ), - ), - - MyElevatedButton( - title: 'Select Country'.tr, // Use translated text for button - onPressed: () { - Get.find().saveCountryCode(controller - .selectedCountry - .toString()); // No conversion needed - box.write( - BoxName.countryCode, // - controller.selectedCountry); // Already saved in English - if (controller.selectedCountry == null) { - Get.snackbar("You should select your country".tr, ''); - } else { - Get.snackbar(controller.selectedCountry.toString().tr, ''); - Get.off(LoginPage()); - } - }, - ) - ], - ), - ); - }); - } -} - -class CountryPickerFromSetting extends StatelessWidget { - final ProfileController controller = Get.put(ProfileController()); - final LoginController loginController = Get.put(LoginController()); - - final List countryOptions = [ - 'Jordan', - 'USA', - 'Egypt', - 'Turkey', - 'Saudi Arabia', - 'Qatar', - 'Bahrain', - 'Kuwait', - ]; - - CountryPickerFromSetting({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return GetBuilder(builder: (controller) { - return CupertinoPageScaffold( - navigationBar: CupertinoNavigationBar( - middle: Text('Select Your Country'.tr), - ), - child: Padding( - padding: const EdgeInsets.all(20.0), - child: ListView( - children: [ - const SizedBox( - height: 20, - ), - // Text( - // "Select Your Country".tr, - // style: AppStyle.headTitle2, - // textAlign: TextAlign.center, - // ), - // const SizedBox( - // height: 20, - // ), - Padding( - padding: const EdgeInsets.all(10), - child: Text( - "To ensure you receive the most accurate information for your location, please select your country below. This will help tailor the app experience and content to your country." - .tr, - style: AppStyle.headTitle2, - textAlign: TextAlign.center, - ), - ), - SizedBox( - height: 200, - child: CupertinoPicker( - itemExtent: 32, - onSelectedItemChanged: (int index) { - controller.setCountry(countryOptions[index]); - box.write(BoxName.countryCode, - countryOptions[index]); // Save in English - }, - children: List.generate( - countryOptions.length, - (index) => Center( - child: Text( - countryOptions[index] - .tr, // Display translated if not English - style: AppStyle.title, - ), - ), - ), - ), - ), - - MyElevatedButton( - title: 'Select Country'.tr, // Use translated text for button - onPressed: () async { - loginController.saveCountryCode(controller.selectedCountry - .toString()); // No conversion needed - box.write( - BoxName.countryCode, // - controller.selectedCountry); // Already saved in English - Get.snackbar(controller.selectedCountry.toString().tr, '', - backgroundColor: AppColor.greenColor); - // Get.back();// - // Get.back(); - }, - ) - ], - )), - ); - }); - } -} +// NOTE: The CountryPicker and CountryPickerFromSetting widgets were not part of the main +// profile page UI, so they are excluded here to keep the file focused. +// If they are needed elsewhere, they should be moved to their own files. diff --git a/lib/views/home/setting_page.dart b/lib/views/home/setting_page.dart index 66d236a..65a55c1 100644 --- a/lib/views/home/setting_page.dart +++ b/lib/views/home/setting_page.dart @@ -1,5 +1,4 @@ import 'package:Intaleq/controller/home/home_page_controller.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:Intaleq/views/lang/languages.dart'; @@ -8,109 +7,207 @@ 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'; + +// NOTE: This is a placeholder for your actual CountryPickerFromSetting widget. +// You should remove this and import your own widget. +class CountryPickerFromSetting extends StatelessWidget { + const CountryPickerFromSetting({super.key}); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Change Country'.tr)), + body: Center( + child: Text('Country Picker Page Placeholder'.tr), + ), + ); + } +} class SettingPage extends StatelessWidget { const SettingPage({super.key}); @override Widget build(BuildContext context) { - Get.put(HomePageController()); - return CupertinoPageScaffold( - navigationBar: CupertinoNavigationBar( - middle: Text('Setting'.tr), - leading: CupertinoButton( - padding: EdgeInsets.zero, - child: const Icon(CupertinoIcons.back), - onPressed: () { - Navigator.pop(context); - }, + // Using lazyPut to ensure the controller is available when needed. + Get.lazyPut(() => HomePageController()); + + return Scaffold( + backgroundColor: + const Color(0xFFF5F5F7), // A slightly off-white background + appBar: AppBar( + title: Text('Setting'.tr, + style: const TextStyle( + color: Colors.black87, fontWeight: FontWeight.bold)), + backgroundColor: Colors.white, + elevation: 0.5, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios_new, color: Colors.black87), + onPressed: () => Get.back(), ), ), - child: SafeArea( + body: SafeArea( child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 20.0), children: [ - CupertinoListTile( - onTap: () { - Get.to(() => const Language()); - }, - leading: const Icon(CupertinoIcons.globe, - color: CupertinoColors.activeBlue), - title: Text('Language'.tr), - subtitle: Text('To change Language the App'.tr), - trailing: const CupertinoListTileChevron(), + _buildSectionHeader('General'.tr), + _buildSettingsCard( + children: [ + _buildSettingsTile( + icon: Icons.language, + color: Colors.blue, + title: 'Language'.tr, + subtitle: 'To change Language the App'.tr, + onTap: () => Get.to(() => const Language()), + ), + // const Divider(height: 1, indent: 68, endIndent: 16), + // _buildSettingsTile( + // icon: Icons.map_outlined, + // color: Colors.green, + // title: 'Change Country'.tr, + // subtitle: 'You can change the Country to get all features'.tr, + // onTap: () => Get.to(() => const CountryPickerFromSetting()), + // ), + ], ), - CupertinoListTile( - onTap: () { - Get.to(() => 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(), + const SizedBox(height: 24), + _buildSectionHeader('Preferences'.tr), + _buildSettingsCard( + children: [ + GetBuilder( + builder: (controller) { + return _buildSettingsSwitchTile( + icon: Icons.vibration, + color: Colors.purple, + title: 'Vibration'.tr, + subtitle: 'Vibration feedback for all buttons'.tr, + value: controller.isVibrate, + onChanged: controller.changeVibrateOption, + ); + }, + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.mic_none, + color: Colors.orange, + title: 'Trips recorded'.tr, + subtitle: 'Here recorded trips audio'.tr, + onTap: () => Get.to(() => const TripsRecordedPage()), + ), + ], ), - 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(), - ), - 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 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 Intaleq App with your friends and earn rewards for rides they take using your code' - .tr), - trailing: const CupertinoListTileChevron(), + const SizedBox(height: 24), + _buildSectionHeader('Support & Info'.tr), + _buildSettingsCard( + children: [ + _buildSettingsTile( + icon: Icons.help_outline, + color: Colors.cyan, + title: 'Frequently Questions'.tr, + subtitle: 'Find answers to common questions'.tr, + onTap: () => Get.to(() => const FrequentlyQuestionsPage()), + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.info_outline, + color: Colors.indigo, + title: 'About Us'.tr, + subtitle: 'Learn more about our app and mission'.tr, + onTap: () => Get.to(() => const AboutPage()), + ), + const Divider(height: 1, indent: 68, endIndent: 16), + _buildSettingsTile( + icon: Icons.share_outlined, + color: Colors.redAccent, + title: 'Share App'.tr, + subtitle: 'Share with friends and earn rewards'.tr, + onTap: () => Get.to(() => ShareAppPage()), + ), + ], ), ], ), ), ); } + + Widget _buildSectionHeader(String title) { + return Padding( + padding: const EdgeInsets.only(bottom: 12.0, left: 8.0), + child: Text( + title, + style: TextStyle( + color: Colors.grey[700], + fontWeight: FontWeight.bold, + fontSize: 15, + ), + ), + ); + } + + Widget _buildSettingsCard({required List children}) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + clipBehavior: Clip.antiAlias, + child: Column( + children: children, + ), + ); + } + + Widget _buildSettingsTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return ListTile( + onTap: onTap, + leading: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 22), + ), + title: Text(title, + style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 16)), + subtitle: Text(subtitle, + style: TextStyle(color: Colors.grey[600], fontSize: 13)), + trailing: Icon(Icons.chevron_right, color: Colors.grey[400]), + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + ); + } + + Widget _buildSettingsSwitchTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required bool value, + required ValueChanged onChanged, + }) { + return SwitchListTile( + secondary: Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: color.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(icon, color: color, size: 22), + ), + title: Text(title, + style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 16)), + subtitle: Text(subtitle, + style: TextStyle(color: Colors.grey[600], fontSize: 13)), + value: value, + onChanged: onChanged, + activeColor: const Color(0xFF007AFF), // iOS-like blue + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + ); + } } diff --git a/lib/views/lang/languages.dart b/lib/views/lang/languages.dart index 50a0f53..53cd755 100644 --- a/lib/views/lang/languages.dart +++ b/lib/views/lang/languages.dart @@ -89,7 +89,7 @@ class Language extends StatelessWidget { ), const SizedBox(height: 8), Text( - 'Select your preferred language for the app interface.', + "Select your preferred language for the app interface.".tr, style: TextStyle( fontSize: 16, color: CupertinoColors.secondaryLabel, diff --git a/pubspec.lock b/pubspec.lock index 3ec43dc..34b2a6d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -50,7 +50,7 @@ packages: source: hosted version: "2.7.0" asn1lib: - dependency: transitive + dependency: "direct main" description: name: asn1lib sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" diff --git a/pubspec.yaml b/pubspec.yaml index 0e17791..8f1cbe1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -74,6 +74,7 @@ dependencies: dotted_line: ^3.2.3 shimmer: ^3.0.0 share_plus: ^11.0.0 + asn1lib: ^1.6.5 # home_widget: ^0.7.0+1 dev_dependencies: