diff --git a/lib/constant/info.dart b/lib/constant/info.dart index d99f0e7..4b03b15 100644 --- a/lib/constant/info.dart +++ b/lib/constant/info.dart @@ -1,12 +1,12 @@ class AppInformation { - static const String companyName = 'SEFER LLC'; - static const String appName = 'SEFER DRIVER'; - static const String appVersion = 'SEFER Captain'; + static const String companyName = 'Swifti'; + static const String appName = 'Swifti DRIVER'; + static const String appVersion = 'Swifti Captain'; static const String phoneNumber = '962798583052'; static const String linkedInProfile = 'https://www.linkedin.com/in/hamza-ayed/'; - static const String website = 'https://sefer.live'; - static const String email = 'hamzaayed@sefer.live'; + static const String website = 'https://Swifti.live'; + static const String email = 'hamzaayed@Swifti.live'; static const String complaintPrompt = 'for this data for complaint from driver or passenger i collect all data i want you analyze this complaint and show what is reason and what is solution .this data collected from many table to find solution if payment in visa not complete and if ride status is finished it will be paymnet in payment table if ride status is not finished there is no need to pay and payment table is null for this ride and if paymentFromPaymentTable not null and visa type not cash the payment sucssessed . if ratingpassenger is low or passengr rating drivers low grade then dont mine of this passenger ,look at driver too like passengerratingdriver with rating or ratingtopassenger .in json add status of complaint and message to passenger and message to driver and message to call center write in arabic in json output with key in english .for output please just json i want'; @@ -78,10 +78,10 @@ class AppInformation {

Terms and Conditions

1 TERMS OF USE

-

By downloading, browsing, accessing or using the Mobile Application; “Sefer”, 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.

+

By downloading, browsing, accessing or using the Mobile Application; “Swifti”, 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 “Sefer” refers to the smartphone software through which the company mediates services between Users and Service Providers.

+

“Mobile Application” or “Swifti” 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.

@@ -90,8 +90,8 @@ class AppInformation {

"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, “Sefer”?

-

The “Sefer” 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

+

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

+

The “Swifti” 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.

@@ -146,7 +146,7 @@ class AppInformation {

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 “Sefer” 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.

+

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 “Swifti” 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.

@@ -197,10 +197,10 @@ class AppInformation {

(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 Sefer 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.

+

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 Swifti 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

+

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.

@@ -217,33 +217,33 @@ class AppInformation {
@@ -257,13 +257,13 @@ class AppInformation {
- My image + My image - My image + My image - My image + My image
@@ -2338,7 +2338,7 @@ double nearestDistance = double.infinity; Arabic (Egypt) - Sefer + Swifti سفر
@@ -2362,8 +2362,8 @@ double nearestDistance = double.infinity; Arabic (Egypt)
- write short description for my app sefer in en and ar and tr - اكتب وصفًا مختصرًا لتطبيقي sefer باللغة en وar وtr + write short description for my app Swifti in en and ar and tr + اكتب وصفًا مختصرًا لتطبيقي Swifti باللغة en وar وtr
delete history element @@ -2386,8 +2386,8 @@ double nearestDistance = double.infinity; Arabic (Egypt)
- Sefer, güvenilir ve uygun fiyatlı sürücülerle buluşan bir taksi çağırma uygulamasıdır. - Sefer, güvenilir ve uygun fiyatlı sürüculerle bluşan bil taksi çağırma uygulamasıdır. + Swifti, güvenilir ve uygun fiyatlı sürücülerle buluşan bir taksi çağırma uygulamasıdır. + Swifti, güvenilir ve uygun fiyatlı sürüculerle bluşan bil taksi çağırma uygulamasıdır.
delete history element @@ -2410,7 +2410,7 @@ double nearestDistance = double.infinity; Arabic (Egypt)
- Sefer, sizi bölgenizdeki güvenilir ve uygun fiyatlı sürücülerle buluşturan bir taksi çağırma uygulamasıdır. + Swifti, sizi bölgenizdeki güvenilir ve uygun fiyatlı sürücülerle buluşturan bir taksi çağırma uygulamasıdır. علاوة على ذلك، فإن جميع أفراد العائلة والأصدقاء يستمتعون بالمزيد من الراحة من خلال سيارات الأجرة.
@@ -2458,8 +2458,8 @@ double nearestDistance = double.infinity; Arabic (Egypt)
- Sefer: Ride-hailing app for a seamless and affordable travel experience - Sefer: تطبيق نقل الركاب لتجربة سفر سلسة وبأسعار معقولة + Swifti: Ride-hailing app for a seamless and affordable travel experience + Swifti: تطبيق نقل الركاب لتجربة سفر سلسة وبأسعار معقولة
delete history element diff --git a/lib/constant/links.dart b/lib/constant/links.dart index bc6b41b..17e9308 100644 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -1,4 +1,4 @@ -import 'package:sefer_driver/env/env.dart'; +// import 'package:sefer_driver/env/env.dart'; import '../main.dart'; import 'box_name.dart'; diff --git a/lib/controller/functions/gemeni.dart b/lib/controller/functions/gemeni.dart index f90fd68..530fb49 100644 --- a/lib/controller/functions/gemeni.dart +++ b/lib/controller/functions/gemeni.dart @@ -524,12 +524,10 @@ class AI extends GetxController { 'national_number': encryptionHelper .encryptData(responseIdEgyptBack['nationalID'].toString()) ?? 'Not specified', - 'name_arabic': encryptionHelper.encryptData( - responseIdEgyptDriverLicense['name_arabic'].toString()) ?? - 'Not specified', - 'name_english': encryptionHelper.encryptData( - responseIdEgyptDriverLicense['name_english'].toString()) ?? - 'Not specified', + 'name_arabic': encryptionHelper + .encryptData(responseIdEgyptDriverLicense['name_arabic'].toString()), + 'name_english': encryptionHelper + .encryptData(responseIdEgyptDriverLicense['name_english'].toString()), 'issue_date': responseIdEgyptDriverLicense['issue_date']?.toString() ?? 'Not specified', 'expiry_date': responseIdEgyptDriverLicense['expiry_date']?.toString() ?? @@ -628,10 +626,8 @@ class AI extends GetxController { 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'car_plate': encryptionHelper.encryptData( responseIdCardDriverEgyptFront['car_plate'].toString()), - 'make': encryptionHelper - .encryptData(responseIdCardDriverEgyptBack['make'].toString()), - 'model': encryptionHelper - .encryptData(responseIdCardDriverEgyptBack['model']), + 'make': (responseIdCardDriverEgyptBack['make'].toString()), + 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), 'expiration_date': responseIdCardDriverEgyptFront['LicenseExpirationDate'].toString(), @@ -660,10 +656,8 @@ class AI extends GetxController { 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'car_plate': encryptionHelper.encryptData( responseIdCardDriverEgyptFront['car_plate'].toString()), - 'make': encryptionHelper.encryptData( - responseIdCardDriverEgyptBack['make'].toString()), - 'model': encryptionHelper - .encryptData(responseIdCardDriverEgyptBack['model']), + 'make': (responseIdCardDriverEgyptBack['make'].toString()), + 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), 'expiration_date': responseIdCardDriverEgyptFront['LicenseExpirationDate'] @@ -688,10 +682,8 @@ class AI extends GetxController { 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'car_plate': encryptionHelper.encryptData( responseIdCardDriverEgyptFront['car_plate'].toString()), - 'make': encryptionHelper.encryptData( - responseIdCardDriverEgyptBack['make'].toString()), - 'model': encryptionHelper - .encryptData(responseIdCardDriverEgyptBack['model']), + 'make': (responseIdCardDriverEgyptBack['make'].toString()), + 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), 'expiration_date': responseIdCardDriverEgyptFront['LicenseExpirationDate'] diff --git a/lib/views/auth/captin/ai_page.dart b/lib/views/auth/captin/ai_page.dart index 671adf9..b6d8db5 100644 --- a/lib/views/auth/captin/ai_page.dart +++ b/lib/views/auth/captin/ai_page.dart @@ -12,6 +12,7 @@ import 'package:sefer_driver/views/widgets/my_scafold.dart'; import 'package:sefer_driver/views/widgets/mycircular.dart'; import '../../../constant/links.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; import '../../../controller/functions/gemeni.dart'; class AiPage extends StatelessWidget { @@ -94,11 +95,11 @@ class AiPage extends StatelessWidget { Row( children: [ Text( - '${'Name'.tr} :${contentController.responseMap['first_name']}', + '${'Name'.tr} :${encryptionHelper.decryptData(contentController.responseMap['first_name'])}', style: AppStyle.subtitle, ), Text( - ' ${contentController.responseMap['last_name']}', + ' ${encryptionHelper.decryptData(contentController.responseMap['last_name'])}', style: AppStyle.subtitle, ), ], diff --git a/lib/views/auth/captin/cards/egypt_card_a_i.dart b/lib/views/auth/captin/cards/egypt_card_a_i.dart index f83d69c..d790e42 100644 --- a/lib/views/auth/captin/cards/egypt_card_a_i.dart +++ b/lib/views/auth/captin/cards/egypt_card_a_i.dart @@ -322,7 +322,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[0]['prompt'].toString()), AppLink.uploadEgypt, 'driver_license'); //egypt @@ -335,30 +335,32 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'License Type'.tr}: ${ai.responseIdEgyptDriverLicense['license_type']}', + '${'License Type'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['license_type'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), Text( - '${'National Number'.tr}: ${ai.responseIdEgyptDriverLicense['national_number']}', + '${'National Number'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['national_number'])}', style: AppStyle.title.copyWith( - color: ai.responseIdEgyptDriverLicense[ - 'national_number'] == - ai.responseIdEgyptBack['nationalID'] + color: encryptionHelper.decryptData( + ai.responseIdEgyptDriverLicense[ + 'national_number']) == + encryptionHelper.decryptData( + ai.responseIdEgyptBack['nationalID']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'Name (Arabic)'.tr}: ${ai.responseIdEgyptDriverLicense['name_arabic']}', + '${'Name (Arabic)'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['name_arabic'])}', ), const SizedBox(height: 8.0), Text( - '${'Name (English)'.tr}: ${ai.responseIdEgyptDriverLicense['name_english']}', + '${'Name (English)'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['name_english'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${ai.responseIdEgyptDriverLicense['address']}', + '${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['address'])}', ), const SizedBox(height: 8.0), Text( @@ -386,7 +388,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[0]['prompt'].toString()), + .decryptData(ai.prompts[0]['prompt'].toString()), AppLink.uploadEgypt, 'driver_license'); //egypt }, @@ -441,7 +443,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[1]['prompt'].toString()), AppLink.uploadEgypt, 'id_back'); //egypt @@ -455,18 +457,20 @@ class EgyptCardAI extends StatelessWidget { const SizedBox(height: 8.0), // Assuming these keys exist in ai.responseIdEgyptFront Text( - '${'National ID'.tr}: ${ai.responseIdEgyptBack['nationalID']}', + '${'National ID'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['nationalID'])}', style: AppStyle.title.copyWith( - color: ai.responseIdEgyptDriverLicense[ - 'national_number'] == - ai.responseIdEgyptBack['nationalID'] + color: encryptionHelper.decryptData( + ai.responseIdEgyptDriverLicense[ + 'national_number']) == + encryptionHelper.decryptData( + ai.responseIdEgyptBack['nationalID']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'Occupation'.tr}: ${ai.responseIdEgyptBack['occupation']}', // Assuming 'occupation' exists + '${'Occupation'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['occupation'])}', // Assuming 'occupation' exists ), const SizedBox(height: 8.0), Row( @@ -476,7 +480,7 @@ class EgyptCardAI extends StatelessWidget { '${'Issue Date'.tr}: ${ai.responseIdEgyptBack['issueDate']}', // Assuming 'issueDate' exists ), Text( - '${'Gender'.tr}: ${ai.responseIdEgyptBack['gender']}', // Assuming 'gender' exists + '${'Gender'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['gender'])}', // Assuming 'gender' exists ), ], ), @@ -514,7 +518,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[1]['prompt'].toString()), + .decryptData(ai.prompts[1]['prompt'].toString()), AppLink.uploadEgypt, 'id_back'); //egypt }, @@ -568,8 +572,7 @@ class EgyptCardAI extends StatelessWidget { onPressed: () async { await ai.allMethodForAI( encryptionHelper.decryptData( - encryptionHelper.encryptData( - ai.prompts[7]['prompt'].toString())), + ai.prompts[7]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_back'); }, @@ -581,16 +584,16 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'Country'.tr}: ${ai.responseNonIdCardBack['country']}', + '${'Country'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['country'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), Text( - '${'Residency Type'.tr}: ${ai.responseNonIdCardBack['residencyType']}', + '${'Residency Type'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['residencyType'])}', ), const SizedBox(height: 8.0), Text( - '${'Work Status'.tr}: ${ai.responseNonIdCardBack['workStatus']}', + '${'Work Status'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['workStatus'])}', ), const SizedBox(height: 8.0), Row( @@ -600,7 +603,7 @@ class EgyptCardAI extends StatelessWidget { '${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}', ), Text( - '${'Birth Date'.tr}: ${ai.responseNonIdCardBack['birthDate']}', + '${'Birth Date'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['birthDate'])}', ), ], ), @@ -622,7 +625,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[7]['prompt'].toString()), + .decryptData(ai.prompts[7]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_back'); }, @@ -667,7 +670,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[2]['id_front'].toString()), AppLink.uploadEgypt, 'id_front'); //egypt @@ -685,10 +688,10 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'First Name'.tr}: ${ai.responseIdEgyptFront['first_name']}', + '${'First Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['first_name'])}', ), Text( - '${'CardID'.tr}: ${ai.responseIdEgyptFront['card_id']}', + '${'CardID'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['card_id'])}', ), ], ), @@ -697,16 +700,16 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Full Name'.tr}: ${ai.responseIdEgyptFront['full_name']}', + '${'Full Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['full_name'])}', ), Text( - '${'DOB'.tr}: ${ai.responseIdEgyptFront['dob']}', + '${'DOB'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['dob'])}', ), ], ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${ai.responseIdEgyptFront['address']}', + '${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['address'])}', ), const SizedBox(height: 8.0), // Text( @@ -725,7 +728,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[2]['prompt'].toString()), + .decryptData(ai.prompts[2]['prompt'].toString()), AppLink.uploadEgypt, 'id_front'); //egypt }, @@ -770,7 +773,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[6]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_front'); @@ -783,7 +786,7 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'Full Name'.tr}: ${ai.responseNonIdCardFront['full_name']}', + '${'Full Name'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['full_name'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), @@ -791,10 +794,10 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Passport No'.tr}: ${ai.responseNonIdCardFront['passport_no']}', + '${'Passport No'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['passport_no'])}', ), Text( - '${'Card ID'.tr}: ${ai.responseNonIdCardFront['card_id']}', + '${'Card ID'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['card_id'])}', ), ], ), @@ -803,20 +806,20 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Country'.tr}: ${ai.responseNonIdCardFront['country']}', + '${'Country'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['country'])}', ), Text( - '${'Gender'.tr}: ${ai.responseNonIdCardFront['gender']}', + '${'Gender'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['gender'])}', ), ], ), const SizedBox(height: 8.0), Text( - '${'Birth Date'.tr}: ${ai.responseNonIdCardFront['birthdate']}', + '${'Birth Date'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['birthdate'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${ai.responseNonIdCardFront['address']}', + '${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['address'])}', ), ], ), @@ -828,7 +831,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[6]['prompt'].toString()), + .decryptData(ai.prompts[6]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_front'); }, @@ -881,7 +884,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[3]['prompt'].toString()), AppLink.uploadEgypt, 'car_front'); @@ -896,15 +899,15 @@ class EgyptCardAI extends StatelessWidget { // Removed Make, Model, etc. as they are not available Text( - '${'Plate Number'.tr}: ${ai.responseIdCardDriverEgyptFront['car_plate']}', + '${'Plate Number'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['car_plate'])}', ), const SizedBox(height: 8.0), Text( - '${'Owner Name'.tr}: ${ai.responseIdCardDriverEgyptFront['owner']}', + '${'Owner Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['owner'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${ai.responseIdCardDriverEgyptFront['address']}', + '${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['address'])}', ), const SizedBox(height: 8.0), Row( @@ -930,7 +933,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[3]['prompt'].toString()), + .decryptData(ai.prompts[3]['prompt'].toString()), AppLink.uploadEgypt, 'car_front'); }, @@ -1000,7 +1003,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[4]['prompt'].toString()), AppLink.uploadEgypt, 'car_back'); @@ -1016,9 +1019,9 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Make'.tr}: ${ai.responseIdCardDriverEgyptBack['make']}'), + '${'Make'.tr}: ${(ai.responseIdCardDriverEgyptBack['make'])}'), Text( - '${'Model'.tr}: ${ai.responseIdCardDriverEgyptBack['model']}'), + '${'Model'.tr}: ${(ai.responseIdCardDriverEgyptBack['model'])}'), ], ), const SizedBox(height: 8.0), @@ -1075,7 +1078,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[4]['prompt'].toString()), + .decryptData(ai.prompts[4]['prompt'].toString()), AppLink.uploadEgypt, 'car_back'); }, @@ -1120,7 +1123,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - encryptionHelper.encryptData( + encryptionHelper.decryptData( ai.prompts[5]['prompt'].toString()), AppLink.uploadEgypt, 'criminalRecord', @@ -1137,16 +1140,19 @@ class EgyptCardAI extends StatelessWidget { '${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'), const SizedBox(height: 8.0), Text( - '${'FullName'.tr}: ${ai.responseCriminalRecordEgypt['FullName']}', + '${'FullName'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', style: AppStyle.title.copyWith( - color: ai.responseCriminalRecordEgypt['FullName'] == - ai.responseIdEgyptDriverLicense['name_arabic'] + color: encryptionHelper.decryptData(ai + .responseCriminalRecordEgypt['FullName']) == + encryptionHelper.decryptData( + ai.responseIdEgyptDriverLicense[ + 'name_arabic']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'NationalID'.tr}: ${ai.responseCriminalRecordEgypt['NationalID']}'), + '${'NationalID'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), const SizedBox(height: 8.0), Text( '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), @@ -1160,7 +1166,7 @@ class EgyptCardAI extends StatelessWidget { onTap: () async { await ai.allMethodForAI( encryptionHelper - .encryptData(ai.prompts[5]['prompt'].toString()), + .decryptData(ai.prompts[5]['prompt'].toString()), AppLink.uploadEgypt, 'criminalRecord', ); diff --git a/lib/views/auth/captin/contact_us_page.dart b/lib/views/auth/captin/contact_us_page.dart index f3e6ddf..4233f14 100644 --- a/lib/views/auth/captin/contact_us_page.dart +++ b/lib/views/auth/captin/contact_us_page.dart @@ -1,13 +1,13 @@ -import 'package:sefer_driver/constant/colors.dart'; -import 'package:sefer_driver/constant/style.dart'; -import 'package:sefer_driver/views/widgets/my_scafold.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; +import '../../../constant/colors.dart'; +import '../../../constant/style.dart'; import '../../../controller/functions/tts.dart'; import '../../../controller/home/captin/contact_us_controller.dart'; +import '../../widgets/my_scafold.dart'; class ContactUsPage extends StatelessWidget { ContactUsPage({super.key}); @@ -35,7 +35,7 @@ class ContactUsPage extends StatelessWidget { IconButton( onPressed: () async { Get.put(TextToSpeechController()).speakText( - 'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + 'Swifti is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' .tr); }, icon: const Icon(Icons.headphones), @@ -43,7 +43,7 @@ class ContactUsPage extends StatelessWidget { Padding( padding: const EdgeInsets.all(8.0), child: Text( - 'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' + 'Swifti is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.' .tr, style: AppStyle.title, textAlign: TextAlign.center, diff --git a/lib/views/auth/captin/criminal_documents_page.dart b/lib/views/auth/captin/criminal_documents_page.dart index 773b4ce..b763f06 100644 --- a/lib/views/auth/captin/criminal_documents_page.dart +++ b/lib/views/auth/captin/criminal_documents_page.dart @@ -1,15 +1,16 @@ -import 'package:sefer_driver/constant/box_name.dart'; -import 'package:sefer_driver/constant/style.dart'; -import 'package:sefer_driver/main.dart'; -import 'package:sefer_driver/views/widgets/my_scafold.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/links.dart'; +import '../../../constant/style.dart'; +import '../../../controller/functions/encrypt_decrypt.dart'; import '../../../controller/functions/gemeni.dart'; import '../../../controller/functions/tts.dart'; +import '../../../main.dart'; import '../../widgets/elevated_btn.dart'; +import '../../widgets/my_scafold.dart'; class CriminalDocumemtPage extends StatelessWidget { const CriminalDocumemtPage({super.key}); @@ -35,8 +36,8 @@ class CriminalDocumemtPage extends StatelessWidget { ? MyElevatedButton( title: 'Next'.tr, onPressed: () async { - if (controller - .responseCriminalRecordEgypt['FullName'] != + if (encryptionHelper.decryptData(controller + .responseCriminalRecordEgypt['FullName']) != box.read(BoxName.nameArabic)) //todo get from server { Get.defaultDialog( @@ -140,19 +141,22 @@ Please fill in the JSON object with the extracted information, following these g const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'), + '${'InspectionResult'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['InspectionResult'])}'), const SizedBox(height: 8.0), Text( - '${'FullName'.tr}: ${ai.responseCriminalRecordEgypt['FullName']}', + '${'FullName'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', style: AppStyle.title.copyWith( - color: ai.responseCriminalRecordEgypt['FullName'] == - ai.responseIdEgyptDriverLicense['name_arabic'] + color: encryptionHelper.decryptData(ai + .responseCriminalRecordEgypt['FullName']) == + encryptionHelper.decryptData( + ai.responseIdEgyptDriverLicense[ + 'name_arabic']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'NationalID'.tr}: ${ai.responseCriminalRecordEgypt['NationalID']}'), + '${'NationalID'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), const SizedBox(height: 8.0), Text( '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), diff --git a/lib/views/auth/captin/driver_car_controller.dart b/lib/views/auth/captin/driver_car_controller.dart index 43dd962..1fae00d 100644 --- a/lib/views/auth/captin/driver_car_controller.dart +++ b/lib/views/auth/captin/driver_car_controller.dart @@ -1,13 +1,13 @@ import 'dart:convert'; -import 'package:sefer_driver/constant/box_name.dart'; -import 'package:sefer_driver/constant/colors.dart'; -import 'package:sefer_driver/constant/links.dart'; -import 'package:sefer_driver/controller/functions/crud.dart'; -import 'package:sefer_driver/main.dart'; -import 'package:sefer_driver/views/widgets/error_snakbar.dart'; import 'package:get/get.dart'; +import '../../../constant/box_name.dart'; +import '../../../constant/links.dart'; +import '../../../controller/functions/crud.dart'; +import '../../../main.dart'; +import '../../widgets/error_snakbar.dart'; + class DriverCarController extends GetxController { bool isLoading = false; List cars = []; diff --git a/lib/views/auth/captin/invite_driver_screen.dart b/lib/views/auth/captin/invite_driver_screen.dart index 6596dd6..9872632 100644 --- a/lib/views/auth/captin/invite_driver_screen.dart +++ b/lib/views/auth/captin/invite_driver_screen.dart @@ -1,12 +1,12 @@ -import 'package:sefer_driver/constant/box_name.dart'; -import 'package:sefer_driver/constant/colors.dart'; -import 'package:sefer_driver/main.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; +import '../../../constant/box_name.dart'; +import '../../../constant/colors.dart'; import '../../../controller/auth/captin/invit_controller.dart'; import '../../../controller/functions/encrypt_decrypt.dart'; +import '../../../main.dart'; class InviteScreen extends StatelessWidget { final InviteController controller = Get.put(InviteController());