From ce3ae01a7589b2695e9d5fb919c873f2cc47d00c Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 30 May 2025 16:57:40 +0300 Subject: [PATCH] 25-5-30/1 --- .env | 13 +- .gitignore | 1 + .../arm64-v8a/configure_fingerprint.bin | 24 +-- .../armeabi-v7a/configure_fingerprint.bin | 24 +-- .../6a58wo5c/x86/configure_fingerprint.bin | 24 +-- .../6a58wo5c/x86_64/configure_fingerprint.bin | 24 +-- .../4y6h5l4y/arm64-v8a/.ninja_deps | Bin 160916 -> 160984 bytes .../4y6h5l4y/arm64-v8a/.ninja_log | 1 + .../arm64-v8a/configure_fingerprint.bin | 24 +-- .../4y6h5l4y/armeabi-v7a/.ninja_deps | Bin 160236 -> 160304 bytes .../4y6h5l4y/armeabi-v7a/.ninja_log | 1 + .../armeabi-v7a/configure_fingerprint.bin | 24 +-- .../RelWithDebInfo/4y6h5l4y/x86/.ninja_deps | Bin 161016 -> 161084 bytes .../RelWithDebInfo/4y6h5l4y/x86/.ninja_log | 1 + .../4y6h5l4y/x86/configure_fingerprint.bin | 24 +-- .../4y6h5l4y/x86_64/.ninja_deps | Bin 161056 -> 161124 bytes .../RelWithDebInfo/4y6h5l4y/x86_64/.ninja_log | 1 + .../4y6h5l4y/x86_64/configure_fingerprint.bin | 24 +-- android/app/build.gradle | 4 +- ios/Podfile.lock | 76 ++++---- ios/Runner/Info.plist | 4 +- lib/constant/links.dart | 41 ++-- lib/constant/table_names.dart | 1 + .../auth/captin/history_captain.dart | 5 +- .../auth/captin/invit_controller.dart | 20 +- .../auth/captin/login_captin_controller.dart | 60 +++--- .../captin/register_captin_controller.dart | 57 ++---- lib/controller/auth/google_sign.dart | 5 +- lib/controller/auth/login_controller.dart | 5 +- lib/controller/firebase/firbase_messge.dart | 6 +- lib/controller/functions/crud.dart | 34 ++-- lib/controller/functions/face_detect.dart | 4 +- lib/controller/functions/gemeni.dart | 172 +++++++--------- .../functions/location_controller.dart | 183 +++++------------- lib/controller/functions/log_out.dart | 4 +- lib/controller/functions/package_info.dart | 22 +-- lib/controller/functions/secure_storage.dart | 16 +- .../functions/sms_egypt_controller.dart | 24 +-- lib/controller/functions/upload_image.dart | 9 +- .../home/captin/behavior_controller.dart | 115 +++++++++++ .../home/captin/help/help_controller.dart | 3 +- .../home/captin/home_captain_controller.dart | 39 ++-- .../home/captin/map_driver_controller.dart | 68 +++---- .../payment/driver_payment_controller.dart | 1 + .../payment/payment_controller.dart | 6 +- lib/controller/payment/paymob.dart | 9 +- .../payment/paymob/paymob_response.dart | 3 +- lib/controller/rate/rate_app_controller.dart | 4 +- lib/main.dart | 2 +- lib/models/db_sql.dart | 10 + lib/views/auth/captin/ai_page.dart | 10 +- .../auth/captin/cards/egypt_card_a_i.dart | 157 ++++++--------- lib/views/auth/captin/cards/sms_signup.dart | 7 - .../auth/captin/criminal_documents_page.dart | 15 +- .../auth/captin/invite_driver_screen.dart | 10 +- lib/views/auth/captin/login_captin.dart | 7 +- .../widget/left_menu_map_captain.dart | 64 +++--- .../orderCaptin/order_speed_request.dart | 62 +++--- lib/views/home/my_wallet/walet_captain.dart | 4 +- lib/views/home/profile/behavior_page.dart | 89 +++++++++ lib/views/home/profile/captains_cars.dart | 4 +- .../home/profile/cars_inserting_page.dart | 29 +-- lib/views/home/profile/profile_captain.dart | 87 +++++---- .../notification/available_rides_page.dart | 29 ++- 64 files changed, 857 insertions(+), 939 deletions(-) create mode 100644 lib/controller/home/captin/behavior_controller.dart create mode 100644 lib/views/home/profile/behavior_page.dart diff --git a/.env b/.env index b351a6d..03250d0 100755 --- a/.env +++ b/.env @@ -14,14 +14,14 @@ chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl -serverPHP=https://api.sefer.live/sefer -seferAlexandriaServer=https://seferalexandria.site/sefer -seferPaymentServer=https://seferpw.shop/sefer +serverPHP=https://api.tripz-egypt.com/tripz +seferAlexandriaServer=https://api.tripz-egypt.com/tripz +seferPaymentServer=https://wl.tripz-egypt.com/tripz # seferCairoServer=https://sefer.click/sefer -seferCairoServer=https://server.sefer.click/sefer.click/sefer -seferGizaServer=https://gizasefer.online/sefer +seferCairoServer=https://api.tripz-egypt.com/tripz +seferGizaServer=https://api.tripz-egypt.com/tripz anthropicAIkeySeferNewHamzaayedpython=zg-qbc-qvo39-vCB-WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c_WHtGsRO_439PBk-e2QqgkQQXrXlBl -getapiKey=https://server.sefer.click/sefer.click/sefer/ride/apiKey/get.php +getapiKey=https://api.tripz-egypt.com/tripz/ride/apiKey/get.php cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl @@ -53,6 +53,7 @@ allowed=TripzDriver: allowedWallet=TripzWallet: passnpassenger=hbgbitbXrXrBr newId=new +newcontabo = Xr9j74uRrr?Gzcvm a=q b=x c=f diff --git a/.gitignore b/.gitignore index 399ec11..3f82396 100755 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ migrate_working_dir/ .pub-cache/ .pub/ .env +tripz_server.yaml /build/ # Symbolication related diff --git a/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin index 5d9cd47..2e22541 100644 --- a/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/configure_fingerprint.bin @@ -2,28 +2,28 @@ C/C++ Structured Log  }/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2~ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2~ | -z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json  2 +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build.json  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json  2 2p +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/android_gradle_build_mini.json  2 2p n -l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja  2 2t +l/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja  2 2t r -p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt  2y +p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build.ninja.txt  2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  2 ^ 2z +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  2 ^ 2z x -v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json  2 2~ +v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json  2 2~ | -z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json.bin  2  2 +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/compile_commands.json.bin  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/metadata_generation_command.txt  2  2w u -s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  2  ( 2| +s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  2  ( 2| z -x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  2  o 2b +x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  2  o 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin index 62af3c8..6324f92 100644 --- a/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log  /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  2 2 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  2 2r +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  2 2r p -n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  2 2v +n/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja  2 2v t -r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  2{ +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build.ninja.txt  2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  2 ^ 2| +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  2 ^ 2| z -x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json  2 2 +x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json  2 2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin  2  2 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/compile_commands.json.bin  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/metadata_generation_command.txt  2  2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  2  ( 2~ +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  2  ( 2~ | -z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  2  q 2b +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  2  q 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin index e10dfb3..3da418b 100644 --- a/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/x86/configure_fingerprint.bin @@ -2,28 +2,28 @@ C/C++ Structured Log{ y w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  坰2  2x +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ӏ2  2x v -t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  坰2 +t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  ӏ2 2} { -y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  坰2 2j +y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  ӏ2 2j h -f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  坰2 2n +f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  ӏ2 2n l -j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  坰2s +j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  ӏ2s q -o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  坰2 ^ 2t +o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  ӏ2 ^ 2t r -p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json  坰2 2x +p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json  ӏ2 2x v -t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json.bin  坰2  2~ +t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/compile_commands.json.bin  ӏ2  2~ | -z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/metadata_generation_command.txt  坰2 +z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/metadata_generation_command.txt  ԏ2  2q o -m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  坰2  ( 2v +m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  ԏ2  ( 2v t -r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  坰2  i 2b +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  ԏ2  i 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  坰2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ԏ2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin index 8d5cb6e..ad0b00d 100644 --- a/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/6a58wo5c/x86_64/configure_fingerprint.bin @@ -2,28 +2,28 @@ C/C++ Structured Log~ | z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2{ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ̴2  2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json  2 +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build.json  ̴2 2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json  2 2m +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/android_gradle_build_mini.json  ̴2 2m k -i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja  2 2q +i/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja  ̴2 2q o -m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt  2v +m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build.ninja.txt  ̴2v t -r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  2 ^ 2w +r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  ʹ2 ^ 2w u -s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json  2 2{ +s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json  ʹ2 2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  2  2 +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  ʹ2  2  -}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt  2 +}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/metadata_generation_command.txt  ʹ2  2t r -p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  2  ( 2y +p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  ʹ2  ( 2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  2  l 2b +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  ʹ2  l 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  ʹ2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_deps b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_deps index 60a56c40b12afd5a236ab4befcc25235b313e578..c9717ddf44b763f8b813d965474cbf99c8b1250e 100755 GIT binary patch delta 34 qcmbR8lJmw(&W0AoElg8N_#GG+8lspP814jF{wouAnI2!lWC{T1?+h0J delta 13 Ucmccdl5@&S&W0AoElg8N057Bl6aWAK diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_log b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_log index 23c551e..8804ea2 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_log +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/.ninja_log @@ -4,3 +4,4 @@ 6 2198 1741521280756215895 CMakeFiles/native-lib.dir/native-lib.cpp.o 282a5c17fd8e3306 10 7926 1742820916832262742 CMakeFiles/native-lib.dir/native-lib.cpp.o 282a5c17fd8e3306 7956 9937 1742820919083327611 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/arm64-v8a/libnative-lib.so f365eec12321e91 +111 1471 1748548355165344476 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/arm64-v8a/libnative-lib.so f365eec12321e91 diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin index 3a7904e..e0bb041 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log  /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build.json  2 2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build.json  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build_mini.json  2 2y +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build_mini.json  2 2y w -u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja  2 2} +u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja  2 2} { -y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja.txt  2 +y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja.txt  2  -~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  2 ^ 2 +~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  2 ^ 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json  2 2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json  2 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  2  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/metadata_generation_command.txt  2  2 ~ -|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  2  ( 2 +|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  2  ( 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  2  x 2b +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  2  x 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_deps b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_deps index b766e8aee8871b412577f0ba305000586ab22e4f..971e6839d9ecf1c2db0b1aff7ad65d28c372e16f 100755 GIT binary patch delta 34 qcmaF!m~+Du&W0AoElh6;`5hP-8p4?w7?z}+lq?r_nI3P-WC{T9`wQ0q delta 13 Ucmdn+g!9c~&W0AoElh6;0Wn7gjsO4v diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_log b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_log index 0026a62..e1f5f7b 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_log +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/.ninja_log @@ -4,3 +4,4 @@ 5 1608 1741521283027110183 CMakeFiles/native-lib.dir/native-lib.cpp.o b87079b1ccb85962 1 3076 1742820925175269992 CMakeFiles/native-lib.dir/native-lib.cpp.o b87079b1ccb85962 3076 4061 1742820926159885896 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/armeabi-v7a/libnative-lib.so 4af411d9d89f3387 +13 224 1748548355627771556 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/armeabi-v7a/libnative-lib.so 4af411d9d89f3387 diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin index 5398975..c6c67c2 100644 --- a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log  /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  2  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  2 ߣ2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  2 ߣ2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build_mini.json  2 2{ +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build_mini.json  2 2{ y -w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja  2 Ң2 +w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja  2 Ң2 } -{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja.txt  2 +{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build.ninja.txt  2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  2 ^ 2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  2 ^ 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json  2 Ţ2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json  2 Ţ2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json.bin  2  Ţ2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json.bin  2  Ţ2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/metadata_generation_command.txt  2 +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/metadata_generation_command.txt  2  2  -~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  2  ( 2 +~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  2  ( 2  -/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  2  z 2b +/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  2  z 2b ` -^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file +^/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/src/main/cpp/CMakeLists.txt  2  Ў2 \ No newline at end of file diff --git a/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/.ninja_deps b/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/.ninja_deps index 0eca0ba063007b2fa7416bec2d399f15d8e1524b..1180cfc1fc782f49a2609b0d4c7b75d019552a95 100755 GIT binary patch delta 34 qcmezIl5@{1&W0AoElfX3_#GG+8X}n)7&eE^S1%WLnO<+kWC{TFSPT#V delta 13 UcmdnCFBundlePackageType APPL CFBundleShortVersionString - 102 + 105 CFBundleSignature ???? CFBundleURLTypes @@ -50,7 +50,7 @@ CFBundleVersion - 5.0.102 + 5.0.105 FirebaseAppDelegateProxyEnabled NO GMSApiKey diff --git a/lib/constant/links.dart b/lib/constant/links.dart index 503e5ec..325ca61 100755 --- a/lib/constant/links.dart +++ b/lib/constant/links.dart @@ -15,28 +15,27 @@ class AppLink { // static final String seferAlexandriaServer = Env.seferAlexandriaServer; // static final String seferCairoServer = Env.seferCairoServer; // static final String seferCairoServer = - // 'https://server.sefer.click/sefer.click/sefer'; + // 'https://api.tripz-egypt.com/tripz'; // static final String seferGizaServer = Env.seferCairoServer; // static final String seferAlexandriaServer = Env.seferCairoServer; // static final String seferPaymentServer = '${Env.seferCairoServer}/ride'; // static final String seferPaymentServer0 = Env.seferCairoServer; // static const String seferGizaServer = 'https://gizasefer.online/sefer'; // static final String seferGizaServer = Env.seferGizaServer; - static final String endPoint = - box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink); - // 'https://server.sefer.click/sefer.click/sefer'; + static final String endPoint = 'https://api.tripz-egypt.com/tripz'; + // 'https://api.tripz-egypt.com/tripz'; static final String server = endPoint; static String seferCairoServer = endPoint; - static String seferGizaServer = box.read('Giza'); - static String seferAlexandriaServer = box.read('Alexandria'); + static String seferGizaServer = + box.read('Giza') ?? box.read(BoxName.serverChosen); + static String seferAlexandriaServer = + box.read('Alexandria') ?? box.read(BoxName.serverChosen); // static final String server = Env.serverPHP; - static String loginJwtDriver = - "https://server.sefer.click/sefer.click/sefer/loginJwtDriver.php"; + static String loginJwtDriver = "$server/loginJwtDriver.php"; static String loginJwtWalletDriver = "$seferPaymentServer/loginJwtWalletDriver.php"; - static String loginFirstTimeDriver = - "https://server.sefer.click/sefer.click/sefer/loginFirstTimeDriver.php"; + static String loginFirstTimeDriver = "$server/loginFirstTimeDriver.php"; static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; static String llama = 'https://api.llama-api.com/chat/completions'; @@ -92,7 +91,7 @@ class AppLink { static String ride = '$server/ride'; static String addCancelRideFromPassenger = "$server/ride/cancelRide/add.php"; static String addCancelTripFromDriverAfterApplied = - "$server/ride/cancelRide/addCancelTripFromDriverAfterApplied.php"; + "$ride/cancelRide/addCancelTripFromDriverAfterApplied.php"; static String cancelRide = "$server/ride/cancelRide/get.php"; //-----------------ridessss------------------ static String addRides = "$ride/rides/add.php"; @@ -102,10 +101,9 @@ class AppLink { static String getTripCountByCaptain = "$ride/rides/getTripCountByCaptain.php"; static String getRideOrderID = "$ride/rides/getRideOrderID.php"; static String getRideStatus = "$ride/rides/getRideStatus.php"; - static String getapiKey = Env.getapiKey; + static String getapiKey = "$ride/apiKey/get.php"; - static String getapiKeySefer = - "https://api.sefer.click/sefer/ride/apiKey/get.php"; + static String getapiKeySefer = "$ride/apiKey/get.php"; static String getRideStatusBegin = "$ride/rides/getRideStatusBegin.php"; static String getRideStatusFromStartApp = "$ride/rides/getRideStatusFromStartApp.php"; @@ -226,16 +224,16 @@ class AppLink { static String addRateToDriver = "$ride/rate/addRateToDriver.php"; static String addRateApp = "$ride/rate/add_rate_app.php"; static String sendEmailRateingApp = - "https://api.sefer.click/sefer/ride/rate/sendEmailRateingApp.php"; + "https://api.tripz-egypt.com/tripz/ride/rate/sendEmailRateingApp.php"; static String getDriverRate = "$ride/rate/getDriverRate.php"; static String getPassengerRate = "$ride/rate/getPassengerRate.php"; ////////////////emails ============// static String sendEmailToPassengerForTripDetails = - "https://api.sefer.click/sefer/ride/rides/emailToPassengerTripDetail.php"; + "https://api.tripz-egypt.com/tripz/ride/rides/emailToPassengerTripDetail.php"; static String sendEmailToDrivertransaction = - "https://api.sefer.click/sefer/Admin/sendEmailToDrivertransaction.php"; - // "https://api.sefer.click/sefer/Admin/sendEmailToDrivertransaction.php"; + "https://api.tripz-egypt.com/tripz/Admin/sendEmailToDrivertransaction.php"; + // "https://api.tripz-egypt.com/tripz/Admin/sendEmailToDrivertransaction.php"; // =========================================== static String pathImage = "$server/upload/types/"; static String uploadImage = "$server/uploadImage.php"; @@ -253,7 +251,7 @@ class AppLink { static String getCarsLocationByPassenger = "$location/get.php"; static String addpassengerLocation = "$location/addpassengerLocation.php"; static String getLocationAreaLinks = - "https://server.sefer.click/sefer.click/sefer/ride/location/get_location_area_links.php"; + "https://api.tripz-egypt.com/tripz/ride/location/get_location_area_links.php"; static String getLatestLocationPassenger = "$location/getLatestLocationPassenger.php"; static String getFemalDriverLocationByPassenger = @@ -261,6 +259,7 @@ class AppLink { static String getDriverCarsLocationToPassengerAfterApplied = "$location/getDriverCarsLocationToPassengerAfterApplied.php"; static String addCarsLocationByPassenger = "$location/add.php"; + static String saveBehavior = "$location/save_behavior.php"; static String addCarsLocationGizaEndpoint = "$location/add.php"; static String addCarsLocationAlexandriaEndpoint = "$location/add.php"; static String addCarsLocationCairoEndpoint = "$location/add.php"; @@ -271,6 +270,10 @@ class AppLink { static String getTotalDriverDurationToday = "$location/getTotalDriverDurationToday.php"; + //==================get_driver_behavior.php============= + static String get_driver_behavior = + '$server/ride/driver_behavior/get_driver_behavior.php'; + //==================cars new drivers============= static String addNewCarsDrivers = '$server/ride/carDrivers/add.php'; static String getNewCarsDrivers = '$server/ride/carDrivers/get.php'; diff --git a/lib/constant/table_names.dart b/lib/constant/table_names.dart index 4366a34..6e1b658 100755 --- a/lib/constant/table_names.dart +++ b/lib/constant/table_names.dart @@ -5,6 +5,7 @@ class TableName { static const String driverOrdersRefuse = "driverOrdersRefuse"; static const String rideLocation = "rideLocation"; static const String faceDetectTimes = "faceDetectTimes"; + static const String behavior = "behavior"; static const String captainNotification = "captainNotification"; static const String applyRideFromOverLay = "applyRideFromOverLay"; } diff --git a/lib/controller/auth/captin/history_captain.dart b/lib/controller/auth/captin/history_captain.dart index 9b66762..528b136 100755 --- a/lib/controller/auth/captin/history_captain.dart +++ b/lib/controller/auth/captin/history_captain.dart @@ -45,9 +45,8 @@ class HistoryCaptainController extends GetxController { getHistoryDetails(String orderId) async { isloading = true; - var res = await CRUD().get( - link: AppLink.getRideOrderID, - payload: {'id': EncryptionHelper.instance.encryptData(orderId)}); + var res = await CRUD() + .get(link: AppLink.getRideOrderID, payload: {'id': (orderId)}); historyDetailsData = jsonDecode(res); isloading = false; update(); diff --git a/lib/controller/auth/captin/invit_controller.dart b/lib/controller/auth/captin/invit_controller.dart index c498039..c8ea87f 100755 --- a/lib/controller/auth/captin/invit_controller.dart +++ b/lib/controller/auth/captin/invit_controller.dart @@ -150,9 +150,9 @@ Download the Tripz app now and enjoy your ride! void onSelectDriverInvitation(int index) async { MyDialog().getDialog( int.parse((driverInvitationData[index]['countOfInvitDriver'])) < 100 - ? '${'When'.tr} ${EncryptionHelper.instance.decryptData(driverInvitationData[index]['invitorName'])} ${"complete, you can claim your gift".tr} ' + ? '${'When'.tr} ${(driverInvitationData[index]['invitorName'])} ${"complete, you can claim your gift".tr} ' : 'You deserve the gift'.tr, - '${EncryptionHelper.instance.decryptData(driverInvitationData[index]['invitorName'])} ${(driverInvitationData[index]['countOfInvitDriver'])} / 100 ${'Trip'.tr}', + '${(driverInvitationData[index]['invitorName'])} ${(driverInvitationData[index]['countOfInvitDriver'])} / 100 ${'Trip'.tr}', () async { bool isAvailable = await LocalAuthentication().isDeviceSupported(); if (int.parse((driverInvitationData[index]['countOfInvitDriver'])) < @@ -173,10 +173,9 @@ Download the Tripz app now and enjoy your ride! if ((driverInvitationData[index]['isGiftToken']).toString() == '0') { Get.back(); - await CRUD().post(link: AppLink.updateInviteDriver, payload: { - 'id': EncryptionHelper.instance - .encryptData(driverInvitationData[index]['id']) - }); + await CRUD().post( + link: AppLink.updateInviteDriver, + payload: {'id': (driverInvitationData[index]['id'])}); await Get.find().addDriverPayment( 'paymentMethod', ('500'), @@ -186,8 +185,7 @@ Download the Tripz app now and enjoy your ride! await Get.find() .addDriverWalletToInvitor( 'paymentMethod', - EncryptionHelper.instance.encryptData( - driverInvitationData[index]['driverInviterId']), + (driverInvitationData[index]['driverInviterId']), ('500'), ); await Get.find() @@ -231,9 +229,9 @@ Download the Tripz app now and enjoy your ride! int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver'] .toString()) < 3 - ? '${'When'.tr} ${EncryptionHelper.instance.decryptData(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} ' + ? '${'When'.tr} ${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${"complete, you can claim your gift".tr} ' : 'You deserve the gift'.tr, - '${EncryptionHelper.instance.decryptData(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver']} / 3 ${'Trip'.tr}', + '${(driverInvitationDataToPassengers[index]['passengerName'].toString())} ${driverInvitationDataToPassengers[index]['countOfInvitDriver']} / 3 ${'Trip'.tr}', () async { if (int.parse(driverInvitationDataToPassengers[index] ['countOfInvitDriver'] @@ -342,7 +340,7 @@ Download the Tripz app now and enjoy your ride! }); if (response != 'failure') { - var d = jsonDecode(response); + var d = (response); mySnackbarSuccess('Invite sent successfully'.tr); String message = '${'*Tripz DRIVER CODE*'.tr}\n\n' '${"Use this code in registration".tr}\n' diff --git a/lib/controller/auth/captin/login_captin_controller.dart b/lib/controller/auth/captin/login_captin_controller.dart index 27686f8..18e4adb 100755 --- a/lib/controller/auth/captin/login_captin_controller.dart +++ b/lib/controller/auth/captin/login_captin_controller.dart @@ -98,11 +98,12 @@ class LoginDriverController extends GetxController { final random = Random(); if (random.nextBool()) { - await SecurityHelper.performSecurityChecks(); + // await SecurityHelper.performSecurityChecks(); } else { await SecurityChecks.isDeviceRootedFromNative(Get.context!); } String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + // print('fingerPrint: ${fingerPrint}'); dev = Platform.isAndroid ? 'android' : 'ios'; var payload = { 'id': box.read(BoxName.driverID), @@ -118,7 +119,7 @@ class LoginDriverController extends GetxController { // Log.print('response.body: ${response1.body}'); // print(payload); // Log.print( - // 'jsonDecode(response1.body)["jwt"]: ${jsonDecode(response1.body)['jwt']}'); + // 'jsonDecode(response1.body)["jwt"]: ${jsonDecode(response1.body)['jwt']}'); await box.write(BoxName.hmac, jsonDecode(response1.body)['hmac']); return jsonDecode(response1.body)['jwt'].toString(); } @@ -144,9 +145,11 @@ class LoginDriverController extends GetxController { ); if (response0.statusCode == 200) { final decodedResponse1 = jsonDecode(response0.body); + // Log.print('decodedResponse1: ${decodedResponse1}'); final jwt = decodedResponse1['jwt']; box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs)); + // await box.write(BoxName.hmac, decodedResponse1['hmac']); await AppInitializer().getAIKey(Driver.keyOfApp); await AppInitializer().getAIKey(Driver.initializationVector); @@ -183,6 +186,7 @@ class LoginDriverController extends GetxController { // Log.print('decodedResponse1: ${decodedResponse1}'); final jwt = decodedResponse1['jwt']; + // await box.write(BoxName.hmac, decodedResponse1['hmac']); await box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs)); await AppInitializer().getKey(); } @@ -230,7 +234,7 @@ class LoginDriverController extends GetxController { var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: { 'email': email.toString().contains('@') // ? (box.read(BoxName.emailDriver)) - ? EncryptionHelper.instance.encryptData(email) + ? (email) : email, 'id': driverID, }); @@ -252,10 +256,7 @@ class LoginDriverController extends GetxController { if (jsonDecoeded.isNotEmpty) { if (jsonDecoeded['status'] == 'success' && jsonDecoeded['data'][0]['is_verified'].toString() == '1') { - box.write( - BoxName.emailDriver, - EncryptionHelper.instance - .decryptData(jsonDecoeded['data'][0]['email'])); + box.write(BoxName.emailDriver, jsonDecoeded['data'][0]['email']); box.write(BoxName.firstTimeLoadKey, 'false'); box.write(BoxName.driverID, (jsonDecoeded['data'][0]['id'])); box.write(BoxName.isTest, '1'); @@ -276,16 +277,13 @@ class LoginDriverController extends GetxController { (jsonDecoeded['data'][0]['accountBank'])); box.write( BoxName.nameDriver, - '${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['first_name'])}' - ' ${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['last_name'])}'); + '${(jsonDecoeded['data'][0]['first_name'])}' + ' ${(jsonDecoeded['data'][0]['last_name'])}'); if (((jsonDecoeded['data'][0]['model']) .toString() .contains('دراجه') || jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) { - if (EncryptionHelper.instance - .decryptData(jsonDecoeded['data'][0]['gender']) - .toString() == - 'Male') { + if ((jsonDecoeded['data'][0]['gender']).toString() == 'Male') { box.write(BoxName.carTypeOfDriver, 'Scooter'); } else { box.write(BoxName.carTypeOfDriver, 'Pink Bike'); @@ -311,8 +309,9 @@ class LoginDriverController extends GetxController { link: AppLink.getDriverToken, payload: {'captain_id': (box.read(BoxName.driverID)).toString()}); - String? fingerPrint = await DeviceHelper.getDeviceFingerprint(); - await storage.write(key: BoxName.fingerPrint, value: fingerPrint); + String fingerPrint = await DeviceHelper.getDeviceFingerprint(); + await storage.write( + key: BoxName.fingerPrint, value: fingerPrint.toString()); if (token != 'failure') { if ((jsonDecode(token)['data'][0]['token']) != @@ -320,9 +319,7 @@ class LoginDriverController extends GetxController { Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( 'token change'.tr, 'change device'.tr, - EncryptionHelper.instance - .decryptData(jsonDecode(token)['data'][0]['token']) - .toString(), + (jsonDecode(token)['data'][0]['token']).toString(), [], 'promo.wav'); await Get.defaultDialog( @@ -337,9 +334,10 @@ class LoginDriverController extends GetxController { 'captain_id': (box.read(BoxName.driverID)).toString(), 'fingerPrint': (fingerPrint).toString() }); + // to save in payment server fingerprint await CRUD().post( link: - "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", + "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php", payload: { 'token': (box.read(BoxName.tokenDriver)), 'captain_id': @@ -381,7 +379,7 @@ class LoginDriverController extends GetxController { update(); var res = await CRUD() .get(link: AppLink.loginUsingCredentialsWithoutGoogle, payload: { - 'email': EncryptionHelper.instance.encryptData(email), + 'email': (email), 'password': password, }); box.write(BoxName.emailDriver, (email).toString()); @@ -409,33 +407,25 @@ class LoginDriverController extends GetxController { jsonDecoeded['data'][0]['is_verified'].toString()); box.write(BoxName.phoneDriver, (jsonDecoeded['data'][0]['phone'])); box.write( - BoxName.nameArabic, - EncryptionHelper.instance - .decryptData(jsonDecoeded['data'][0]['name_arabic'])); + BoxName.nameArabic, (jsonDecoeded['data'][0]['name_arabic'])); box.write( BoxName.bankCodeDriver, (jsonDecoeded['data'][0]['bankCode'])); box.write(BoxName.accountBankNumberDriver, jsonDecoeded['data'][0]['accountBank']); box.write( BoxName.nameDriver, - '${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['first_name'])}' - ' ${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['last_name'])}'); + '${(jsonDecoeded['data'][0]['first_name'])}' + ' ${(jsonDecoeded['data'][0]['last_name'])}'); if ((jsonDecoeded['data'][0]['model'].toString().contains('دراجه') || jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) { - if (EncryptionHelper.instance - .decryptData(jsonDecoeded['data'][0]['gender']) - .toString() == - 'Male') { + if ((jsonDecoeded['data'][0]['gender']).toString() == 'Male') { box.write(BoxName.carTypeOfDriver, 'Scooter'); } else { box.write(BoxName.carTypeOfDriver, 'Pink Bike'); } } else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) > 2017) { - if (EncryptionHelper.instance - .decryptData(jsonDecoeded['data'][0]['gender']) - .toString() != - 'Male') { + if ((jsonDecoeded['data'][0]['gender']).toString() != 'Male') { box.write(BoxName.carTypeOfDriver, 'Lady'); } else { box.write(BoxName.carTypeOfDriver, 'Comfort'); @@ -463,9 +453,7 @@ class LoginDriverController extends GetxController { Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( 'token change'.tr, 'change device'.tr, - EncryptionHelper.instance - .decryptData(jsonDecode(token)['data'][0]['token']) - .toString(), + (jsonDecode(token)['data'][0]['token']).toString(), [], 'ding.wav'); Get.defaultDialog( diff --git a/lib/controller/auth/captin/register_captin_controller.dart b/lib/controller/auth/captin/register_captin_controller.dart index 47cfe35..beff07c 100755 --- a/lib/controller/auth/captin/register_captin_controller.dart +++ b/lib/controller/auth/captin/register_captin_controller.dart @@ -100,7 +100,6 @@ class RegisterCaptainController extends GetxController { SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); isLoading = true; update(); - int randomNumber = Random().nextInt(100000) + 1; isLoading = true; update(); if (formKey3.currentState!.validate()) { @@ -108,8 +107,7 @@ class RegisterCaptainController extends GetxController { if (isValidEgyptianPhoneNumber(phoneController.text)) { var responseCheker = await CRUD() .post(link: AppLink.checkPhoneNumberISVerfiedDriver, payload: { - 'phone_number': EncryptionHelper.instance - .encryptData('+2${phoneController.text}'), + 'phone_number': ('+2${phoneController.text}'), }); if (responseCheker != 'failure') { var d = jsonDecode(responseCheker); @@ -117,29 +115,18 @@ class RegisterCaptainController extends GetxController { Get.snackbar('Phone number is verified before'.tr, '', backgroundColor: AppColor.greenColor); box.write(BoxName.phoneVerified, '1'); - box.write( - BoxName.phone, - EncryptionHelper.instance - .encryptData('+2${phoneController.text}')); + box.write(BoxName.phone, ('+2${phoneController.text}')); await Get.put(LoginDriverController()).loginWithGoogleCredential( box.read(BoxName.driverID).toString(), - EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver).toString()), + (box.read(BoxName.emailDriver).toString()), ); } else { await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': EncryptionHelper.instance - .encryptData('+2${phoneController.text}'), - 'token_code': EncryptionHelper.instance - .encryptData(randomNumber.toString()), + 'phone_number': ('+2${phoneController.text}'), "driverId": box.read(BoxName.driverID), - "email": EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver)), + "email": (box.read(BoxName.emailDriver)), }); - await smsEgyptController.sendSmsEgypt( - phoneController.text.toString(), randomNumber.toString()); - isSent = true; isLoading = false; @@ -147,17 +134,11 @@ class RegisterCaptainController extends GetxController { } } else { await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': EncryptionHelper.instance - .encryptData('+2${phoneController.text}'), - 'token_code': EncryptionHelper.instance - .encryptData(randomNumber.toString()), + 'phone_number': ('+2${phoneController.text}'), "driverId": box.read(BoxName.driverID), "email": box.read(BoxName.emailDriver), }); - await smsEgyptController.sendSmsEgypt( - phoneController.text.toString(), randomNumber.toString()); - isSent = true; isLoading = false; @@ -250,8 +231,7 @@ class RegisterCaptainController extends GetxController { _handleAlreadyVerified() { mySnackbarSuccess('Phone number is already verified'.tr); box.write(BoxName.phoneVerified, '1'); - box.write(BoxName.phone, - EncryptionHelper.instance.encryptData('+2${phoneController.text}')); + box.write(BoxName.phone, ('+2${phoneController.text}')); Get.put(LoginDriverController()).loginWithGoogleCredential( box.read(BoxName.driverID).toString(), box.read(BoxName.emailDriver).toString(), @@ -266,15 +246,14 @@ class RegisterCaptainController extends GetxController { await CRUD().post( link: AppLink.sendVerifyOtpMessage, payload: { - 'phone_number': EncryptionHelper.instance.encryptData('+2$phoneNumber'), - 'token_code': - EncryptionHelper.instance.encryptData(randomNumber.toString()), + 'phone_number': ('+2$phoneNumber'), + 'token_code': (randomNumber.toString()), 'driverId': box.read(BoxName.driverID), 'email': box.read(BoxName.emailDriver), }, ); - await smsEgyptController.sendSmsEgypt(phoneNumber, randomNumber.toString()); + await smsEgyptController.sendSmsEgypt(phoneNumber); lastOtpSentTime = DateTime.now(); // Update the last OTP sent time isSent = true; @@ -286,15 +265,12 @@ class RegisterCaptainController extends GetxController { // var loginDriverController = Get.put(LoginDriverController()); if (formKey3.currentState!.validate()) { var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: { - 'phone_number': - EncryptionHelper.instance.encryptData('+2${phoneController.text}'), - 'token_code': - EncryptionHelper.instance.encryptData(verifyCode.text.toString()), + 'phone_number': ('+2${phoneController.text}'), + 'token_code': (verifyCode.text.toString()), }); if (res != 'failure') { // var dec = jsonDecode(res); - box.write(BoxName.phoneDriver, - EncryptionHelper.instance.encryptData('+2${phoneController.text}')); + box.write(BoxName.phoneDriver, ('+2${phoneController.text}')); box.write(BoxName.phoneVerified, '1'); // loginDriverController.isGoogleLogin == true @@ -319,10 +295,9 @@ class RegisterCaptainController extends GetxController { sendVerifications() async { var res = await CRUD().post(link: AppLink.verifyEmail, payload: { 'email': emailController.text.isEmpty - ? EncryptionHelper.instance.encryptData( - Get.find().emailController.text.toString()) - : EncryptionHelper.instance.encryptData(emailController.text), - 'token': EncryptionHelper.instance.encryptData(verifyCode.text), + ? (Get.find().emailController.text.toString()) + : (emailController.text), + 'token': (verifyCode.text), }); if (res != 'failure') { diff --git a/lib/controller/auth/google_sign.dart b/lib/controller/auth/google_sign.dart index 6db6442..ffe4528 100755 --- a/lib/controller/auth/google_sign.dart +++ b/lib/controller/auth/google_sign.dart @@ -94,9 +94,8 @@ class GoogleSignInHelper { // Retrieve driverID and emailDriver with added validation final driverID = (box.read(BoxName.driverID)!.toString()) ?? 'Unknown ID'; - final emailDriver = EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver)!.toString()) ?? - 'Unknown Email'; + final emailDriver = + (box.read(BoxName.emailDriver)!.toString()) ?? 'Unknown Email'; // Debug print statements print('Driver ID: $driverID'); diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index 8da9a09..edb3bd7 100755 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -60,10 +60,7 @@ class LoginController extends GetxController { if (jsonDecoeded['status'] == 'success') { if (jsonDecoeded['data'][0]['verified'] == 1) { box.write(BoxName.driverID, jsonDecoeded['data'][0]['id']); - box.write( - BoxName.emailDriver, - EncryptionHelper.instance - .encryptData(jsonDecoeded['data'][0]['email'])); + box.write(BoxName.emailDriver, (jsonDecoeded['data'][0]['email'])); box.write( BoxName.nameDriver, jsonDecoeded['data'][0]['first_name'] + diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index 91436c3..a1bbf0a 100755 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -71,8 +71,7 @@ class FirebaseMessagesController extends GetxController { Future getToken() async { fcmToken.getToken().then((token) { // Log.print('token: ${token}'); - box.write( - BoxName.tokenDriver, EncryptionHelper.instance.encryptData(token!)); + box.write(BoxName.tokenDriver, (token!)); }); FirebaseMessaging.onMessage.listen((RemoteMessage message) { @@ -409,8 +408,7 @@ class FirebaseMessagesController extends GetxController { var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY'); // Log.print('encryptedKey: ${encryptedKey}'); if (encryptedKey != null) { - serviceAccountKeyJson = - EncryptionHelper.instance.decryptData(encryptedKey); + serviceAccountKeyJson = (encryptedKey); // Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}'); } else { print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage'); diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart index 5233940..b8c7678 100755 --- a/lib/controller/functions/crud.dart +++ b/lib/controller/functions/crud.dart @@ -66,12 +66,12 @@ class CRUD { return 'token_expired'; // Return a specific value for token expiration } else { // Other 401 errors - addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); return 'failure'; } } else { - addError('Non-200 response code: ${response.statusCode}', - 'crud().post - Other'); + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); return 'failure'; } } @@ -96,7 +96,7 @@ class CRUD { }, ); // print(response.request); - // Log.print('response.request: ${response.request}'); + // // Log.print('response.request: ${response.request}'); // Log.print('response.body: ${response.body}'); // print(payload); if (response.statusCode == 200) { @@ -117,12 +117,12 @@ class CRUD { return 'token_expired'; // Return a specific value for token expiration } else { // Other 401 errors - addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); return 'failure'; } } else { - addError('Non-200 response code: ${response.statusCode}', - 'crud().post - Other'); + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); return 'failure'; } } @@ -157,7 +157,7 @@ class CRUD { return jsonData['status']; } } catch (e) { - addError(e.toString(), 'crud().post - JSON decoding'); + // addError(e.toString(), 'crud().post - JSON decoding'); return 'failure'; } } else if (response.statusCode == 401) { @@ -168,16 +168,16 @@ class CRUD { return 'token_expired'; // Return a specific value for token expiration } else { // Other 401 errors - addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); return 'failure'; } } else { - addError('Non-200 response code: ${response.statusCode}', - 'crud().post - Other'); + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); return 'failure'; } } catch (e) { - addError('HTTP request error: $e', 'crud().post - HTTP'); + // addError('HTTP request error: $e', 'crud().post - HTTP'); return 'failure'; } } @@ -215,7 +215,7 @@ class CRUD { return jsonData['status']; } } catch (e) { - addError(e.toString(), url); + // addError(e.toString(), url); return 'failure'; } } else if (response.statusCode == 401) { @@ -238,16 +238,16 @@ class CRUD { return 'token_expired'; // Return a specific value for token expiration } else { // Other 401 errors - addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); + // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); return 'failure'; } } else { - addError('Non-200 response code: ${response.statusCode}', - 'crud().post - Other'); + // addError('Non-200 response code: ${response.statusCode}', + // 'crud().post - Other'); return 'failure'; } } catch (e) { - addError('HTTP request error: $e', 'crud().post - HTTP'); + // addError('HTTP request error: $e', 'crud().post - HTTP'); return 'failure'; } } diff --git a/lib/controller/functions/face_detect.dart b/lib/controller/functions/face_detect.dart index 777ec31..b0a805f 100755 --- a/lib/controller/functions/face_detect.dart +++ b/lib/controller/functions/face_detect.dart @@ -28,9 +28,9 @@ Future faceDetector() async { request.body = json.encode({ "url1": - "${AppLink.seferCairoServer}/card_image/id_front-${EncryptionHelper.instance.decryptData(box.read(BoxName.driverID))}.jpg", + "${AppLink.seferCairoServer}/card_image/id_front-${(box.read(BoxName.driverID))}.jpg", "url2": - "https://api.sefer.live/sefer/card_image/face_detect-${EncryptionHelper.instance.decryptData(box.read(BoxName.driverID))}.jpg" + "https://api.sefer.live/sefer/card_image/face_detect-${(box.read(BoxName.driverID))}.jpg" }); print('request.body: ${request.body}'); request.headers.addAll(headers); diff --git a/lib/controller/functions/gemeni.dart b/lib/controller/functions/gemeni.dart index 5715239..21a6acc 100755 --- a/lib/controller/functions/gemeni.dart +++ b/lib/controller/functions/gemeni.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'dart:math'; import 'dart:convert'; import 'package:crypto/crypto.dart'; @@ -13,8 +12,6 @@ import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart import 'package:sefer_driver/controller/firebase/firbase_messge.dart'; import 'package:sefer_driver/controller/firebase/local_notification.dart'; import 'package:sefer_driver/controller/functions/crud.dart'; -import 'package:sefer_driver/controller/functions/device_info.dart'; -import 'package:sefer_driver/controller/notification/notification_captain_controller.dart'; import 'package:sefer_driver/main.dart'; import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; import 'package:sefer_driver/views/widgets/error_snakbar.dart'; @@ -397,16 +394,13 @@ class AI extends GetxController { update(); var payload = { - 'first_name': EncryptionHelper.instance.encryptData( - responseNonIdCardFront['full_name'].toString().split(' ')[0]) ?? - 'Not specified', - 'last_name': EncryptionHelper.instance.encryptData( - responseNonIdCardFront['full_name'].toString().split(' ').last) ?? - 'Not specified', - 'email': EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver)) - ?.toString() ?? - 'Not specified', + 'first_name': + (responseNonIdCardFront['full_name'].toString().split(' ')[0]) ?? + 'Not specified', + 'last_name': + (responseNonIdCardFront['full_name'].toString().split(' ').last) ?? + 'Not specified', + 'email': (box.read(BoxName.emailDriver))?.toString() ?? 'Not specified', 'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified', 'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified', 'password': @@ -416,16 +410,13 @@ class AI extends GetxController { .passwordController .text .toString(), - 'gender': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['gender'].toString()) ?? - 'Not specified', + 'gender': + (responseNonIdCardFront['gender'].toString()) ?? 'Not specified', 'license_type': 'Foreign', - 'national_number': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['passport_no'].toString()) ?? - 'Not specified', - 'name_arabic': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['full_name'].toString()) ?? - 'Not specified', + 'national_number': + (responseNonIdCardFront['passport_no'].toString()) ?? 'Not specified', + 'name_arabic': + (responseNonIdCardFront['full_name'].toString()) ?? 'Not specified', 'name_english': 'Not specified', 'issue_date': responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', @@ -437,31 +428,23 @@ class AI extends GetxController { ? responseIdEgyptDriverLicense['license_categories'].join(', ') : responseIdEgyptDriverLicense['license_categories']?.toString() ?? 'Not specified', - 'address': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['address'].toString()) ?? - 'Not specified', - 'card_id': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['card_id'].toString()) ?? - 'Not specified', - 'occupation': EncryptionHelper.instance - .encryptData(responseNonIdCardBack['workStatus'].toString()) ?? - 'Not specified', + 'address': + (responseNonIdCardFront['address'].toString()) ?? 'Not specified', + 'card_id': + (responseNonIdCardFront['card_id'].toString()) ?? 'Not specified', + 'occupation': + (responseNonIdCardBack['workStatus'].toString()) ?? 'Not specified', 'education': 'Not specified', 'licenseIssueDate': responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', - 'religion': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['country'].toString()) ?? - 'Not specified', + 'religion': + (responseNonIdCardFront['country'].toString()) ?? 'Not specified', 'status': 'yet', - 'birthdate': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['birthdate'].toString()) ?? - 'Not specified', + 'birthdate': + (responseNonIdCardFront['birthdate'].toString()) ?? 'Not specified', 'maritalStatus': 'Not specified', - 'site': EncryptionHelper.instance - .encryptData(responseNonIdCardFront['address'].toString()) ?? - 'Not specified', - 'employmentType': EncryptionHelper.instance - .encryptData(responseNonIdCardBack['residencyType'].toString()) ?? + 'site': (responseNonIdCardFront['address'].toString()) ?? 'Not specified', + 'employmentType': (responseNonIdCardBack['residencyType'].toString()) ?? 'Not specified', }; @@ -517,32 +500,22 @@ class AI extends GetxController { String hashedPassword = shortHash(pass); var payload = { - 'first_name': EncryptionHelper.instance.encryptData( - responseIdEgyptDriverLicense['firstName'].toString()) ?? + 'first_name': (responseIdEgyptDriverLicense['firstName'].toString()) ?? 'Not specified', - 'last_name': EncryptionHelper.instance.encryptData( - responseIdEgyptDriverLicense['lastName'].toString()) ?? - 'Not specified', - 'email': EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver)) - .toString() ?? + 'last_name': (responseIdEgyptDriverLicense['lastName'].toString()) ?? 'Not specified', + 'email': (box.read(BoxName.emailDriver)).toString() ?? 'Not specified', 'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified', 'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified', 'password': hashedPassword.toString(), - 'gender': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['gender'].toString()) ?? - 'Not specified', - 'license_type': EncryptionHelper.instance.encryptData( - responseIdEgyptDriverLicense['license_type'].toString()) ?? - 'Not specified', - 'national_number': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['nationalID'].toString()) ?? - 'Not specified', - 'name_arabic': EncryptionHelper.instance - .encryptData(responseIdEgyptDriverLicense['name_arabic'].toString()), - 'name_english': EncryptionHelper.instance - .encryptData(responseIdEgyptDriverLicense['name_english'].toString()), + 'gender': (responseIdEgyptBack['gender'].toString()) ?? 'Not specified', + 'license_type': + (responseIdEgyptDriverLicense['license_type'].toString()) ?? + 'Not specified', + 'national_number': + (responseIdEgyptBack['nationalID'].toString()) ?? 'Not specified', + 'name_arabic': (responseIdEgyptDriverLicense['name_arabic'].toString()), + 'name_english': (responseIdEgyptDriverLicense['name_english'].toString()), 'issue_date': responseIdEgyptDriverLicense['issue_date']?.toString() ?? 'Not specified', 'expiry_date': responseIdEgyptDriverLicense['expiry_date']?.toString() ?? @@ -552,36 +525,29 @@ class AI extends GetxController { ? responseIdEgyptDriverLicense['license_categories'].join(', ') : responseIdEgyptDriverLicense['license_categories']?.toString() ?? 'Not specified', - 'address': EncryptionHelper.instance - .encryptData(responseIdEgyptFront['address'].toString()) ?? - 'Not specified', - 'card_id': EncryptionHelper.instance - .encryptData(responseIdEgyptFront['card_id'].toString()) ?? - 'Not specified', - 'occupation': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['occupation'].toString()) ?? - 'Not specified', - 'education': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['occupation'].toString()) ?? - 'Not specified', + 'address': + (responseIdEgyptFront['address'].toString()) ?? 'Not specified', + 'card_id': + (responseIdEgyptFront['card_id'].toString()) ?? 'Not specified', + 'occupation': + (responseIdEgyptBack['occupation'].toString()) ?? 'Not specified', + 'education': + (responseIdEgyptBack['occupation'].toString()) ?? 'Not specified', 'licenseIssueDate': responseIdEgyptDriverLicense['issue_date'].toString() ?? 'Not specified', - 'religion': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['religion'].toString()) ?? - 'Not specified', + 'religion': + (responseIdEgyptBack['religion'].toString()) ?? 'Not specified', 'status': 'yet', - 'birthdate': EncryptionHelper.instance.encryptData(extractDOB( + 'birthdate': (extractDOB( responseIdEgyptDriverLicense['national_number'].toString())), - 'maritalStatus': EncryptionHelper.instance - .encryptData(responseIdEgyptBack['maritalStatus'].toString()) ?? - 'Not specified', - 'site': EncryptionHelper.instance.encryptData( - responseIdEgyptDriverLicense['address'].toString()) ?? - 'Not specified', - 'employmentType': EncryptionHelper.instance.encryptData( - responseIdEgyptDriverLicense['employmentType'].toString()) ?? + 'maritalStatus': + (responseIdEgyptBack['maritalStatus'].toString()) ?? 'Not specified', + 'site': (responseIdEgyptDriverLicense['address'].toString()) ?? 'Not specified', + 'employmentType': + (responseIdEgyptDriverLicense['employmentType'].toString()) ?? + 'Not specified', }; try { @@ -624,8 +590,7 @@ class AI extends GetxController { var res = await CRUD().post(link: AppLink.addCriminalDocuments, payload: { "driverId": box.read(BoxName.driverID), "IssueDate": responseCriminalRecordEgypt['IssueDate'], - "InspectionResult": EncryptionHelper.instance - .encryptData(responseCriminalRecordEgypt['InspectionResult']), + "InspectionResult": (responseCriminalRecordEgypt['InspectionResult']), }); if (res != 'failure') { mySnackbarSuccess('uploaded sucssefuly'.tr); @@ -639,19 +604,16 @@ class AI extends GetxController { var res = await CRUD().post(link: AppLink.addRegisrationCar, payload: { 'driverID': box.read(BoxName.driverID), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), - 'car_plate': EncryptionHelper.instance.encryptData( - responseIdCardDriverEgyptFront['car_plate'].toString()), + 'car_plate': (responseIdCardDriverEgyptFront['car_plate'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()), 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), 'expiration_date': responseIdCardDriverEgyptFront['LicenseExpirationDate'].toString(), 'color': responseIdCardDriverEgyptBack['color'], - 'owner': EncryptionHelper.instance - .encryptData(responseIdCardDriverEgyptFront['owner']), + 'owner': (responseIdCardDriverEgyptFront['owner']), 'color_hex': responseIdCardDriverEgyptBack['color_hex'].toString(), - 'address': EncryptionHelper.instance - .encryptData(responseIdCardDriverEgyptFront['address'].toString()), + 'address': (responseIdCardDriverEgyptFront['address'].toString()), 'displacement': responseIdCardDriverEgyptBack['engine'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), 'registration_date': @@ -669,8 +631,8 @@ class AI extends GetxController { payload: { 'driverID': box.read(BoxName.driverID), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), - 'car_plate': EncryptionHelper.instance.encryptData( - responseIdCardDriverEgyptFront['car_plate'].toString()), + 'car_plate': + (responseIdCardDriverEgyptFront['car_plate'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()), 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), @@ -678,12 +640,10 @@ class AI extends GetxController { responseIdCardDriverEgyptFront['LicenseExpirationDate'] .toString(), 'color': responseIdCardDriverEgyptBack['color'], - 'owner': EncryptionHelper.instance - .encryptData(responseIdCardDriverEgyptFront['owner']), + 'owner': (responseIdCardDriverEgyptFront['owner']), 'color_hex': responseIdCardDriverEgyptBack['color_hex'].toString(), - 'address': EncryptionHelper.instance.encryptData( - responseIdCardDriverEgyptFront['address'].toString()), + 'address': (responseIdCardDriverEgyptFront['address'].toString()), 'displacement': responseIdCardDriverEgyptBack['engine'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), @@ -695,8 +655,8 @@ class AI extends GetxController { payload: { 'driverID': box.read(BoxName.driverID), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(), - 'car_plate': EncryptionHelper.instance.encryptData( - responseIdCardDriverEgyptFront['car_plate'].toString()), + 'car_plate': + (responseIdCardDriverEgyptFront['car_plate'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()), 'model': (responseIdCardDriverEgyptBack['model']), 'year': responseIdCardDriverEgyptBack['year'].toString(), @@ -704,12 +664,10 @@ class AI extends GetxController { responseIdCardDriverEgyptFront['LicenseExpirationDate'] .toString(), 'color': responseIdCardDriverEgyptBack['color'], - 'owner': EncryptionHelper.instance - .encryptData(responseIdCardDriverEgyptFront['owner']), + 'owner': (responseIdCardDriverEgyptFront['owner']), 'color_hex': responseIdCardDriverEgyptBack['color_hex'].toString(), - 'address': EncryptionHelper.instance.encryptData( - responseIdCardDriverEgyptFront['address'].toString()), + 'address': (responseIdCardDriverEgyptFront['address'].toString()), 'displacement': responseIdCardDriverEgyptBack['engine'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), diff --git a/lib/controller/functions/location_controller.dart b/lib/controller/functions/location_controller.dart index c4e45db..5179fb3 100755 --- a/lib/controller/functions/location_controller.dart +++ b/lib/controller/functions/location_controller.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:math'; import 'package:get/get.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -7,7 +8,6 @@ import 'package:location/location.dart'; import '../../constant/box_name.dart'; import '../../constant/links.dart'; import '../../main.dart'; -import '../../print.dart'; import '../home/captin/home_captain_controller.dart'; import '../home/payment/captain_wallet_controller.dart'; import 'crud.dart'; @@ -18,64 +18,37 @@ class LocationController extends GetxController { late Location location = Location(); bool isLoading = false; late double heading = 0; - late double accuracy = 0; late double previousTime = 0; late double latitude; late double totalDistance = 0; late double longitude; late DateTime time; late double speed = 0; - late double speedAccuracy = 0; - late double headingAccuracy = 0; bool isActive = false; - late LatLng myLocation = LatLng(0, 0); // Default value + late LatLng myLocation = LatLng(0, 0); String totalPoints = '0'; LocationData? get currentLocation => _currentLocation; Timer? _locationTimer; + LatLng? _lastSavedPosition; + @override void onInit() async { super.onInit(); - location = Location(); // Initialize the location object + location = Location(); await location.changeSettings( - accuracy: LocationAccuracy.high, - interval: 5000, // 5 seconds - distanceFilter: 0); - await getLocation(); // Fetch the location immediately - await startLocationUpdates(); // Start periodic location updates + accuracy: LocationAccuracy.high, interval: 5000, distanceFilter: 0); + await getLocation(); + await startLocationUpdates(); totalPoints = Get.put(CaptainWalletController()).totalPoints.toString(); isActive = Get.put(HomeCaptainController()).isActive; } - // String getLocationArea(double latitude, double longitude) { - // if (latitude >= 29.918901 && - // latitude <= 30.198857 && - // longitude >= 31.215009 && - // longitude <= 31.532186) { - // return 'Cairo'; - // } else if (latitude >= 29.904975 && - // latitude <= 30.143372 && - // longitude >= 30.787030 && - // longitude <= 31.215009) { - // return 'Giza'; - // } else if (latitude >= 30.396286 && - // latitude <= 31.654458 && - // longitude >= 29.041139 && - // longitude <= 32.626259) { - // return 'Alexandria'; - // } else { - // return 'Cairo'; - // } - // } String getLocationArea(double latitude, double longitude) { final locations = box.read(BoxName.locationName) ?? []; for (final location in locations) { final locationData = location as Map; - - // Debugging: Print location data - - // Convert string values to double final minLatitude = double.tryParse(locationData['min_latitude'].toString()) ?? 0.0; final maxLatitude = @@ -85,21 +58,15 @@ class LocationController extends GetxController { final maxLongitude = double.tryParse(locationData['max_longitude'].toString()) ?? 0.0; - // Debugging: Print converted values - // 'Converted Values: minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude'); - if (latitude >= minLatitude && latitude <= maxLatitude && longitude >= minLongitude && longitude <= maxLongitude) { - box.write(BoxName.serverChosen, - EncryptionHelper.instance.decryptData(locationData['server_link'])); - // 'locationData----server_link: ${locationData['server_link']}'); + box.write(BoxName.serverChosen, (locationData['server_link'])); return locationData['name']; } } - // Default case box.write(BoxName.serverChosen, AppLink.seferCairoServer); return 'Cairo'; } @@ -108,10 +75,6 @@ class LocationController extends GetxController { Future startLocationUpdates() async { if (box.read(BoxName.driverID) != null) { - if (location == null) { - location = Location(); // Ensure location is initialized - } - _locationTimer = Timer.periodic(const Duration(seconds: 5), (timer) async { try { @@ -121,7 +84,7 @@ class LocationController extends GetxController { if (isActive && double.parse(totalPoints) > -300) { await getLocation(); - if (myLocation == null) return; + if (myLocation.latitude == 0 && myLocation.longitude == 0) return; String area = getLocationArea(myLocation.latitude, myLocation.longitude); @@ -132,22 +95,35 @@ class LocationController extends GetxController { 'longitude': myLocation.longitude.toString(), 'heading': heading.toString(), 'speed': (speed * 3.6).toStringAsFixed(1), - 'distance': totalDistance == 0 && (speed * 3.6) < 5 - ? '0.0' - : totalDistance < 7 - ? totalDistance.toStringAsFixed(3) - : totalDistance.toStringAsFixed(1), + 'distance': totalDistance.toStringAsFixed(2), 'status': box.read(BoxName.statusDriverLocation) ?? 'off', }; - // 🔁 كل 5 ثواني - تحديث الموقع + // ✅ تحديث للسيرفر await CRUD().post( link: box.read(BoxName.serverChosen) + '/ride/location/update.php', payload: payload, ); - // 📍 كل 60 ثانية - إدخال جديد + // ✅ تخزين في SQLite فقط إذا الرحلة On + تحرك أكثر من 10 متر + if ((box.read(BoxName.statusDriverLocation) ?? 'off') == 'on') { + if (_lastSavedPosition == null || + _calculateDistanceInMeters(_lastSavedPosition!, myLocation) >= + 10) { + await sql.insertData({ + 'driver_id': box.read(BoxName.driverID).toString(), + 'latitude': myLocation.latitude, + 'longitude': myLocation.longitude, + 'created_at': DateTime.now().toIso8601String(), + 'updated_at': DateTime.now().toIso8601String(), + }, 'car_locations'); + + _lastSavedPosition = myLocation; + } + } + + // ✅ إدخال للسيرفر كل دقيقة _insertCounter++; if (_insertCounter >= 12) { _insertCounter = 0; @@ -157,14 +133,14 @@ class LocationController extends GetxController { ); } - // 🔄 تحديث الكاميرا + // ✅ تحديث الكاميرا Get.find() .mapHomeCaptainController ?.animateCamera( CameraUpdate.newLatLng( LatLng( - Get.find().myLocation.latitude, - Get.find().myLocation.longitude, + myLocation.latitude, + myLocation.longitude, ), ), ); @@ -181,30 +157,18 @@ class LocationController extends GetxController { } Future getLocation() async { - if (location == null) { - location = Location(); // تأكد من أن `Location` مهيأ - } - - bool serviceEnabled; - PermissionStatus permissionGranted; - - serviceEnabled = await location.serviceEnabled(); + bool serviceEnabled = await location.serviceEnabled(); if (!serviceEnabled) { serviceEnabled = await location.requestService(); - if (!serviceEnabled) { - return; - } + if (!serviceEnabled) return; } - permissionGranted = await location.hasPermission(); + PermissionStatus permissionGranted = await location.hasPermission(); if (permissionGranted == PermissionStatus.denied) { permissionGranted = await location.requestPermission(); - if (permissionGranted != PermissionStatus.granted) { - return; - } + if (permissionGranted != PermissionStatus.granted) return; } - /// **تجنب استدعاء `getLocation()` مباشرة على الـ Main Thread** Future.delayed(Duration(milliseconds: 500), () async { try { LocationData _locationData = await location.getLocation(); @@ -212,80 +176,27 @@ class LocationController extends GetxController { myLocation = LatLng(_locationData.latitude!, _locationData.longitude!); } else { - myLocation = LatLng(0, 0); // Default value + myLocation = LatLng(0, 0); } speed = _locationData.speed ?? 0; heading = _locationData.heading ?? 0; - if (Get.find().rideId == 'rideId') { - if (previousTime > 0) { - double distance = calculateDistanceInKmPerHour( - previousTime, _locationData.time, speed); - totalDistance += distance; - } - previousTime = _locationData.time ?? 0; - } - update(); } catch (e) { print("Error getting location: $e"); } }); } - // Future getLocation() async { - // if (location == null) { - // location = Location(); // Ensure location is initialized - // } - // bool serviceEnabled; - // PermissionStatus permissionGranted; - - // serviceEnabled = await location.serviceEnabled(); - // if (!serviceEnabled) { - // serviceEnabled = await location.requestService(); - // if (!serviceEnabled) { - // return; - // } - // } - - // permissionGranted = await location.hasPermission(); - // if (permissionGranted == PermissionStatus.denied) { - // permissionGranted = await location.requestPermission(); - // if (permissionGranted != PermissionStatus.granted) { - // return; - // } - // } - - // LocationData _locationData = await location.getLocation(); - // if (_locationData.latitude != null && _locationData.longitude != null) { - // myLocation = LatLng(_locationData.latitude!, _locationData.longitude!); - // } else { - // myLocation = LatLng(0, 0); // Default value - // } - - // speed = _locationData.speed ?? 0; - // heading = _locationData.heading ?? 0; - - // if (Get.find().rideId == 'rideId') { - // if (previousTime > 0) { - // double distance = calculateDistanceInKmPerHour( - // previousTime, _locationData.time, speed); - // totalDistance += distance; - // } - // previousTime = _locationData.time ?? 0; - // } - - // update(); - // } - - double calculateDistanceInKmPerHour( - double? startTime, double? endTime, double speedInMetersPerSecond) { - double timeDifferenceInHours = - (endTime ?? 0 - startTime! ?? 0) / 1000 / 3600; - double speedInKmPerHour = speedInMetersPerSecond * 3.6; - double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours; - double distanceInMeters = distanceInKilometers * 1000; - return distanceInMeters < 5 ? 0 : distanceInKilometers; + double _calculateDistanceInMeters(LatLng start, LatLng end) { + const p = 0.017453292519943295; + final a = 0.5 - + cos((end.latitude - start.latitude) * p) / 2 + + cos(start.latitude * p) * + cos(end.latitude * p) * + (1 - cos((end.longitude - start.longitude) * p)) / + 2; + return 12742 * 1000 * asin(sqrt(a)); // meters } } diff --git a/lib/controller/functions/log_out.dart b/lib/controller/functions/log_out.dart index 661a8f6..ca286a2 100755 --- a/lib/controller/functions/log_out.dart +++ b/lib/controller/functions/log_out.dart @@ -75,9 +75,7 @@ class LogOutController extends GetxController { confirm: MyElevatedButton( title: 'Delete'.tr, onPressed: () async { - if (checkTxtController.text == - EncryptionHelper.instance - .decryptData(box.read(BoxName.nameDriver))) { + if (checkTxtController.text == (box.read(BoxName.nameDriver))) { // deletecaptainAccount(); var id = await checkBeforeDelete(); diff --git a/lib/controller/functions/package_info.dart b/lib/controller/functions/package_info.dart index 6b70bd1..8595e69 100755 --- a/lib/controller/functions/package_info.dart +++ b/lib/controller/functions/package_info.dart @@ -197,8 +197,8 @@ class DeviceHelper { // Generate and return the encrypted fingerprint final String fingerprint = '${deviceId}_${deviceModel}_$osVersion'; - print(EncryptionHelper.instance.encryptData(fingerprint)); - return EncryptionHelper.instance.encryptData(fingerprint); + // print(EncryptionHelper.instance.encryptData(fingerprint)); + return (fingerprint); } catch (e) { throw Exception('Failed to generate device fingerprint'); } @@ -247,15 +247,15 @@ class SecurityHelper { await box.write('isTampered', isTampered); // Use await await box.write('isJailBroken', isJailBroken); // Use await - // debugPrint("Security Check Results:"); - // debugPrint("isNotTrust: $isNotTrust"); - // debugPrint("isJailBroken: $isJailBroken"); - // debugPrint("isRealDevice: $isRealDevice"); - // debugPrint("isOnExternalStorage: $isOnExternalStorage"); - // debugPrint("checkForIssues: $checkForIssues"); - // debugPrint("isDevMode: $isDevMode"); - // debugPrint("isTampered: $isTampered"); - // debugPrint("Bundle ID: $bundleId"); // Print the bundle ID + debugPrint("Security Check Results:"); + debugPrint("isNotTrust: $isNotTrust"); + debugPrint("isJailBroken: $isJailBroken"); + debugPrint("isRealDevice: $isRealDevice"); + debugPrint("isOnExternalStorage: $isOnExternalStorage"); + debugPrint("checkForIssues: $checkForIssues"); + debugPrint("isDevMode: $isDevMode"); + debugPrint("isTampered: $isTampered"); + debugPrint("Bundle ID: $bundleId"); // Print the bundle ID // Check for security risks and potentially show a warning if (isJailBroken || isRealDevice == false || isTampered) { diff --git a/lib/controller/functions/secure_storage.dart b/lib/controller/functions/secure_storage.dart index 4bdaad1..9dd3b5c 100755 --- a/lib/controller/functions/secure_storage.dart +++ b/lib/controller/functions/secure_storage.dart @@ -40,6 +40,7 @@ class AppInitializer { Future initializeApp() async { if (box.read(BoxName.jwt) == null) { + Log.print('box.read(BoxName.jwt): ${box.read(BoxName.jwt)}'); await LoginDriverController().getJWT(); } else { bool isTokenExpired = JwtDecoder.isExpired(X @@ -74,16 +75,11 @@ class AppInitializer { links = List>.from(jsonDecode(res)['message']); await box.write(BoxName.locationName, links); - await box.write(BoxName.basicLink, - EncryptionHelper.instance.decryptData(links[0]['server_link'])); - await box.write(links[2]['name'], - EncryptionHelper.instance.decryptData(links[2]['server_link'])); - await box.write(links[1]['name'], - EncryptionHelper.instance.decryptData(links[3]['server_link'])); - await box.write(links[3]['name'], - EncryptionHelper.instance.decryptData(links[1]['server_link'])); - await box.write(BoxName.paymentLink, - EncryptionHelper.instance.decryptData(links[4]['server_link'])); + await box.write(BoxName.basicLink, (links[0]['server_link'])); + await box.write(links[2]['name'], (links[2]['server_link'])); + await box.write(links[1]['name'], (links[3]['server_link'])); + await box.write(links[3]['name'], (links[1]['server_link'])); + await box.write(BoxName.paymentLink, (links[4]['server_link'])); } } catch (e) {} } diff --git a/lib/controller/functions/sms_egypt_controller.dart b/lib/controller/functions/sms_egypt_controller.dart index f542698..b85c30e 100755 --- a/lib/controller/functions/sms_egypt_controller.dart +++ b/lib/controller/functions/sms_egypt_controller.dart @@ -27,16 +27,9 @@ class SmsEgyptController extends GetxController { } } - Future sendSmsEgypt(String phone, otp) async { + Future sendSmsEgypt(String phone) async { String sender = await getSender(); - var body = jsonEncode({ - "username": 'Sefer', - "password": AK.smsPasswordEgypt, - "message": "${AppInformation.appName} app code is $otp\ncopy it to app", - "language": box.read(BoxName.lang) == 'en' ? "e" : 'r', - "sender": sender, //"Sefer Egy", // todo add sefer sender name - "receiver": "2$phone" - }); + var body = jsonEncode({"receiver": "2$phone"}); var res = await http.post( Uri.parse(AppLink.sendSms), @@ -46,19 +39,16 @@ class SmsEgyptController extends GetxController { if (jsonDecode(res.body)['message'].toString() != "Success") { await CRUD().post(link: AppLink.updatePhoneInvalidSMS, payload: { - "phone_number": EncryptionHelper.instance.encryptData( - '+2${Get.find().phoneController.text}') + "phone_number": + ('+2${Get.find().phoneController.text}') }); - box.write( - BoxName.phoneDriver, - EncryptionHelper.instance.encryptData( - '+2${Get.find().phoneController.text}')); + box.write(BoxName.phoneDriver, + ('+2${Get.find().phoneController.text}')); box.write(BoxName.phoneVerified, '1'); await Get.put(LoginDriverController()).loginWithGoogleCredential( box.read(BoxName.driverID).toString(), - EncryptionHelper.instance - .encryptData(box.read(BoxName.emailDriver).toString()), + (box.read(BoxName.emailDriver).toString()), ); } else { Get.defaultDialog( diff --git a/lib/controller/functions/upload_image.dart b/lib/controller/functions/upload_image.dart index d0dce77..35b13e5 100755 --- a/lib/controller/functions/upload_image.dart +++ b/lib/controller/functions/upload_image.dart @@ -419,10 +419,8 @@ class ImageController extends GetxController { await uploadImage( compressedImage, { - 'driverID': EncryptionHelper.instance - .decryptData(box.read(BoxName.driverID)) ?? - EncryptionHelper.instance - .decryptData(box.read(BoxName.passengerID)), + 'driverID': + (box.read(BoxName.driverID)) ?? (box.read(BoxName.passengerID)), 'imageType': imageType }, link, @@ -461,8 +459,7 @@ class ImageController extends GetxController { 'image', stream, length, - filename: - '${EncryptionHelper.instance.decryptData(box.read(BoxName.driverID))}.jpg', + filename: '${(box.read(BoxName.driverID))}.jpg', ), ); data.forEach((key, value) { diff --git a/lib/controller/home/captin/behavior_controller.dart b/lib/controller/home/captin/behavior_controller.dart new file mode 100644 index 0000000..1dc9de0 --- /dev/null +++ b/lib/controller/home/captin/behavior_controller.dart @@ -0,0 +1,115 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:get/get.dart'; +import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/constant/links.dart'; +import 'package:sefer_driver/controller/functions/crud.dart'; + +import '../../../constant/table_names.dart'; +import '../../../main.dart'; + +class DriverBehaviorController extends GetxController { + Future>> getAllData() async { + return await sql.getAllData(TableName.behavior); + } + + var isLoading = false.obs; + var overallScore = 100.0.obs; + var lastTrips = [].obs; + + Future fetchDriverBehavior() async { + isLoading.value = true; + try { + final response = await CRUD().get( + link: AppLink.get_driver_behavior, + payload: {"driver_id": box.read(BoxName.driverID).toString()}, + ); + + if (response != 'failure') { + final json = jsonDecode(response.body); + + overallScore.value = + double.parse(json['data']['overall_behavior_score'].toString()); + lastTrips.value = json['data']['last_10_trips']; + } else { + // Get.snackbar("Error", json['message'] ?? "Unknown error"); + } + } catch (e) { + Get.snackbar("Error", "Exception: $e"); + } finally { + isLoading.value = false; + } + } + + Future> analyzeData() async { + final data = await getAllData(); + if (data.isEmpty) return {}; + + double maxSpeed = 0; + double totalSpeed = 0; + int hardBrakes = 0; + double totalDistance = 0; + double? prevLat, prevLng; + + for (var item in data) { + double speed = item['speed'] ?? 0; + double lat = item['lat'] ?? 0; + double lng = item['lng'] ?? 0; + double acc = item['acceleration'] ?? 0; + + if (speed > maxSpeed) maxSpeed = speed; + totalSpeed += speed; + + // ✅ Hard brake threshold + if (acc.abs() > 3.0) hardBrakes++; + + // ✅ Distance between points + if (prevLat != null && prevLng != null) { + totalDistance += _calculateDistance(prevLat, prevLng, lat, lng); + } + prevLat = lat; + prevLng = lng; + } + + double avgSpeed = totalSpeed / data.length; + double behaviorScore = 100 - (hardBrakes * 5) - ((maxSpeed > 100) ? 10 : 0); + behaviorScore = behaviorScore.clamp(0, 100); + + return { + 'max_speed': maxSpeed, + 'avg_speed': avgSpeed, + 'hard_brakes': hardBrakes, + 'total_distance': totalDistance, + 'behavior_score': behaviorScore, + }; + } + + Future sendSummaryToServer(String driverId, String tripId) async { + final summary = await analyzeData(); + if (summary.isEmpty) return; + + final body = { + 'driver_id': driverId, + 'trip_id': tripId, + ...summary, + }; + + CRUD().post(link: AppLink.saveBehavior, payload: (body)); + + await clearData(); + } + + Future clearData() async { + await sql.deleteAllData(TableName.behavior); + } + + double _calculateDistance( + double lat1, double lon1, double lat2, double lon2) { + const p = 0.017453292519943295; + final a = 0.5 - + cos((lat2 - lat1) * p) / 2 + + cos(lat1 * p) * cos(lat2 * p) * (1 - cos((lon2 - lon1) * p)) / 2; + return 12742 * asin(sqrt(a)); // distance in km + } +} diff --git a/lib/controller/home/captin/help/help_controller.dart b/lib/controller/home/captin/help/help_controller.dart index becc771..9359afd 100755 --- a/lib/controller/home/captin/help/help_controller.dart +++ b/lib/controller/home/captin/help/help_controller.dart @@ -31,8 +31,7 @@ class HelpController extends GetxController { update(); var res = await CRUD().post(link: AppLink.addhelpCenter, payload: { 'driverID': box.read(BoxName.driverID).toString(), - 'helpQuestion': - EncryptionHelper.instance.encryptData(helpQuestionController.text) + 'helpQuestion': (helpQuestionController.text) }); var d = jsonDecode(res); isLoading = false; diff --git a/lib/controller/home/captin/home_captain_controller.dart b/lib/controller/home/captin/home_captain_controller.dart index afd0b36..33f311e 100755 --- a/lib/controller/home/captin/home_captain_controller.dart +++ b/lib/controller/home/captin/home_captain_controller.dart @@ -198,9 +198,7 @@ class HomeCaptainController extends GetxController { controller.animateCamera( CameraUpdate.newLatLng(Get.find().myLocation), ); - } else { - print("Controller is null, cannot proceed."); - } + } else {} } void savePeriod(Duration period) { @@ -299,7 +297,6 @@ class HomeCaptainController extends GetxController { // List> results = // await sql.getCustomQuery(customQuery); // countRefuse = results[0]['count'].toString(); - // print(countRefuse); // update(); // if (int.parse(countRefuse) > 3) { // box.write(BoxName.statusDriverLocation, 'on'); @@ -324,34 +321,34 @@ class HomeCaptainController extends GetxController { addToken() async { String? fingerPrint = await storage.read(key: BoxName.fingerPrint); - await CRUD().post(link: AppLink.addTokensDriver, payload: { + CRUD().post(link: AppLink.addTokensDriver, payload: { 'token': (box.read(BoxName.tokenDriver)), 'captain_id': (box.read(BoxName.driverID)).toString(), 'fingerPrint': (fingerPrint).toString() }); - await CRUD().post( - link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", - payload: { - 'token': box.read(BoxName.tokenDriver), - 'captain_id': box.read(BoxName.driverID).toString(), - 'fingerPrint': (fingerPrint).toString() - }); - await CRUD().post( - link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", - payload: { - 'token': box.read(BoxName.tokenDriver), - 'captain_id': box.read(BoxName.driverID).toString(), - 'fingerPrint': (fingerPrint).toString() - }); - await CRUD().post( + // CRUD().post( + // link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", + // payload: { + // 'token': box.read(BoxName.tokenDriver), + // 'captain_id': box.read(BoxName.driverID).toString(), + // 'fingerPrint': (fingerPrint).toString() + // }); + // CRUD().post( + // link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", + // payload: { + // 'token': box.read(BoxName.tokenDriver), + // 'captain_id': box.read(BoxName.driverID).toString(), + // 'fingerPrint': (fingerPrint).toString() + // }); + await CRUD().postWallet( link: "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php", payload: { 'token': box.read(BoxName.tokenDriver), 'captain_id': box.read(BoxName.driverID).toString(), 'fingerPrint': (fingerPrint).toString() }); - MapDriverController().driverCallPassenger(); + // MapDriverController().driverCallPassenger(); // box.write(BoxName.statusDriverLocation, 'off'); } diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index 3674274..2a29ad5 100755 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:sefer_driver/controller/home/captin/behavior_controller.dart'; import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart'; import 'package:sefer_driver/views/widgets/mydialoug.dart'; import 'package:bubble_head/bubble.dart'; @@ -183,9 +184,7 @@ class MapDriverController extends GetxController { await CRUD().post( link: "${AppLink.seferCairoServer}/ride/rides/update.php", payload: { - "id": EncryptionHelper.instance - .encryptData(rideId) - .toString(), // Convert to String + "id": (rideId).toString(), // Convert to String "status": 'CancelFromDriverAfterApply' }); CRUD().postFromDialogue( @@ -193,28 +192,22 @@ class MapDriverController extends GetxController { payload: { 'driver_id': box.read(BoxName.driverID).toString(), // box.read(BoxName.driverID).toString(), - 'order_id': - EncryptionHelper.instance.encryptData(rideId).toString(), + 'order_id': (rideId).toString(), 'status': 'CancelFromDriverAfterApply' }); await CRUD().post( link: "${AppLink.seferCairoServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", payload: { - "order_id": - EncryptionHelper.instance.encryptData(rideId).toString(), + "order_id": (rideId).toString(), "driver_id": box.read(BoxName.driverID).toString(), "status": 'reject After Applied', - "notes": EncryptionHelper.instance - .encryptData(cancelTripCotroller.text) - .toString() + "notes": (cancelTripCotroller.text).toString() }); if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD() .post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { - "id": EncryptionHelper.instance - .encryptData(rideId) - .toString(), // Convert to String + "id": (rideId).toString(), // Convert to String "status": 'CancelFromDriverAfterApply' }); CRUD().postFromDialogue( @@ -222,26 +215,22 @@ class MapDriverController extends GetxController { payload: { 'driver_id': box.read(BoxName.driverID).toString(), // box.read(BoxName.driverID).toString(), - 'order_id': - EncryptionHelper.instance.encryptData(rideId).toString(), + 'order_id': (rideId).toString(), 'status': 'CancelFromDriverAfterApply' }); CRUD().post( link: "${AppLink.endPoint}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", payload: { - "order_id": - EncryptionHelper.instance.encryptData(rideId).toString(), + "order_id": (rideId).toString(), "driver_id": box.read(BoxName.driverID).toString(), "status": 'reject After Applied', - "notes": EncryptionHelper.instance - .encryptData(cancelTripCotroller.text) - .toString() + "notes": (cancelTripCotroller.text).toString() }); } sql.insertData({ - 'order_id': EncryptionHelper.instance.encryptData(rideId), + 'order_id': (rideId), 'created_at': DateTime.now().toString(), 'driver_id': box.read(BoxName.driverID).toString(), }, TableName.driverOrdersRefuse); @@ -312,13 +301,13 @@ class MapDriverController extends GetxController { await CRUD().post( link: "${AppLink.seferCairoServer}/ride/rides/update.php", payload: { - 'id': EncryptionHelper.instance.encryptData(rideId), + 'id': (rideId), 'driverGoToPassengerTime': DateTime.now().toString(), 'status': 'Applied' }); if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { - 'id': EncryptionHelper.instance.encryptData(rideId), + 'id': (rideId), 'driverGoToPassengerTime': DateTime.now().toString(), 'status': 'Applied' }); @@ -533,35 +522,35 @@ class MapDriverController extends GetxController { : (distanceBetweenDriverAndPassengerWhenConfirm * .06) + (5 * .06); //for Eygpt other like jordan .06 per minute await CRUD().post(link: AppLink.updateRides, payload: { - 'id': EncryptionHelper.instance.encryptData(rideId), + 'id': (rideId), 'rideTimeStart': DateTime.now().toString(), 'status': 'CancelAfterWait', }); CRUD().post(link: AppLink.addDriverOrder, payload: { 'driver_id': box.read(BoxName.driverID).toString(), - 'order_id': EncryptionHelper.instance.encryptData(rideId).toString(), + 'order_id': (rideId).toString(), 'status': 'CancelAfterWait' }); if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { - 'id': EncryptionHelper.instance.encryptData(rideId), + 'id': (rideId), 'rideTimeStart': DateTime.now().toString(), 'status': 'CancelAfterWait', }); CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { 'driver_id': box.read(BoxName.driverID).toString(), - 'order_id': EncryptionHelper.instance.encryptData(rideId).toString(), + 'order_id': (rideId).toString(), 'status': 'CancelAfterWait' }); } var paymentTokenWait = await generateTokenDriver(costOfWaiting5Minute.toString()); var res = await CRUD().post(link: AppLink.addDrivePayment, payload: { - 'rideId': EncryptionHelper.instance.encryptData(rideId), + 'rideId': (rideId), 'amount': (costOfWaiting5Minute.toString()), 'payment_method': 'wait-cancel', - 'passengerID': EncryptionHelper.instance.encryptData(passengerId), + 'passengerID': (passengerId), 'token': paymentTokenWait, 'driverID': box.read(BoxName.driverID).toString(), }); @@ -569,7 +558,7 @@ class MapDriverController extends GetxController { await generateTokenDriver(costOfWaiting5Minute.toString()); var res1 = await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { - 'paymentID': 'rideId${EncryptionHelper.instance.encryptData(rideId)}', + 'paymentID': 'rideId${(rideId)}', 'amount': (costOfWaiting5Minute).toStringAsFixed(0), 'paymentMethod': 'wait', 'token': paymentTokenWait1, @@ -585,7 +574,7 @@ class MapDriverController extends GetxController { var paymentTokenWaitPassenger1 = await generateTokenPassenger((costOfWaiting5Minute * -1).toString()); await CRUD().post(link: AppLink.addPassengersWallet, payload: { - 'passenger_id': EncryptionHelper.instance.encryptData(passengerId), + 'passenger_id': (passengerId), 'balance': (costOfWaiting5Minute * -1).toString(), 'token': paymentTokenWaitPassenger1, }); @@ -671,13 +660,13 @@ class MapDriverController extends GetxController { // Prepare data for API calls final nowString = DateTime.now().toString(); final basePayload = { - 'id': EncryptionHelper.instance.encryptData(rideId), + 'id': (rideId), 'rideTimeFinish': nowString, 'status': 'Finished', 'price': totalCost, }; final driverOrderPayload = { - 'order_id': EncryptionHelper.instance.encryptData(rideId.toString()), + 'order_id': (rideId.toString()), 'status': 'Finished' }; @@ -710,7 +699,7 @@ class MapDriverController extends GetxController { paymentToken = await generateTokenPassenger( ((-1) * double.parse(paymentAmount)).toString()); futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: { - 'passenger_id': EncryptionHelper.instance.encryptData(passengerId), + 'passenger_id': (passengerId), 'balance': ((-1) * double.parse(paymentAmount)).toString(), 'token': paymentToken, })); @@ -718,11 +707,11 @@ class MapDriverController extends GetxController { paymentToken = await generateTokenDriver(paymentAmount.toString()); futures.add(CRUD().post(link: AppLink.addDrivePayment, payload: { - 'rideId': EncryptionHelper.instance.encryptData(rideId), + 'rideId': (rideId), 'amount': paymentAmount, 'payment_method': walletChecked == 'true' ? "${paymentMethod}Ride" : paymentMethod, - 'passengerID': EncryptionHelper.instance.encryptData(passengerId), + 'passengerID': (passengerId), 'token': paymentToken, 'driverID': box.read(BoxName.driverID).toString(), })); @@ -731,7 +720,7 @@ class MapDriverController extends GetxController { final paymentToken1 = await generateTokenPassenger( ((-1) * double.parse(passengerWalletBurc)).toString()); futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: { - 'passenger_id': EncryptionHelper.instance.encryptData(passengerId), + 'passenger_id': (passengerId), 'token': paymentToken1, 'balance': ((-1) * double.parse(passengerWalletBurc)).toString() })); @@ -741,7 +730,7 @@ class MapDriverController extends GetxController { final paymentToken2 = await generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); futures.add(CRUD().post(link: AppLink.addDriversWalletPoints, payload: { - 'paymentID': 'rideId${EncryptionHelper.instance.encryptData(rideId)}', + 'paymentID': 'rideId${(rideId)}', 'amount': (pointsSubtraction).toStringAsFixed(0), 'paymentMethod': paymentMethod, 'token': paymentToken2, @@ -750,6 +739,7 @@ class MapDriverController extends GetxController { // Wait for all independent API calls to complete await Future.wait(futures); + Get.put(DriverBehaviorController()).sendSummaryToServer(driverId, rideId); // Send notification (this likely depends on previous steps) FirebaseMessagesController().sendNotificationToDriverMAP( @@ -898,7 +888,7 @@ class MapDriverController extends GetxController { var res = await CRUD().get( link: "${AppLink.endPoint}/ride/driver_order/getOrderCancelStatus.php", payload: { - 'order_id': EncryptionHelper.instance.encryptData(rideId), + 'order_id': (rideId), }); //.then((value) { var response = jsonDecode(res); canelString = response['data']['status']; diff --git a/lib/controller/payment/driver_payment_controller.dart b/lib/controller/payment/driver_payment_controller.dart index 4017093..bbd69f8 100755 --- a/lib/controller/payment/driver_payment_controller.dart +++ b/lib/controller/payment/driver_payment_controller.dart @@ -32,6 +32,7 @@ class DriverWalletHistoryController extends GetxController { )); } archive = jsonDecode(res)['message']; + isLoading = false; update(); } diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart index d9d36f6..fa746c2 100755 --- a/lib/controller/payment/payment_controller.dart +++ b/lib/controller/payment/payment_controller.dart @@ -157,11 +157,9 @@ class PaymentController extends GetxController { paymentIntentClientSecret: clientSecret, merchantDisplayName: AppInformation.appName, billingDetails: BillingDetails( - name: EncryptionHelper.instance - .decryptData(box.read(BoxName.nameDriver)), + name: (box.read(BoxName.nameDriver)), email: (box.read(BoxName.emailDriver)), - phone: EncryptionHelper.instance - .decryptData(box.read(BoxName.phoneDriver)), + phone: (box.read(BoxName.phoneDriver)), address: Address( city: 'city', country: box.read(BoxName.countryCode), //'United States' diff --git a/lib/controller/payment/paymob.dart b/lib/controller/payment/paymob.dart index e94845a..73116bd 100755 --- a/lib/controller/payment/paymob.dart +++ b/lib/controller/payment/paymob.dart @@ -133,13 +133,10 @@ class PaymobManager extends GetxController { "amount_cents": amount, "currency": currency, "billing_data": { - "first_name": - EncryptionHelper.instance.decryptData(box.read(BoxName.nameDriver)), - "last_name": EncryptionHelper.instance - .decryptData(box.read(BoxName.lastNameDriver)), + "first_name": (box.read(BoxName.nameDriver)), + "last_name": (box.read(BoxName.lastNameDriver)), "email": (box.read(BoxName.emailDriver)), - "phone_number": EncryptionHelper.instance - .decryptData(box.read(BoxName.phoneDriver)), + "phone_number": (box.read(BoxName.phoneDriver)), "apartment": "NA", "floor": "NA", "street": "NA", diff --git a/lib/controller/payment/paymob/paymob_response.dart b/lib/controller/payment/paymob/paymob_response.dart index 10e5634..0ce3876 100755 --- a/lib/controller/payment/paymob/paymob_response.dart +++ b/lib/controller/payment/paymob/paymob_response.dart @@ -227,8 +227,7 @@ class PaymobBillingData { "email": (box.read(BoxName.emailDriver)), "first_name": box.read(BoxName.nameDriver), "last_name": box.read(BoxName.nameDriver), - "phone_number": - EncryptionHelper.instance.decryptData(box.read(BoxName.phoneDriver)), + "phone_number": (box.read(BoxName.phoneDriver)), "apartment": apartment ?? "NA", "floor": floor ?? "NA", "building": building ?? "NA", diff --git a/lib/controller/rate/rate_app_controller.dart b/lib/controller/rate/rate_app_controller.dart index 72e9b27..e2658b3 100755 --- a/lib/controller/rate/rate_app_controller.dart +++ b/lib/controller/rate/rate_app_controller.dart @@ -43,9 +43,7 @@ class RatingController extends GetxController { ? box.read(BoxName.nameDriver) : box.read(BoxName.name), "email": (box.read(BoxName.emailDriver)).toString(), - "phone": EncryptionHelper.instance - .decryptData(box.read(BoxName.phoneDriver)) - .toString(), + "phone": (box.read(BoxName.phoneDriver)).toString(), "userId": box.read(BoxName.driverID), "userType": "driver", "rating": rating.toString(), diff --git a/lib/main.dart b/lib/main.dart index abac63a..1146e4f 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -183,7 +183,7 @@ class _MyAppState extends State { String? key = (await storage.read(key: BoxName.payMobApikey)); if (key != null) { - String? apiKey = EncryptionHelper.instance.decryptData(key); + String? apiKey = (key); if (apiKey != null) { PaymobPayment.instance.initialize( // Use .instance diff --git a/lib/models/db_sql.dart b/lib/models/db_sql.dart index b650b2f..ea3462f 100755 --- a/lib/models/db_sql.dart +++ b/lib/models/db_sql.dart @@ -72,6 +72,16 @@ class DbSql { faceDetectTimes INTEGER ) '''); + await db.execute(''' + CREATE TABLE IF NOT EXISTS ${TableName.behavior}( + id INTEGER PRIMARY KEY AUTOINCREMENT, + speed REAL, + lat REAL, + lng REAL, + acceleration REAL, + timestamp TEXT + ) + '''); await db.execute(''' CREATE TABLE IF NOT EXISTS ${TableName.captainNotification}( id INTEGER PRIMARY KEY AUTOINCREMENT, diff --git a/lib/views/auth/captin/ai_page.dart b/lib/views/auth/captin/ai_page.dart index c179db6..df83b5b 100755 --- a/lib/views/auth/captin/ai_page.dart +++ b/lib/views/auth/captin/ai_page.dart @@ -95,17 +95,17 @@ class AiPage extends StatelessWidget { Row( children: [ Text( - '${'Name'.tr} :${EncryptionHelper.instance.decryptData(contentController.responseMap['first_name'])}', + '${'Name'.tr} :${(contentController.responseMap['first_name'])}', style: AppStyle.subtitle, ), Text( - ' ${EncryptionHelper.instance.decryptData(contentController.responseMap['last_name'])}', + ' ${(contentController.responseMap['last_name'])}', style: AppStyle.subtitle, ), ], ), Text( - '${'Name in arabic'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['name_in_arabic'])}', + '${'Name in arabic'.tr}: ${(contentController.responseMap['name_in_arabic'])}', style: AppStyle.title, ), Text( @@ -121,7 +121,7 @@ class AiPage extends StatelessWidget { MainAxisAlignment.spaceBetween, children: [ Text( - '${'National Number'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['id'])}', + '${'National Number'.tr}: ${(contentController.responseMap['id'])}', style: AppStyle.title, ), // Image.memory( @@ -131,7 +131,7 @@ class AiPage extends StatelessWidget { // ), ]), Text( - '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['address'])}', + '${'Address'.tr}: ${(contentController.responseMap['address'])}', style: AppStyle.title, ), Row( 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 b2427e4..d241db7 100755 --- a/lib/views/auth/captin/cards/egypt_card_a_i.dart +++ b/lib/views/auth/captin/cards/egypt_card_a_i.dart @@ -322,8 +322,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[0]['prompt'].toString()), + (ai.prompts[0]['prompt'].toString()), AppLink.uploadEgypt, 'driver_license'); //egypt }, @@ -335,32 +334,30 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'License Type'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['license_type'])}', + '${'License Type'.tr}: ${(ai.responseIdEgyptDriverLicense['license_type'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), Text( - '${'National Number'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['national_number'])}', + '${'National Number'.tr}: ${(ai.responseIdEgyptDriverLicense['national_number'])}', style: AppStyle.title.copyWith( - color: EncryptionHelper.instance.decryptData( - ai.responseIdEgyptDriverLicense[ - 'national_number']) == - EncryptionHelper.instance.decryptData( - ai.responseIdEgyptBack['nationalID']) + color: (ai.responseIdEgyptDriverLicense[ + 'national_number']) == + (ai.responseIdEgyptBack['nationalID']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'Name (Arabic)'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['name_arabic'])}', + '${'Name (Arabic)'.tr}: ${(ai.responseIdEgyptDriverLicense['name_arabic'])}', ), const SizedBox(height: 8.0), Text( - '${'Name (English)'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['name_english'])}', + '${'Name (English)'.tr}: ${(ai.responseIdEgyptDriverLicense['name_english'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['address'])}', + '${'Address'.tr}: ${(ai.responseIdEgyptDriverLicense['address'])}', ), const SizedBox(height: 8.0), Text( @@ -386,11 +383,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[0]['prompt'].toString()), - AppLink.uploadEgypt, - 'driver_license'); //egypt + await ai.allMethodForAI((ai.prompts[0]['prompt'].toString()), + AppLink.uploadEgypt, 'driver_license'); //egypt }, child: Column( children: [ @@ -443,8 +437,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[1]['prompt'].toString()), + (ai.prompts[1]['prompt'].toString()), AppLink.uploadEgypt, 'id_back'); //egypt }, @@ -457,20 +450,18 @@ class EgyptCardAI extends StatelessWidget { const SizedBox(height: 8.0), // Assuming these keys exist in ai.responseIdEgyptFront Text( - '${'National ID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptBack['nationalID'])}', + '${'National ID'.tr}: ${(ai.responseIdEgyptBack['nationalID'])}', style: AppStyle.title.copyWith( - color: EncryptionHelper.instance.decryptData( - ai.responseIdEgyptDriverLicense[ - 'national_number']) == - EncryptionHelper.instance.decryptData( - ai.responseIdEgyptBack['nationalID']) + color: (ai.responseIdEgyptDriverLicense[ + 'national_number']) == + (ai.responseIdEgyptBack['nationalID']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'Occupation'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptBack['occupation'])}', // Assuming 'occupation' exists + '${'Occupation'.tr}: ${(ai.responseIdEgyptBack['occupation'])}', // Assuming 'occupation' exists ), const SizedBox(height: 8.0), Row( @@ -480,7 +471,7 @@ class EgyptCardAI extends StatelessWidget { '${'Issue Date'.tr}: ${ai.responseIdEgyptBack['issueDate']}', // Assuming 'issueDate' exists ), Text( - '${'Gender'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptBack['gender'])}', // Assuming 'gender' exists + '${'Gender'.tr}: ${(ai.responseIdEgyptBack['gender'])}', // Assuming 'gender' exists ), ], ), @@ -516,11 +507,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[1]['prompt'].toString()), - AppLink.uploadEgypt, - 'id_back'); //egypt + await ai.allMethodForAI((ai.prompts[1]['prompt'].toString()), + AppLink.uploadEgypt, 'id_back'); //egypt }, child: Column( children: [ @@ -571,8 +559,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[7]['prompt'].toString()), + (ai.prompts[7]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_back'); }, @@ -584,16 +571,16 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'Country'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['country'])}', + '${'Country'.tr}: ${(ai.responseNonIdCardBack['country'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), Text( - '${'Residency Type'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['residencyType'])}', + '${'Residency Type'.tr}: ${(ai.responseNonIdCardBack['residencyType'])}', ), const SizedBox(height: 8.0), Text( - '${'Work Status'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['workStatus'])}', + '${'Work Status'.tr}: ${(ai.responseNonIdCardBack['workStatus'])}', ), const SizedBox(height: 8.0), Row( @@ -603,7 +590,7 @@ class EgyptCardAI extends StatelessWidget { '${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}', ), Text( - '${'Birth Date'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['birthDate'])}', + '${'Birth Date'.tr}: ${(ai.responseNonIdCardBack['birthDate'])}', ), ], ), @@ -623,11 +610,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[7]['prompt'].toString()), - AppLink.uploadEgypt, - 'non_id_back'); + await ai.allMethodForAI((ai.prompts[7]['prompt'].toString()), + AppLink.uploadEgypt, 'non_id_back'); }, child: Column( children: [ @@ -670,8 +654,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[2]['id_front'].toString()), + (ai.prompts[2]['id_front'].toString()), AppLink.uploadEgypt, 'id_front'); //egypt }, @@ -688,10 +671,10 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'First Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['first_name'])}', + '${'First Name'.tr}: ${(ai.responseIdEgyptFront['first_name'])}', ), Text( - '${'CardID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['card_id'])}', + '${'CardID'.tr}: ${(ai.responseIdEgyptFront['card_id'])}', ), ], ), @@ -700,16 +683,16 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Full Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['full_name'])}', + '${'Full Name'.tr}: ${(ai.responseIdEgyptFront['full_name'])}', ), Text( - '${'DOB'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['dob'])}', + '${'DOB'.tr}: ${(ai.responseIdEgyptFront['dob'])}', ), ], ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['address'])}', + '${'Address'.tr}: ${(ai.responseIdEgyptFront['address'])}', ), const SizedBox(height: 8.0), // Text( @@ -726,11 +709,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[2]['prompt'].toString()), - AppLink.uploadEgypt, - 'id_front'); //egypt + await ai.allMethodForAI((ai.prompts[2]['prompt'].toString()), + AppLink.uploadEgypt, 'id_front'); //egypt }, child: Column( children: [ @@ -773,8 +753,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[6]['prompt'].toString()), + (ai.prompts[6]['prompt'].toString()), AppLink.uploadEgypt, 'non_id_front'); }, @@ -786,7 +765,7 @@ class EgyptCardAI extends StatelessWidget { const Divider(color: AppColor.accentColor), const SizedBox(height: 8.0), Text( - '${'Full Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['full_name'])}', + '${'Full Name'.tr}: ${(ai.responseNonIdCardFront['full_name'])}', style: AppStyle.title, ), const SizedBox(height: 8.0), @@ -794,10 +773,10 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Passport No'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['passport_no'])}', + '${'Passport No'.tr}: ${(ai.responseNonIdCardFront['passport_no'])}', ), Text( - '${'Card ID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['card_id'])}', + '${'Card ID'.tr}: ${(ai.responseNonIdCardFront['card_id'])}', ), ], ), @@ -806,20 +785,20 @@ class EgyptCardAI extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${'Country'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['country'])}', + '${'Country'.tr}: ${(ai.responseNonIdCardFront['country'])}', ), Text( - '${'Gender'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['gender'])}', + '${'Gender'.tr}: ${(ai.responseNonIdCardFront['gender'])}', ), ], ), const SizedBox(height: 8.0), Text( - '${'Birth Date'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['birthdate'])}', + '${'Birth Date'.tr}: ${(ai.responseNonIdCardFront['birthdate'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['address'])}', + '${'Address'.tr}: ${(ai.responseNonIdCardFront['address'])}', ), ], ), @@ -829,11 +808,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[6]['prompt'].toString()), - AppLink.uploadEgypt, - 'non_id_front'); + await ai.allMethodForAI((ai.prompts[6]['prompt'].toString()), + AppLink.uploadEgypt, 'non_id_front'); }, child: Column( children: [ @@ -884,8 +860,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[3]['prompt'].toString()), + (ai.prompts[3]['prompt'].toString()), AppLink.uploadEgypt, 'car_front'); }, @@ -899,15 +874,15 @@ class EgyptCardAI extends StatelessWidget { // Removed Make, Model, etc. as they are not available Text( - '${'Plate Number'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['car_plate'])}', + '${'Plate Number'.tr}: ${(ai.responseIdCardDriverEgyptFront['car_plate'])}', ), const SizedBox(height: 8.0), Text( - '${'Owner Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['owner'])}', + '${'Owner Name'.tr}: ${(ai.responseIdCardDriverEgyptFront['owner'])}', ), const SizedBox(height: 8.0), Text( - '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['address'])}', + '${'Address'.tr}: ${(ai.responseIdCardDriverEgyptFront['address'])}', ), const SizedBox(height: 8.0), Row( @@ -931,11 +906,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[3]['prompt'].toString()), - AppLink.uploadEgypt, - 'car_front'); + ai.allMethodForAI((ai.prompts[3]['prompt'].toString()), + AppLink.uploadEgypt, 'car_front'); }, child: Column( children: [ @@ -1003,8 +975,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[4]['prompt'].toString()), + (ai.prompts[4]['prompt'].toString()), AppLink.uploadEgypt, 'car_back'); }, @@ -1076,11 +1047,8 @@ class EgyptCardAI extends StatelessWidget { return Card( child: InkWell( onTap: () async { - ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[4]['prompt'].toString()), - AppLink.uploadEgypt, - 'car_back'); + ai.allMethodForAI((ai.prompts[4]['prompt'].toString()), + AppLink.uploadEgypt, 'car_back'); }, child: Column( children: [ @@ -1123,8 +1091,7 @@ class EgyptCardAI extends StatelessWidget { IconButton( onPressed: () async { await ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[5]['prompt'].toString()), + (ai.prompts[5]['prompt'].toString()), AppLink.uploadEgypt, 'criminalRecord', ); @@ -1140,19 +1107,16 @@ class EgyptCardAI extends StatelessWidget { '${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'), const SizedBox(height: 8.0), Text( - '${'FullName'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', + '${'FullName'.tr}: ${(ai.responseCriminalRecordEgypt['FullName'])}', style: AppStyle.title.copyWith( - color: EncryptionHelper.instance.decryptData(ai - .responseCriminalRecordEgypt['FullName']) == - EncryptionHelper.instance.decryptData( - ai.responseIdEgyptDriverLicense[ - 'name_arabic']) + color: (ai.responseCriminalRecordEgypt['FullName']) == + (ai.responseIdEgyptDriverLicense['name_arabic']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'NationalID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), + '${'NationalID'.tr}: ${(ai.responseCriminalRecordEgypt['NationalID'])}'), const SizedBox(height: 8.0), Text( '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), @@ -1165,8 +1129,7 @@ class EgyptCardAI extends StatelessWidget { child: InkWell( onTap: () async { await ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[5]['prompt'].toString()), + (ai.prompts[5]['prompt'].toString()), AppLink.uploadEgypt, 'criminalRecord', ); diff --git a/lib/views/auth/captin/cards/sms_signup.dart b/lib/views/auth/captin/cards/sms_signup.dart index 45db0fe..6a5326b 100755 --- a/lib/views/auth/captin/cards/sms_signup.dart +++ b/lib/views/auth/captin/cards/sms_signup.dart @@ -1,6 +1,3 @@ -import 'dart:convert'; - -import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:sefer_driver/constant/colors.dart'; import 'package:sefer_driver/constant/style.dart'; import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; @@ -10,11 +7,7 @@ import 'package:sefer_driver/views/widgets/my_textField.dart'; import 'package:sefer_driver/views/widgets/mycircular.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:sefer_driver/views/widgets/mydialoug.dart'; -import '../../../../controller/functions/crud.dart'; -import '../../../../controller/functions/encrypt_decrypt.dart'; -import '../../../../print.dart'; import '../../../Rate/rate_app_page.dart'; class SmsSignupEgypt extends StatelessWidget { diff --git a/lib/views/auth/captin/criminal_documents_page.dart b/lib/views/auth/captin/criminal_documents_page.dart index 994e8be..1d1df44 100755 --- a/lib/views/auth/captin/criminal_documents_page.dart +++ b/lib/views/auth/captin/criminal_documents_page.dart @@ -36,7 +36,7 @@ class CriminalDocumemtPage extends StatelessWidget { ? MyElevatedButton( title: 'Next'.tr, onPressed: () async { - if (EncryptionHelper.instance.decryptData(controller + if ((controller .responseCriminalRecordEgypt['FullName']) != box.read(BoxName.nameArabic)) //todo get from server { @@ -141,22 +141,19 @@ 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}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['InspectionResult'])}'), + '${'InspectionResult'.tr}: ${(ai.responseCriminalRecordEgypt['InspectionResult'])}'), const SizedBox(height: 8.0), Text( - '${'FullName'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', + '${'FullName'.tr}: ${(ai.responseCriminalRecordEgypt['FullName'])}', style: AppStyle.title.copyWith( - color: EncryptionHelper.instance.decryptData(ai - .responseCriminalRecordEgypt['FullName']) == - EncryptionHelper.instance.decryptData( - ai.responseIdEgyptDriverLicense[ - 'name_arabic']) + color: (ai.responseCriminalRecordEgypt['FullName']) == + (ai.responseIdEgyptDriverLicense['name_arabic']) ? AppColor.greenColor : AppColor.redColor), ), const SizedBox(height: 8.0), Text( - '${'NationalID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), + '${'NationalID'.tr}: ${(ai.responseCriminalRecordEgypt['NationalID'])}'), const SizedBox(height: 8.0), Text( '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), diff --git a/lib/views/auth/captin/invite_driver_screen.dart b/lib/views/auth/captin/invite_driver_screen.dart index b600f9f..a2ee677 100755 --- a/lib/views/auth/captin/invite_driver_screen.dart +++ b/lib/views/auth/captin/invite_driver_screen.dart @@ -390,8 +390,7 @@ class InviteScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - EncryptionHelper.instance.decryptData( - controller.driverInvitationData[index]['invitorName']), + (controller.driverInvitationData[index]['invitorName']), style: const TextStyle( fontSize: 17, fontWeight: FontWeight.w600, @@ -447,8 +446,7 @@ class InviteScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - EncryptionHelper.instance - .decryptData(invitation['passengerName']) + (invitation['passengerName']) .toString(), // Handle null or missing data style: const TextStyle( fontSize: 17, @@ -510,9 +508,7 @@ class InviteScreen extends StatelessWidget { _buildStatItem( context, "Active Users".tr, - EncryptionHelper.instance - .decryptData(controller.driverInvitationDataToPassengers[0] - ['passengerName']) + (controller.driverInvitationDataToPassengers[0]['passengerName']) .toString(), ), ], diff --git a/lib/views/auth/captin/login_captin.dart b/lib/views/auth/captin/login_captin.dart index 7a0878a..b35841a 100755 --- a/lib/views/auth/captin/login_captin.dart +++ b/lib/views/auth/captin/login_captin.dart @@ -336,10 +336,9 @@ class LoginCaptin extends StatelessWidget { box .read(BoxName.driverID) .toString(), - EncryptionHelper.instance - .encryptData(box - .read(BoxName.emailDriver) - .toString()), + (box + .read(BoxName.emailDriver) + .toString()), ); // Navigate to another screen or perform other actions } else {} diff --git a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart index 9f5b009..d6fa0f1 100755 --- a/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart +++ b/lib/views/home/Captin/home_captain/widget/left_menu_map_captain.dart @@ -1,8 +1,10 @@ import 'dart:io'; import 'package:sefer_driver/constant/box_name.dart'; +import 'package:sefer_driver/controller/auth/captin/login_captin_controller.dart'; import 'package:sefer_driver/controller/firebase/local_notification.dart'; import 'package:sefer_driver/main.dart'; +import 'package:sefer_driver/views/auth/captin/cards/sms_signup.dart'; import 'package:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; @@ -50,7 +52,7 @@ GetBuilder leftMainMenuCaptainIcons() { // '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', // ''); NotificationController1().showNotification( - 'Sefer Driver'.tr, + 'Tripz Driver'.tr, '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', 'ding', ''); @@ -93,46 +95,26 @@ GetBuilder leftMainMenuCaptainIcons() { ) : const SizedBox(), // : const SizedBox(), - // AnimatedContainer( - // duration: const Duration(microseconds: 200), - // width: controller.widthMapTypeAndTraffic, - // decoration: BoxDecoration( - // color: AppColor.secondaryColor, - // border: Border.all(color: AppColor.blueColor), - // borderRadius: BorderRadius.circular(15)), - // child: Builder(builder: (context) { - // return IconButton( - // onPressed: () async { - // print("Current working directory: ${Directory.current.path}"); - // print( - // "pubspec.yaml exists here?: ${await File('${Directory.current.path}/pubspec.yaml').exists()}"); - - // try { - // await LingoHunter.extractAndCreateTranslationFiles( - // baseLang: 'en', - // langs: ['ar', 'fr', 'es'], - // // Remove projectDirectory: Let it auto-detect. - // // projectDirectory: '/Users/hamzaaleghwairyeen/development/App/driver_sefer', - // outputDirectory: - // '/Users/hamzaaleghwairyeen/development/App/driver_sefer/assets/lang', - // additionalRegExps: [ - // RegExp(r'translate\("([^\"]+)"\)'), - // ], - // ); - // print( - // "✅ Translation files generated successfully (auto-detected)."); - // } catch (e) { - // print("Error: $e"); - // } - // }, - // icon: const Icon( - // FontAwesome5.grin_tears, - // size: 29, - // color: AppColor.blueColor, - // ), - // ); - // }), - // ), + AnimatedContainer( + duration: const Duration(microseconds: 200), + width: controller.widthMapTypeAndTraffic, + decoration: BoxDecoration( + color: AppColor.secondaryColor, + border: Border.all(color: AppColor.blueColor), + borderRadius: BorderRadius.circular(15)), + child: Builder(builder: (context) { + return IconButton( + onPressed: () async { + print(box.read(BoxName.paymentLink)); + }, + icon: const Icon( + FontAwesome5.grin_tears, + size: 29, + color: AppColor.blueColor, + ), + ); + }), + ), const SizedBox( height: 5, diff --git a/lib/views/home/Captin/orderCaptin/order_speed_request.dart b/lib/views/home/Captin/orderCaptin/order_speed_request.dart index d8b0861..325a924 100755 --- a/lib/views/home/Captin/orderCaptin/order_speed_request.dart +++ b/lib/views/home/Captin/orderCaptin/order_speed_request.dart @@ -327,25 +327,7 @@ class OrderSpeedRequest extends StatelessWidget { 'driver_id': box.read(BoxName.driverID), }); } - - // .then((value) { - // var json = jsonDecode(res); - if (res == "failure") { - Get.defaultDialog( - title: - "This ride is already taken by another driver." - .tr, - middleText: '', - titleStyle: AppStyle.title, - middleTextStyle: AppStyle.title, - confirm: MyElevatedButton( - title: 'Ok'.tr, - onPressed: () { - Get.back(); - Get.back(); - // Get.back(); - })); - } else if (jsonDecode(res)['status'] == "success") { + if (res != "failure") { box.write(BoxName.statusDriverLocation, 'on'); orderRequestController.changeApplied(); List bodyToPassenger = [ @@ -357,33 +339,29 @@ class OrderSpeedRequest extends StatelessWidget { .sendNotificationToPassengerToken( 'Accepted Ride', 'your ride is applied'.tr, - // arguments['DriverList'][9].toString(), orderRequestController .arguments['DriverList'][9] .toString(), - // box.read(BoxName.tokenDriver).toString(), bodyToPassenger, 'start.wav'); - await CRUD().postFromDialogue( + CRUD().postFromDialogue( link: AppLink.addDriverOrder, payload: { 'driver_id': orderRequestController.myList[6] .toString(), - // box.read(BoxName.driverID).toString(), 'order_id': orderRequestController.body.toString(), 'status': 'Apply' }); - await CRUD().postFromDialogue( - link: AppLink.addDriverOrder, - payload: { - 'driver_id': orderRequestController.myList[6] - .toString(), - // box.read(BoxName.driverID).toString(), - 'order_id': orderRequestController.myList[16] - .toString(), - 'status': 'Apply' - }); + // CRUD().postFromDialogue( + // link: AppLink.addDriverOrder, + // payload: { + // 'driver_id': orderRequestController.myList[6] + // .toString(), + // 'order_id': orderRequestController.myList[16] + // .toString(), + // 'status': 'Apply' + // }); if (AppLink.endPoint != AppLink.seferCairoServer) { CRUD().post( @@ -402,9 +380,6 @@ class OrderSpeedRequest extends StatelessWidget { } Get.back(); - - // 'Arguments passed to PassengerLocationMapPage:'); - // 'Payment Method: ${orderRequestController.myList[13] == 'true' ? 'visa' : 'cash'}'); box.write(BoxName.rideArguments, { 'passengerLocation': orderRequestController.myList[0].toString(), @@ -473,6 +448,21 @@ class OrderSpeedRequest extends StatelessWidget { }); Get.to(() => PassengerLocationMapPage(), arguments: box.read(BoxName.rideArguments)); + } else { + Get.defaultDialog( + title: + "This ride is already taken by another driver." + .tr, + middleText: '', + titleStyle: AppStyle.title, + middleTextStyle: AppStyle.title, + confirm: MyElevatedButton( + title: 'Ok'.tr, + onPressed: () { + Get.back(); + Get.back(); + // Get.back(); + })); } // }); // Get.back(); diff --git a/lib/views/home/my_wallet/walet_captain.dart b/lib/views/home/my_wallet/walet_captain.dart index 9f967c0..370346e 100755 --- a/lib/views/home/my_wallet/walet_captain.dart +++ b/lib/views/home/my_wallet/walet_captain.dart @@ -195,7 +195,7 @@ class WalletCaptain extends StatelessWidget { _buildPromoCard( title: 'Morning Promo'.tr, timePromo: 'Morning Promo', - count: int.parse(captainWalletController + count: (captainWalletController .walletDate['message'][0] ['morning_count']), maxCount: 5, @@ -208,7 +208,7 @@ class WalletCaptain extends StatelessWidget { _buildPromoCard( timePromo: 'Afternoon Promo', title: 'Afternoon Promo'.tr, - count: int.parse(captainWalletController + count: (captainWalletController .walletDate['message'][0] ['afternoon_count']), maxCount: 5, diff --git a/lib/views/home/profile/behavior_page.dart b/lib/views/home/profile/behavior_page.dart new file mode 100644 index 0000000..c244f2a --- /dev/null +++ b/lib/views/home/profile/behavior_page.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; + +import '../../../controller/home/captin/behavior_controller.dart'; + +class BehaviorPage extends StatelessWidget { + const BehaviorPage({ + super.key, + }); + + @override + Widget build(BuildContext context) { + final controller = Get.put(DriverBehaviorController()); + controller.fetchDriverBehavior(); + + return Scaffold( + appBar: AppBar( + title: Text('Driver Behavior'.tr), + centerTitle: true, + ), + body: Obx(() { + if (controller.isLoading.value) { + return const Center(child: CircularProgressIndicator()); + } + + return SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12)), + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + children: [ + const Text("Overall Behavior Score", + style: TextStyle( + fontSize: 20, fontWeight: FontWeight.bold)), + const SizedBox(height: 10), + Text( + "${controller.overallScore.value.toStringAsFixed(1)} / 100", + style: const TextStyle( + fontSize: 28, color: Colors.blue)), + ], + ), + ), + ), + const SizedBox(height: 20), + const Text("Last 10 Trips", + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: 10), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: controller.lastTrips.length, + itemBuilder: (context, index) { + var trip = controller.lastTrips[index]; + return Card( + elevation: 3, + child: ListTile( + leading: CircleAvatar( + backgroundColor: Colors.blue, + child: Text("${index + 1}", + style: const TextStyle(color: Colors.white)), + ), + title: Text("Trip ID: ${trip['trip_id']}"), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Behavior Score: ${trip['behavior_score']}"), + Text("Max Speed: ${trip['max_speed']} km/h"), + Text("Hard Brakes: ${trip['hard_brakes']}"), + Text("Distance: ${trip['total_distance']} km"), + ], + ), + ), + ); + }, + ), + ], + ), + ); + }), + ); + } +} diff --git a/lib/views/home/profile/captains_cars.dart b/lib/views/home/profile/captains_cars.dart index 9e82502..ce06550 100755 --- a/lib/views/home/profile/captains_cars.dart +++ b/lib/views/home/profile/captains_cars.dart @@ -74,9 +74,7 @@ class CaptainsCars extends StatelessWidget { padding: const EdgeInsets.symmetric( horizontal: 4), child: Text( - EncryptionHelper.instance - .decryptData( - car['car_plate']), + (car['car_plate']), style: AppStyle.title, ), ), diff --git a/lib/views/home/profile/cars_inserting_page.dart b/lib/views/home/profile/cars_inserting_page.dart index 6c34edc..58c806d 100755 --- a/lib/views/home/profile/cars_inserting_page.dart +++ b/lib/views/home/profile/cars_inserting_page.dart @@ -94,11 +94,8 @@ GetBuilder egyptCarLicenceFront() { style: AppStyle.headTitle2), IconButton( onPressed: () async { - ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[3]['prompt'].toString()), - AppLink.uploadEgypt, - 'car_front'); + ai.allMethodForAI((ai.prompts[3]['prompt'].toString()), + AppLink.uploadEgypt, 'car_front'); }, icon: const Icon(Icons.refresh), ), @@ -142,12 +139,8 @@ GetBuilder egyptCarLicenceFront() { return Card( child: InkWell( onTap: () async { - ai.allMethodForAINewCar( - EncryptionHelper.instance - .decryptData(ai.prompts[3]['prompt'].toString()), - AppLink.uploadEgypt1, - 'car_front', - 'carId'); //todo + ai.allMethodForAINewCar((ai.prompts[3]['prompt'].toString()), + AppLink.uploadEgypt1, 'car_front', 'carId'); //todo }, child: Column( children: [ @@ -213,11 +206,8 @@ GetBuilder egyptCarLicenceBack() { Text('Vehicle Details Back'.tr, style: AppStyle.headTitle2), IconButton( onPressed: () async { - ai.allMethodForAI( - EncryptionHelper.instance.decryptData( - ai.prompts[4]['prompt'].toString()), - AppLink.uploadEgypt, - 'car_back'); + ai.allMethodForAI((ai.prompts[4]['prompt'].toString()), + AppLink.uploadEgypt, 'car_back'); }, icon: const Icon(Icons.refresh), ), @@ -286,11 +276,8 @@ GetBuilder egyptCarLicenceBack() { return Card( child: InkWell( onTap: () async { - ai.allMethodForAI( - EncryptionHelper.instance - .decryptData(ai.prompts[4]['prompt'].toString()), - AppLink.uploadEgypt, - 'car_back'); + ai.allMethodForAI((ai.prompts[4]['prompt'].toString()), + AppLink.uploadEgypt, 'car_back'); }, child: Column( children: [ diff --git a/lib/views/home/profile/profile_captain.dart b/lib/views/home/profile/profile_captain.dart index 0363330..0e700c5 100755 --- a/lib/views/home/profile/profile_captain.dart +++ b/lib/views/home/profile/profile_captain.dart @@ -10,6 +10,7 @@ import 'package:sefer_driver/controller/profile/captain_profile_controller.dart' import 'package:sefer_driver/views/widgets/my_scafold.dart'; import '../my_wallet/walet_captain.dart'; +import 'behavior_page.dart'; import 'captains_cars.dart'; class ProfileCaptain extends StatelessWidget { @@ -33,19 +34,38 @@ class ProfileCaptain extends StatelessWidget { Material( elevation: 2, borderRadius: BorderRadius.circular(8), - child: InkWell( - onTap: () async { - addBankCodeEgypt(captainWalletController); - }, - borderRadius: BorderRadius.circular(8), - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 16, horizontal: 16), - child: Text( - 'Add bank Account'.tr, - style: AppStyle.title, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + InkWell( + onTap: () async { + addBankCodeEgypt(captainWalletController); + }, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16, horizontal: 16), + child: Text( + 'Add bank Account'.tr, + style: AppStyle.title, + ), + ), ), - ), + InkWell( + onTap: () async { + Get.to(() => BehaviorPage()); + }, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 16, horizontal: 16), + child: Text( + 'Show behavior page'.tr, + style: AppStyle.title, + ), + ), + ), + ], ), ), const SizedBox(height: 15), @@ -73,41 +93,28 @@ class ProfileCaptain extends StatelessWidget { driverId: controller.captainProfileData['driverID'] ?? '', - name: EncryptionHelper.instance.decryptData( - (controller.captainProfileData[ - 'first_name']) ?? - '') + - ' ' + - EncryptionHelper.instance.decryptData( - (controller.captainProfileData[ - 'last_name']) ?? - ''), - phoneNumber: EncryptionHelper.instance - .decryptData(controller - .captainProfileData['phone']) ?? + name: + '${((controller.captainProfileData['first_name']) ?? '')} ${((controller.captainProfileData['last_name']) ?? '')}', + phoneNumber: + (controller.captainProfileData['phone']) ?? + '', + email: (controller.captainProfileData['email']) ?? '', - email: EncryptionHelper.instance.decryptData( - controller.captainProfileData['email']) ?? + birthdate: (controller + .captainProfileData['birthdate']) ?? '', - birthdate: EncryptionHelper.instance.decryptData( - controller - .captainProfileData['birthdate']) ?? - '', - gender: EncryptionHelper.instance.decryptData( - controller - .captainProfileData['gender']) ?? - '', - education: EncryptionHelper.instance.decryptData( - controller - .captainProfileData['education']) ?? + gender: + (controller.captainProfileData['gender']) ?? + '', + education: (controller + .captainProfileData['education']) ?? '', carMake: controller.captainProfileData['make'] ?? '', carModel: controller.captainProfileData['model'] ?? '', - carPlate: EncryptionHelper.instance.decryptData( - controller - .captainProfileData['car_plate']) ?? + carPlate: (controller + .captainProfileData['car_plate']) ?? '', carColor: controller.captainProfileData['color'] ?? '', diff --git a/lib/views/notification/available_rides_page.dart b/lib/views/notification/available_rides_page.dart index 259bbc5..5c5dc4c 100755 --- a/lib/views/notification/available_rides_page.dart +++ b/lib/views/notification/available_rides_page.dart @@ -251,20 +251,7 @@ class RideAvailableCard extends StatelessWidget { // .then((value) { // var json = jsonDecode(res); - if (res == "failure") { - MyDialog().getDialog( - "This ride is already taken by another driver.".tr, '', () { - CRUD().post( - link: AppLink.deleteAvailableRide, payload: {'id': rideInfo['id']}); - if (AppLink.endPoint.toString() != AppLink.seferCairoServer) { - CRUD().post( - link: - '${AppLink.endPoint}/ride/notificationCaptain/deleteAvailableRide.php', - payload: {'id': rideInfo['id']}); - } - Get.back(); - }); - } else if (jsonDecode(res)['status'] == "success") { + if (res != "failure") { List bodyToPassenger = [ box.read(BoxName.driverID).toString(), box.read(BoxName.nameDriver).toString(), @@ -273,7 +260,6 @@ class RideAvailableCard extends StatelessWidget { box.write(BoxName.statusDriverLocation, 'on'); await CRUD().postFromDialogue(link: AppLink.addDriverOrder, payload: { 'driver_id': box.read(BoxName.driverID), - // box.read(BoxName.driverID).toString(), 'order_id': rideInfo['id'], 'status': 'Apply' }); @@ -349,6 +335,19 @@ class RideAvailableCard extends StatelessWidget { 'carType': rideInfo['carType'].toString(), 'kazan': Get.find().kazan.toString(), }); + } else { + MyDialog().getDialog( + "This ride is already taken by another driver.".tr, '', () { + CRUD().post( + link: AppLink.deleteAvailableRide, payload: {'id': rideInfo['id']}); + if (AppLink.endPoint.toString() != AppLink.seferCairoServer) { + CRUD().post( + link: + '${AppLink.endPoint}/ride/notificationCaptain/deleteAvailableRide.php', + payload: {'id': rideInfo['id']}); + } + Get.back(); + }); } } }