25-5-30/1

This commit is contained in:
Hamza-Ayed
2025-05-30 16:57:40 +03:00
parent f3ada31b3b
commit ce3ae01a75
64 changed files with 857 additions and 939 deletions

13
.env
View File

@@ -14,14 +14,14 @@ chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
serverPHP=https://api.sefer.live/sefer serverPHP=https://api.tripz-egypt.com/tripz
seferAlexandriaServer=https://seferalexandria.site/sefer seferAlexandriaServer=https://api.tripz-egypt.com/tripz
seferPaymentServer=https://seferpw.shop/sefer seferPaymentServer=https://wl.tripz-egypt.com/tripz
# seferCairoServer=https://sefer.click/sefer # seferCairoServer=https://sefer.click/sefer
seferCairoServer=https://server.sefer.click/sefer.click/sefer seferCairoServer=https://api.tripz-egypt.com/tripz
seferGizaServer=https://gizasefer.online/sefer seferGizaServer=https://api.tripz-egypt.com/tripz
anthropicAIkeySeferNewHamzaayedpython=zg-qbc-qvo39-vCB-WnzEwFNArO0YlTapvfhtmguKWsXJSKqg_NZSjHBYVXMZK1yUK88SobdckV0KuPaBh0c_WHtGsRO_439PBk-e2QqgkQQXrXlBl 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 cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
@@ -53,6 +53,7 @@ allowed=TripzDriver:
allowedWallet=TripzWallet: allowedWallet=TripzWallet:
passnpassenger=hbgbitbXrXrBr passnpassenger=hbgbitbXrXrBr
newId=new newId=new
newcontabo = Xr9j74uRrr?Gzcvm
a=q a=q
b=x b=x
c=f c=f

1
.gitignore vendored
View File

@@ -33,6 +33,7 @@ migrate_working_dir/
.pub-cache/ .pub-cache/
.pub/ .pub/
.env .env
tripz_server.yaml
/build/ /build/
# Symbolication related # Symbolication related

View File

@@ -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 }/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/additional_project_files.txtC
A 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„ ˜Ëü××2„
<EFBFBD> <EFBFBD>
/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 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 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 w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  ÿµŒ°ß2 u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/build_file_index.txt  ì²ç¨ë2
^ €<>àÕ×2z ^ €<>àÕ×2z
x 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 Š €<>àÕ×2w
u u
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  ì²ç¨ë2 s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/prefab_config.json  ì²ç¨ë2
 ( €<>àÕ×2|  ( €<>àÕ×2|
z z
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  ÿµŒ°ß2 x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/arm64-v8a/symbol_folder_index.txt  ì²ç¨ë2

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log
<EFBFBD> <EFBFBD>
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/additional_project_files.txtC /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/additional_project_files.txtC
A 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<18> ïòü××2‡ |/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build.json  ‹´ç¨ë2<18> ïòü××2‡
 
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  —¶Œ°ß2à ùòü××2r <EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/android_gradle_build_mini.json  ‹´ç¨ë2à ùòü××2r
p 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 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 y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  —¶Œ°ß2 w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/build_file_index.txt  ‹´ç¨ë2
^ “¤àÕ×2| ^ “¤àÕ×2|
z 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 ” “¤àÕ×2y
w w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  ´ç¨ë2 u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/prefab_config.json  ´ç¨ë2
 ( “¤àÕ×2~  ( “¤àÕ×2~
| |
z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  —¶Œ°ß2 z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/armeabi-v7a/symbol_folder_index.txt  ‹´ç¨ë2

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log{
y y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/additional_project_files.txtC w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ”å<EFBFBD>°ß2  þÿü××2x ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ó<EFBFBD>Õìñ2  þÿü××2x
v v
t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  —å<EFBFBD>°ß2á t/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build.json  Ó<EFBFBD>Õìñ2á
€ý××2} €ý××2}
{ {
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  —å<EFBFBD>°ß2£ †€ý××2j y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/android_gradle_build_mini.json  Ó<EFBFBD>Õìñ2£ †€ý××2j
h h
f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  —å<EFBFBD>°ß2²ƒ Üÿü××2n f/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja  Ó<EFBFBD>Õìñ2²ƒ Üÿü××2n
l l
j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  —å<EFBFBD>°ß2s j/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build.ninja.txt  Ó<EFBFBD>Õìñ2s
q q
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  —å<EFBFBD>°ß2 o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/build_file_index.txt  Ó<EFBFBD>Õìñ2
^ ªÕàÕ×2t ^ ªÕàÕ×2t
r 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 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 ì ©ÕàÕ×2q
o o
m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  Ô<>Õìñ2 m/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/prefab_config.json  Ô<>Õìñ2
 ( ©ÕàÕ×2v  ( ©ÕàÕ×2v
t t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  —å<EFBFBD>°ß2 r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86/symbol_folder_index.txt  Ô<EFBFBD>Õìñ2

View File

@@ -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 z/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¶¶Œ°ß2  ûŠý××2{ ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ì´ç¨ë2  ûŠý××2{
y 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€ ýŠý××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 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 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 t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  ¶¶Œ°ß2 r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/build_file_index.txt  Í´ç¨ë2
^ ŒààÕ×2w ^ ŒààÕ×2w
u 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 y
w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  Í´ç¨ë2  çŠý××2<C397> w/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/compile_commands.json.bin  Í´ç¨ë2  çŠý××2<C397>
 
}/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 û ŒààÕ×2t
r r
p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  Í´ç¨ë2 p/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/prefab_config.json  Í´ç¨ë2
 ( ŒààÕ×2y  ( ŒààÕ×2y
w w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  ¶¶Œ°ß2 u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/Debug/6a58wo5c/x86_64/symbol_folder_index.txt  Í´ç¨ë2

View File

@@ -4,3 +4,4 @@
6 2198 1741521280756215895 CMakeFiles/native-lib.dir/native-lib.cpp.o 282a5c17fd8e3306 6 2198 1741521280756215895 CMakeFiles/native-lib.dir/native-lib.cpp.o 282a5c17fd8e3306
10 7926 1742820916832262742 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 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

View File

@@ -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 /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  <EFBFBD>£Á°ß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  <EFBFBD>£Á°ß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  <EFBFBD>£Á°ß2Ö ¨âÁÜ2y ˆ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/android_gradle_build_mini.json  ’ôÊðñ2Ö ¨âÁÜ2y
w w
u/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build.ninja  <EFBFBD>£Á°ß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  <EFBFBD>£Á°ß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 ~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/build_file_index.txt  ’ôÊðñ2
^ àòíÕ×2„ ^ àòíÕ×2„
<EFBFBD> <EFBFBD>
/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<C39C> ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/compile_commands.json.bin  ôÊðñ2 Ñ ü¢âÁÜ2<C39C>
Œ Œ
/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€ ® ßòíÕ×2€
~ ~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  ôÊðñ2 |/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/prefab_config.json  ôÊðñ2
 ( ßòíÕ×2‡  ( ßòíÕ×2‡
 
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  ‚£Á°ß2 <EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/arm64-v8a/symbol_folder_index.txt  ’ôÊðñ2

View File

@@ -4,3 +4,4 @@
5 1608 1741521283027110183 CMakeFiles/native-lib.dir/native-lib.cpp.o b87079b1ccb85962 5 1608 1741521283027110183 CMakeFiles/native-lib.dir/native-lib.cpp.o b87079b1ccb85962
1 3076 1742820925175269992 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 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

View File

@@ -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 ˆ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/additional_project_files.txtC
A 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<C39C> /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/android_gradle_build.json  ïúÊðñ2œ ߣãÁÜ2<C39C>
<EFBFBD> <EFBFBD>
Š/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 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 /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/build_file_index.txt  ïúÊðñ2
^ ãŽîÕ×2‡ ^ ãŽîÕ×2‡
 
<EFBFBD>/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/compile_commands.json  ïúÊðñ2È Å¢ãÁÜ2 <EFBFBD>/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
¸ âŽîÕ× ¸ âŽîÕ×
 
~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  ïúÊðñ2 ~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/prefab_config.json  ïúÊðñ2
 ( âŽîÕ×2‰  ( âŽîÕ×2‰
 
ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  †¥Á°ß2 ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/armeabi-v7a/symbol_folder_index.txt  ïúÊðñ2

View File

@@ -4,3 +4,4 @@
5 1048 1741521284413359950 CMakeFiles/native-lib.dir/native-lib.cpp.o 5a89557cc882a993 5 1048 1741521284413359950 CMakeFiles/native-lib.dir/native-lib.cpp.o 5a89557cc882a993
4 1966 1742820930154400498 CMakeFiles/native-lib.dir/native-lib.cpp.o 5a89557cc882a993 4 1966 1742820930154400498 CMakeFiles/native-lib.dir/native-lib.cpp.o 5a89557cc882a993
1966 3757 1742820931941401305 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86/libnative-lib.so f7a6fa481738ebd7 1966 3757 1742820931941401305 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86/libnative-lib.so f7a6fa481738ebd7
16 147 1748548355859895987 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86/libnative-lib.so f7a6fa481738ebd7

View File

@@ -2,28 +2,28 @@ C/C++ Structured Log
ƒ ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/additional_project_files.txtC /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/additional_project_files.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ã¥Á°ß2  ÒÒãÁÜ2<C39C> ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ­üÊðñ2  ÒÒãÁÜ2<C39C>
 
}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build.json  Ä¥Á°ß2ü }/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build.json  ­üÊðñ2ü
ÓãÁÜ2ˆ ÓãÁÜ2ˆ
 
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build_mini.json  Ä¥Á°ß2¾ °ÓãÁÜ2s /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/android_gradle_build_mini.json  ­üÊðñ2¾ °ÓãÁÜ2s
q q
o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja  Ä¥Á°ß2Ç„ ¦ËãÁÜ2w o/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja  ­üÊðñ2Ç„ ¦ËãÁÜ2w
u u
s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja.txt  Ä¥Á°ß2| s/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build.ninja.txt  ­üÊðñ2|
z z
x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build_file_index.txt  Ä¥Á°ß2 x/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/build_file_index.txt  ­üÊðñ2
^ ¥«îÕ×2} ^ ¥«îÕ×2}
{ {
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json  ­üÊðñ2³ ¢ËãÁÜ2<C39C> y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json  ­üÊðñ2³ ¢ËãÁÜ2<C39C>
 
}/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json.bin  ­üÊðñ2 Þ ¢ËãÁÜ2‰ }/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/compile_commands.json.bin  ­üÊðñ2 Þ ¢ËãÁÜ2‰
 
ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/metadata_generation_command.txt  ­üÊðñ2 ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/metadata_generation_command.txt  ­üÊðñ2
<18> ¤«îÕ×2z <18> ¤«îÕ×2z
x x
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/prefab_config.json  ­üÊðñ2 v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/prefab_config.json  ­üÊðñ2
 ( ¥«îÕ×2  ( ¥«îÕ×2
} }
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  Ä¥Á°ß2 {/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86/symbol_folder_index.txt  ­üÊðñ2

View File

@@ -4,3 +4,4 @@
8 833 1741521285451563038 CMakeFiles/native-lib.dir/native-lib.cpp.o 64e19b6e8058a204 8 833 1741521285451563038 CMakeFiles/native-lib.dir/native-lib.cpp.o 64e19b6e8058a204
29 2917 1742820937015736165 CMakeFiles/native-lib.dir/native-lib.cpp.o 64e19b6e8058a204 29 2917 1742820937015736165 CMakeFiles/native-lib.dir/native-lib.cpp.o 64e19b6e8058a204
2917 3381 1742820937487104560 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86_64/libnative-lib.so 6091450195559ce1 2917 3381 1742820937487104560 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86_64/libnative-lib.so 6091450195559ce1
14 186 1748548356158199323 /Users/hamzaaleghwairyeen/development/App/driver_sefer/build/app/intermediates/cxx/RelWithDebInfo/4y6h5l4y/obj/x86_64/libnative-lib.so 6091450195559ce1

View File

@@ -2,27 +2,27 @@ C/C++ Structured Log
 
ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/additional_project_files.txtC ƒ/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/additional_project_files.txtC
A 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/x86_64/android_gradle_build.json  „¦Á°ß2ˆ ÀÿãÁÜ2 /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build.json  ÓýÊðñ2ˆ ÀÿãÁÜ2
ˆ ˆ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build_mini.json  „¦Á°ß2Ê ¤€äÁÜ2v /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/android_gradle_build_mini.json  ÓýÊðñ2Ê ¤€äÁÜ2v
t t
r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja  „¦Á°ß2Ñ„ éüãÁÜ2z r/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja  ÓýÊðñ2Ñ„ éüãÁÜ2z
x x
v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja.txt  „¦Á°ß2 v/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build.ninja.txt  ÓýÊðñ2
} }
{/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build_file_index.txt  „¦Á°ß2 {/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/build_file_index.txt  ÓýÊðñ2
^ ÕÕîÕ×2€ ^ ÕÕîÕ×2€
~ ~
|/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json  ÓýÊðñ2© éüãÁÜ2† |/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json  ÓýÊðñ2© éüãÁÜ2†
ƒ ƒ
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json.bin  ÓýÊðñ2 Í éüãÁÜ2Œ /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/compile_commands.json.bin  ÓýÊðñ2 Í éüãÁÜ2Œ
 
/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/metadata_generation_command.txt  ÓýÊðñ2 /Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/metadata_generation_command.txt  ÓýÊðñ2
Ÿ ÓÕîÕ×2} Ÿ ÓÕîÕ×2}
{ {
y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/prefab_config.json  ÓýÊðñ2 y/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/prefab_config.json  ÓýÊðñ2
 ( ÔÕîÕ×  ( ÔÕîÕ×
 
~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  „¦Á°ß2 ~/Users/hamzaaleghwairyeen/development/App/driver_sefer/android/app/.cxx/RelWithDebInfo/4y6h5l4y/x86_64/symbol_folder_index.txt  ÓýÊðñ2

View File

@@ -66,8 +66,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = 23 minSdk = 23
targetSdk = flutter.targetSdkVersion targetSdk = flutter.targetSdkVersion
versionCode = 139 versionCode = 142
versionName = '2.0.139' versionName = '2.0.142'
multiDexEnabled =true multiDexEnabled =true
} }
sourceSets { sourceSets {

View File

@@ -474,14 +474,14 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 audio_session: f08db0697111ac84ba46191b55488c0563bb29c6
background_location: 1b80c1fe3abd9912bca298618f6e365abf6f588f background_location: d888b93eca7cff45c2c084b7ecea2eec70b6e490
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4 camera_avfoundation: 04b44aeb14070126c6529e5ab82cc7c9fca107cf
device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99 Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99
firebase_auth: c4bdd9d7b338ac004008cb5024a643584e0ec03f firebase_auth: dee97e7428ef7c304083839d4e3bc4313c03afd5
firebase_core: b62a5080210edad3f2934314a8b2c6f5124e8e10 firebase_core: 726c34112998e66d1ddaf4b1bef78ed2dd4b9804
firebase_messaging: 98619a0572d82cfb3668e78859ba9f1110e268c9 firebase_messaging: a538130cb2bca3ea0ff0892b8c948bd7d20ecaed
FirebaseAnalytics: 3feef9ae8733c567866342a1000691baaa7cad49 FirebaseAnalytics: 3feef9ae8733c567866342a1000691baaa7cad49
FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b
FirebaseAuth: c359af98bd703cbf4293eec107a40de08ede6ce6 FirebaseAuth: c359af98bd703cbf4293eec107a40de08ede6ce6
@@ -492,17 +492,17 @@ SPEC CHECKSUMS:
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2 FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_app_group_directory: d2c3337f424828558953172f9378d00df9b7756d flutter_app_group_directory: 55b5362007d1c0cb45dc1dd1e94f67d615f45a6b
flutter_contacts: edb1c5ce76aa433e20e6cb14c615f4c0b66e0983 flutter_contacts: 5383945387e7ca37cf963d4be57c21f2fc15ca9f
flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e flutter_image_compress_common: 1697a328fd72bfb335507c6bca1a65fa5ad87df1
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9 flutter_local_notifications: 395056b3175ba4f08480a7c5de30cd36d69827e4
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d flutter_tts: b88dbc8655d3dc961bc4a796e4e16a4cc1795833
geolocator_apple: 9bcea1918ff7f0062d98345d238ae12718acfbc1 geolocator_apple: 1560c3c875af2a412242c7a923e15d0d401966ff
Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321
google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3 google_maps_flutter_ios: 0291eb2aa252298a769b04d075e4a9d747ff7264
google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38 google_sign_in_ios: 0ab078e60da6dfe23cbc55c83502b52bba1aad63
GoogleAppMeasurement: 987769c4ca6b968f2479fbcc9fe3ce34af454b8e GoogleAppMeasurement: 987769c4ca6b968f2479fbcc9fe3ce34af454b8e
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d
@@ -510,32 +510,32 @@ SPEC CHECKSUMS:
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf image_cropper: 5f162dcf988100dc1513f9c6b7eb42cd6fbf9156
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
IOSSecuritySuite: b51056d5411aee567153ca86ce7f6edfdc5d2654 IOSSecuritySuite: b51056d5411aee567153ca86ce7f6edfdc5d2654
jailbreak_root_detection: b95de80c3e51eec1fc7d0225784d2fc038fa95ed jailbreak_root_detection: 9201e1dfd51dc23069cbfb8d4f4a2d18305170bf
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa just_audio: 6c031bb61297cf218b4462be616638e81c058e97
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
live_activities: 5a5ddcfe2bd2cbbe7555a5da9c35b07d1a4ff2e8 live_activities: f2e133059358f99655c8d181d65ff54f024a6e93
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3 local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391
location: d5cf8598915965547c3f36761ae9cc4f4e87d22e location: 155caecf9da4f280ab5fe4a55f94ceccfab838f8
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
quick_actions_ios: 56f3cbaa71e94f212838d1f9fe354bd0734779bf quick_actions_ios: 4b07fb49d8d8f3518d7565fbb7a91014067a7d82
RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
record_darwin: 3b1a8e7d5c0cbf45ad6165b4d83a6ca643d929c3 record_darwin: fb1f375f1d9603714f55b8708a903bbb91ffdb0a
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380
share: 0b2c3e82132f5888bccca3351c504d0003b3b410 share: a34936589f3090d59481bcdc5c30cc9dd47c75f6
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440 sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
Stripe: 9757efc154de1d9615cbea4836d590bc4034d3a4 Stripe: 9757efc154de1d9615cbea4836d590bc4034d3a4
stripe_ios: 4463f81157e91cbbf441e1b3fdf5edce90787491 stripe_ios: ac48e0488f95ac7ddea9475fd30f3d739e0bae52
StripeApplePay: ca33933601302742623762157d587b79b942d073 StripeApplePay: ca33933601302742623762157d587b79b942d073
StripeCore: 2af250a2366ff2bbf64d4243c5f9bbf2a98b2aaf StripeCore: 2af250a2366ff2bbf64d4243c5f9bbf2a98b2aaf
StripeFinancialConnections: 3ab1ef6182ec44e71c29e9a2100b663f9713ac20 StripeFinancialConnections: 3ab1ef6182ec44e71c29e9a2100b663f9713ac20
@@ -544,11 +544,11 @@ SPEC CHECKSUMS:
StripePaymentsUI: 7d7cffb2ecfc0d6b5ac3a4488c02893a5ff6cc77 StripePaymentsUI: 7d7cffb2ecfc0d6b5ac3a4488c02893a5ff6cc77
StripeUICore: bb102d453b1e1a10a37f810bc0a9aa0675fb17fd StripeUICore: bb102d453b1e1a10a37f810bc0a9aa0675fb17fd
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654 TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241 vibration: 8e2f50fc35bb736f9eecb7dd9f7047fbb6a6e888
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56 wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49
webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 webview_flutter_wkwebview: 44d4dee7d7056d5ad185d25b38404436d56c547c
PODFILE CHECKSUM: 07f180bff2523e15e01e42c30418373e5627c8fd PODFILE CHECKSUM: 07f180bff2523e15e01e42c30418373e5627c8fd

View File

@@ -35,7 +35,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>102</string> <string>105</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
@@ -50,7 +50,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>5.0.102</string> <string>5.0.105</string>
<key>FirebaseAppDelegateProxyEnabled</key> <key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string> <string>NO</string>
<key>GMSApiKey</key> <key>GMSApiKey</key>

View File

@@ -15,28 +15,27 @@ class AppLink {
// static final String seferAlexandriaServer = Env.seferAlexandriaServer; // static final String seferAlexandriaServer = Env.seferAlexandriaServer;
// static final String seferCairoServer = Env.seferCairoServer; // static final String seferCairoServer = Env.seferCairoServer;
// static final String 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 seferGizaServer = Env.seferCairoServer;
// static final String seferAlexandriaServer = Env.seferCairoServer; // static final String seferAlexandriaServer = Env.seferCairoServer;
// static final String seferPaymentServer = '${Env.seferCairoServer}/ride'; // static final String seferPaymentServer = '${Env.seferCairoServer}/ride';
// static final String seferPaymentServer0 = Env.seferCairoServer; // static final String seferPaymentServer0 = Env.seferCairoServer;
// static const String seferGizaServer = 'https://gizasefer.online/sefer'; // static const String seferGizaServer = 'https://gizasefer.online/sefer';
// static final String seferGizaServer = Env.seferGizaServer; // static final String seferGizaServer = Env.seferGizaServer;
static final String endPoint = static final String endPoint = 'https://api.tripz-egypt.com/tripz';
box.read(BoxName.serverChosen) ?? box.read(BoxName.basicLink); // 'https://api.tripz-egypt.com/tripz';
// 'https://server.sefer.click/sefer.click/sefer';
static final String server = endPoint; static final String server = endPoint;
static String seferCairoServer = endPoint; static String seferCairoServer = endPoint;
static String seferGizaServer = box.read('Giza'); static String seferGizaServer =
static String seferAlexandriaServer = box.read('Alexandria'); box.read('Giza') ?? box.read(BoxName.serverChosen);
static String seferAlexandriaServer =
box.read('Alexandria') ?? box.read(BoxName.serverChosen);
// static final String server = Env.serverPHP; // static final String server = Env.serverPHP;
static String loginJwtDriver = static String loginJwtDriver = "$server/loginJwtDriver.php";
"https://server.sefer.click/sefer.click/sefer/loginJwtDriver.php";
static String loginJwtWalletDriver = static String loginJwtWalletDriver =
"$seferPaymentServer/loginJwtWalletDriver.php"; "$seferPaymentServer/loginJwtWalletDriver.php";
static String loginFirstTimeDriver = static String loginFirstTimeDriver = "$server/loginFirstTimeDriver.php";
"https://server.sefer.click/sefer.click/sefer/loginFirstTimeDriver.php";
static String googleMapsLink = 'https://maps.googleapis.com/maps/api/'; static String googleMapsLink = 'https://maps.googleapis.com/maps/api/';
static String llama = 'https://api.llama-api.com/chat/completions'; static String llama = 'https://api.llama-api.com/chat/completions';
@@ -92,7 +91,7 @@ class AppLink {
static String ride = '$server/ride'; static String ride = '$server/ride';
static String addCancelRideFromPassenger = "$server/ride/cancelRide/add.php"; static String addCancelRideFromPassenger = "$server/ride/cancelRide/add.php";
static String addCancelTripFromDriverAfterApplied = static String addCancelTripFromDriverAfterApplied =
"$server/ride/cancelRide/addCancelTripFromDriverAfterApplied.php"; "$ride/cancelRide/addCancelTripFromDriverAfterApplied.php";
static String cancelRide = "$server/ride/cancelRide/get.php"; static String cancelRide = "$server/ride/cancelRide/get.php";
//-----------------ridessss------------------ //-----------------ridessss------------------
static String addRides = "$ride/rides/add.php"; static String addRides = "$ride/rides/add.php";
@@ -102,10 +101,9 @@ class AppLink {
static String getTripCountByCaptain = "$ride/rides/getTripCountByCaptain.php"; static String getTripCountByCaptain = "$ride/rides/getTripCountByCaptain.php";
static String getRideOrderID = "$ride/rides/getRideOrderID.php"; static String getRideOrderID = "$ride/rides/getRideOrderID.php";
static String getRideStatus = "$ride/rides/getRideStatus.php"; static String getRideStatus = "$ride/rides/getRideStatus.php";
static String getapiKey = Env.getapiKey; static String getapiKey = "$ride/apiKey/get.php";
static String getapiKeySefer = static String getapiKeySefer = "$ride/apiKey/get.php";
"https://api.sefer.click/sefer/ride/apiKey/get.php";
static String getRideStatusBegin = "$ride/rides/getRideStatusBegin.php"; static String getRideStatusBegin = "$ride/rides/getRideStatusBegin.php";
static String getRideStatusFromStartApp = static String getRideStatusFromStartApp =
"$ride/rides/getRideStatusFromStartApp.php"; "$ride/rides/getRideStatusFromStartApp.php";
@@ -226,16 +224,16 @@ class AppLink {
static String addRateToDriver = "$ride/rate/addRateToDriver.php"; static String addRateToDriver = "$ride/rate/addRateToDriver.php";
static String addRateApp = "$ride/rate/add_rate_app.php"; static String addRateApp = "$ride/rate/add_rate_app.php";
static String sendEmailRateingApp = 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 getDriverRate = "$ride/rate/getDriverRate.php";
static String getPassengerRate = "$ride/rate/getPassengerRate.php"; static String getPassengerRate = "$ride/rate/getPassengerRate.php";
////////////////emails ============// ////////////////emails ============//
static String sendEmailToPassengerForTripDetails = 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 = static String sendEmailToDrivertransaction =
"https://api.sefer.click/sefer/Admin/sendEmailToDrivertransaction.php"; "https://api.tripz-egypt.com/tripz/Admin/sendEmailToDrivertransaction.php";
// "https://api.sefer.click/sefer/Admin/sendEmailToDrivertransaction.php"; // "https://api.tripz-egypt.com/tripz/Admin/sendEmailToDrivertransaction.php";
// =========================================== // ===========================================
static String pathImage = "$server/upload/types/"; static String pathImage = "$server/upload/types/";
static String uploadImage = "$server/uploadImage.php"; static String uploadImage = "$server/uploadImage.php";
@@ -253,7 +251,7 @@ class AppLink {
static String getCarsLocationByPassenger = "$location/get.php"; static String getCarsLocationByPassenger = "$location/get.php";
static String addpassengerLocation = "$location/addpassengerLocation.php"; static String addpassengerLocation = "$location/addpassengerLocation.php";
static String getLocationAreaLinks = 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 = static String getLatestLocationPassenger =
"$location/getLatestLocationPassenger.php"; "$location/getLatestLocationPassenger.php";
static String getFemalDriverLocationByPassenger = static String getFemalDriverLocationByPassenger =
@@ -261,6 +259,7 @@ class AppLink {
static String getDriverCarsLocationToPassengerAfterApplied = static String getDriverCarsLocationToPassengerAfterApplied =
"$location/getDriverCarsLocationToPassengerAfterApplied.php"; "$location/getDriverCarsLocationToPassengerAfterApplied.php";
static String addCarsLocationByPassenger = "$location/add.php"; static String addCarsLocationByPassenger = "$location/add.php";
static String saveBehavior = "$location/save_behavior.php";
static String addCarsLocationGizaEndpoint = "$location/add.php"; static String addCarsLocationGizaEndpoint = "$location/add.php";
static String addCarsLocationAlexandriaEndpoint = "$location/add.php"; static String addCarsLocationAlexandriaEndpoint = "$location/add.php";
static String addCarsLocationCairoEndpoint = "$location/add.php"; static String addCarsLocationCairoEndpoint = "$location/add.php";
@@ -271,6 +270,10 @@ class AppLink {
static String getTotalDriverDurationToday = static String getTotalDriverDurationToday =
"$location/getTotalDriverDurationToday.php"; "$location/getTotalDriverDurationToday.php";
//==================get_driver_behavior.php=============
static String get_driver_behavior =
'$server/ride/driver_behavior/get_driver_behavior.php';
//==================cars new drivers============= //==================cars new drivers=============
static String addNewCarsDrivers = '$server/ride/carDrivers/add.php'; static String addNewCarsDrivers = '$server/ride/carDrivers/add.php';
static String getNewCarsDrivers = '$server/ride/carDrivers/get.php'; static String getNewCarsDrivers = '$server/ride/carDrivers/get.php';

View File

@@ -5,6 +5,7 @@ class TableName {
static const String driverOrdersRefuse = "driverOrdersRefuse"; static const String driverOrdersRefuse = "driverOrdersRefuse";
static const String rideLocation = "rideLocation"; static const String rideLocation = "rideLocation";
static const String faceDetectTimes = "faceDetectTimes"; static const String faceDetectTimes = "faceDetectTimes";
static const String behavior = "behavior";
static const String captainNotification = "captainNotification"; static const String captainNotification = "captainNotification";
static const String applyRideFromOverLay = "applyRideFromOverLay"; static const String applyRideFromOverLay = "applyRideFromOverLay";
} }

View File

@@ -45,9 +45,8 @@ class HistoryCaptainController extends GetxController {
getHistoryDetails(String orderId) async { getHistoryDetails(String orderId) async {
isloading = true; isloading = true;
var res = await CRUD().get( var res = await CRUD()
link: AppLink.getRideOrderID, .get(link: AppLink.getRideOrderID, payload: {'id': (orderId)});
payload: {'id': EncryptionHelper.instance.encryptData(orderId)});
historyDetailsData = jsonDecode(res); historyDetailsData = jsonDecode(res);
isloading = false; isloading = false;
update(); update();

View File

@@ -150,9 +150,9 @@ Download the Tripz app now and enjoy your ride!
void onSelectDriverInvitation(int index) async { void onSelectDriverInvitation(int index) async {
MyDialog().getDialog( MyDialog().getDialog(
int.parse((driverInvitationData[index]['countOfInvitDriver'])) < 100 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, : '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 { () async {
bool isAvailable = await LocalAuthentication().isDeviceSupported(); bool isAvailable = await LocalAuthentication().isDeviceSupported();
if (int.parse((driverInvitationData[index]['countOfInvitDriver'])) < if (int.parse((driverInvitationData[index]['countOfInvitDriver'])) <
@@ -173,10 +173,9 @@ Download the Tripz app now and enjoy your ride!
if ((driverInvitationData[index]['isGiftToken']).toString() == if ((driverInvitationData[index]['isGiftToken']).toString() ==
'0') { '0') {
Get.back(); Get.back();
await CRUD().post(link: AppLink.updateInviteDriver, payload: { await CRUD().post(
'id': EncryptionHelper.instance link: AppLink.updateInviteDriver,
.encryptData(driverInvitationData[index]['id']) payload: {'id': (driverInvitationData[index]['id'])});
});
await Get.find<CaptainWalletController>().addDriverPayment( await Get.find<CaptainWalletController>().addDriverPayment(
'paymentMethod', 'paymentMethod',
('500'), ('500'),
@@ -186,8 +185,7 @@ Download the Tripz app now and enjoy your ride!
await Get.find<CaptainWalletController>() await Get.find<CaptainWalletController>()
.addDriverWalletToInvitor( .addDriverWalletToInvitor(
'paymentMethod', 'paymentMethod',
EncryptionHelper.instance.encryptData( (driverInvitationData[index]['driverInviterId']),
driverInvitationData[index]['driverInviterId']),
('500'), ('500'),
); );
await Get.find<CaptainWalletController>() await Get.find<CaptainWalletController>()
@@ -231,9 +229,9 @@ Download the Tripz app now and enjoy your ride!
int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver'] int.parse(driverInvitationDataToPassengers[index]['countOfInvitDriver']
.toString()) < .toString()) <
3 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, : '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 { () async {
if (int.parse(driverInvitationDataToPassengers[index] if (int.parse(driverInvitationDataToPassengers[index]
['countOfInvitDriver'] ['countOfInvitDriver']
@@ -342,7 +340,7 @@ Download the Tripz app now and enjoy your ride!
}); });
if (response != 'failure') { if (response != 'failure') {
var d = jsonDecode(response); var d = (response);
mySnackbarSuccess('Invite sent successfully'.tr); mySnackbarSuccess('Invite sent successfully'.tr);
String message = '${'*Tripz DRIVER CODE*'.tr}\n\n' String message = '${'*Tripz DRIVER CODE*'.tr}\n\n'
'${"Use this code in registration".tr}\n' '${"Use this code in registration".tr}\n'

View File

@@ -98,11 +98,12 @@ class LoginDriverController extends GetxController {
final random = Random(); final random = Random();
if (random.nextBool()) { if (random.nextBool()) {
await SecurityHelper.performSecurityChecks(); // await SecurityHelper.performSecurityChecks();
} else { } else {
await SecurityChecks.isDeviceRootedFromNative(Get.context!); await SecurityChecks.isDeviceRootedFromNative(Get.context!);
} }
String fingerPrint = await DeviceHelper.getDeviceFingerprint(); String fingerPrint = await DeviceHelper.getDeviceFingerprint();
// print('fingerPrint: ${fingerPrint}');
dev = Platform.isAndroid ? 'android' : 'ios'; dev = Platform.isAndroid ? 'android' : 'ios';
var payload = { var payload = {
'id': box.read(BoxName.driverID), 'id': box.read(BoxName.driverID),
@@ -144,9 +145,11 @@ class LoginDriverController extends GetxController {
); );
if (response0.statusCode == 200) { if (response0.statusCode == 200) {
final decodedResponse1 = jsonDecode(response0.body); final decodedResponse1 = jsonDecode(response0.body);
// Log.print('decodedResponse1: ${decodedResponse1}');
final jwt = decodedResponse1['jwt']; final jwt = decodedResponse1['jwt'];
box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs)); 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.keyOfApp);
await AppInitializer().getAIKey(Driver.initializationVector); await AppInitializer().getAIKey(Driver.initializationVector);
@@ -183,6 +186,7 @@ class LoginDriverController extends GetxController {
// Log.print('decodedResponse1: ${decodedResponse1}'); // Log.print('decodedResponse1: ${decodedResponse1}');
final jwt = decodedResponse1['jwt']; 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 box.write(BoxName.jwt, X.c(X.c(X.c(jwt, cn), cC), cs));
await AppInitializer().getKey(); await AppInitializer().getKey();
} }
@@ -230,7 +234,7 @@ class LoginDriverController extends GetxController {
var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: { var res = await CRUD().get(link: AppLink.loginFromGoogleCaptin, payload: {
'email': email.toString().contains('@') 'email': email.toString().contains('@')
// ? (box.read(BoxName.emailDriver)) // ? (box.read(BoxName.emailDriver))
? EncryptionHelper.instance.encryptData(email) ? (email)
: email, : email,
'id': driverID, 'id': driverID,
}); });
@@ -252,10 +256,7 @@ class LoginDriverController extends GetxController {
if (jsonDecoeded.isNotEmpty) { if (jsonDecoeded.isNotEmpty) {
if (jsonDecoeded['status'] == 'success' && if (jsonDecoeded['status'] == 'success' &&
jsonDecoeded['data'][0]['is_verified'].toString() == '1') { jsonDecoeded['data'][0]['is_verified'].toString() == '1') {
box.write( box.write(BoxName.emailDriver, jsonDecoeded['data'][0]['email']);
BoxName.emailDriver,
EncryptionHelper.instance
.decryptData(jsonDecoeded['data'][0]['email']));
box.write(BoxName.firstTimeLoadKey, 'false'); box.write(BoxName.firstTimeLoadKey, 'false');
box.write(BoxName.driverID, (jsonDecoeded['data'][0]['id'])); box.write(BoxName.driverID, (jsonDecoeded['data'][0]['id']));
box.write(BoxName.isTest, '1'); box.write(BoxName.isTest, '1');
@@ -276,16 +277,13 @@ class LoginDriverController extends GetxController {
(jsonDecoeded['data'][0]['accountBank'])); (jsonDecoeded['data'][0]['accountBank']));
box.write( box.write(
BoxName.nameDriver, BoxName.nameDriver,
'${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['first_name'])}' '${(jsonDecoeded['data'][0]['first_name'])}'
' ${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['last_name'])}'); ' ${(jsonDecoeded['data'][0]['last_name'])}');
if (((jsonDecoeded['data'][0]['model']) if (((jsonDecoeded['data'][0]['model'])
.toString() .toString()
.contains('دراجه') || .contains('دراجه') ||
jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) { jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) {
if (EncryptionHelper.instance if ((jsonDecoeded['data'][0]['gender']).toString() == 'Male') {
.decryptData(jsonDecoeded['data'][0]['gender'])
.toString() ==
'Male') {
box.write(BoxName.carTypeOfDriver, 'Scooter'); box.write(BoxName.carTypeOfDriver, 'Scooter');
} else { } else {
box.write(BoxName.carTypeOfDriver, 'Pink Bike'); box.write(BoxName.carTypeOfDriver, 'Pink Bike');
@@ -311,8 +309,9 @@ class LoginDriverController extends GetxController {
link: AppLink.getDriverToken, link: AppLink.getDriverToken,
payload: {'captain_id': (box.read(BoxName.driverID)).toString()}); payload: {'captain_id': (box.read(BoxName.driverID)).toString()});
String? fingerPrint = await DeviceHelper.getDeviceFingerprint(); String fingerPrint = await DeviceHelper.getDeviceFingerprint();
await storage.write(key: BoxName.fingerPrint, value: fingerPrint); await storage.write(
key: BoxName.fingerPrint, value: fingerPrint.toString());
if (token != 'failure') { if (token != 'failure') {
if ((jsonDecode(token)['data'][0]['token']) != if ((jsonDecode(token)['data'][0]['token']) !=
@@ -320,9 +319,7 @@ class LoginDriverController extends GetxController {
Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP(
'token change'.tr, 'token change'.tr,
'change device'.tr, 'change device'.tr,
EncryptionHelper.instance (jsonDecode(token)['data'][0]['token']).toString(),
.decryptData(jsonDecode(token)['data'][0]['token'])
.toString(),
[], [],
'promo.wav'); 'promo.wav');
await Get.defaultDialog( await Get.defaultDialog(
@@ -337,9 +334,10 @@ class LoginDriverController extends GetxController {
'captain_id': (box.read(BoxName.driverID)).toString(), 'captain_id': (box.read(BoxName.driverID)).toString(),
'fingerPrint': (fingerPrint).toString() 'fingerPrint': (fingerPrint).toString()
}); });
// to save in payment server fingerprint
await CRUD().post( await CRUD().post(
link: link:
"${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php",
payload: { payload: {
'token': (box.read(BoxName.tokenDriver)), 'token': (box.read(BoxName.tokenDriver)),
'captain_id': 'captain_id':
@@ -381,7 +379,7 @@ class LoginDriverController extends GetxController {
update(); update();
var res = await CRUD() var res = await CRUD()
.get(link: AppLink.loginUsingCredentialsWithoutGoogle, payload: { .get(link: AppLink.loginUsingCredentialsWithoutGoogle, payload: {
'email': EncryptionHelper.instance.encryptData(email), 'email': (email),
'password': password, 'password': password,
}); });
box.write(BoxName.emailDriver, (email).toString()); box.write(BoxName.emailDriver, (email).toString());
@@ -409,33 +407,25 @@ class LoginDriverController extends GetxController {
jsonDecoeded['data'][0]['is_verified'].toString()); jsonDecoeded['data'][0]['is_verified'].toString());
box.write(BoxName.phoneDriver, (jsonDecoeded['data'][0]['phone'])); box.write(BoxName.phoneDriver, (jsonDecoeded['data'][0]['phone']));
box.write( box.write(
BoxName.nameArabic, BoxName.nameArabic, (jsonDecoeded['data'][0]['name_arabic']));
EncryptionHelper.instance
.decryptData(jsonDecoeded['data'][0]['name_arabic']));
box.write( box.write(
BoxName.bankCodeDriver, (jsonDecoeded['data'][0]['bankCode'])); BoxName.bankCodeDriver, (jsonDecoeded['data'][0]['bankCode']));
box.write(BoxName.accountBankNumberDriver, box.write(BoxName.accountBankNumberDriver,
jsonDecoeded['data'][0]['accountBank']); jsonDecoeded['data'][0]['accountBank']);
box.write( box.write(
BoxName.nameDriver, BoxName.nameDriver,
'${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['first_name'])}' '${(jsonDecoeded['data'][0]['first_name'])}'
' ${EncryptionHelper.instance.decryptData(jsonDecoeded['data'][0]['last_name'])}'); ' ${(jsonDecoeded['data'][0]['last_name'])}');
if ((jsonDecoeded['data'][0]['model'].toString().contains('دراجه') || if ((jsonDecoeded['data'][0]['model'].toString().contains('دراجه') ||
jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) { jsonDecoeded['data'][0]['make'].toString().contains('دراجه '))) {
if (EncryptionHelper.instance if ((jsonDecoeded['data'][0]['gender']).toString() == 'Male') {
.decryptData(jsonDecoeded['data'][0]['gender'])
.toString() ==
'Male') {
box.write(BoxName.carTypeOfDriver, 'Scooter'); box.write(BoxName.carTypeOfDriver, 'Scooter');
} else { } else {
box.write(BoxName.carTypeOfDriver, 'Pink Bike'); box.write(BoxName.carTypeOfDriver, 'Pink Bike');
} }
} else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) > } else if (int.parse(jsonDecoeded['data'][0]['year'].toString()) >
2017) { 2017) {
if (EncryptionHelper.instance if ((jsonDecoeded['data'][0]['gender']).toString() != 'Male') {
.decryptData(jsonDecoeded['data'][0]['gender'])
.toString() !=
'Male') {
box.write(BoxName.carTypeOfDriver, 'Lady'); box.write(BoxName.carTypeOfDriver, 'Lady');
} else { } else {
box.write(BoxName.carTypeOfDriver, 'Comfort'); box.write(BoxName.carTypeOfDriver, 'Comfort');
@@ -463,9 +453,7 @@ class LoginDriverController extends GetxController {
Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP( Get.put(FirebaseMessagesController()).sendNotificationToDriverMAP(
'token change'.tr, 'token change'.tr,
'change device'.tr, 'change device'.tr,
EncryptionHelper.instance (jsonDecode(token)['data'][0]['token']).toString(),
.decryptData(jsonDecode(token)['data'][0]['token'])
.toString(),
[], [],
'ding.wav'); 'ding.wav');
Get.defaultDialog( Get.defaultDialog(

View File

@@ -100,7 +100,6 @@ class RegisterCaptainController extends GetxController {
SmsEgyptController smsEgyptController = Get.put(SmsEgyptController()); SmsEgyptController smsEgyptController = Get.put(SmsEgyptController());
isLoading = true; isLoading = true;
update(); update();
int randomNumber = Random().nextInt(100000) + 1;
isLoading = true; isLoading = true;
update(); update();
if (formKey3.currentState!.validate()) { if (formKey3.currentState!.validate()) {
@@ -108,8 +107,7 @@ class RegisterCaptainController extends GetxController {
if (isValidEgyptianPhoneNumber(phoneController.text)) { if (isValidEgyptianPhoneNumber(phoneController.text)) {
var responseCheker = await CRUD() var responseCheker = await CRUD()
.post(link: AppLink.checkPhoneNumberISVerfiedDriver, payload: { .post(link: AppLink.checkPhoneNumberISVerfiedDriver, payload: {
'phone_number': EncryptionHelper.instance 'phone_number': ('+2${phoneController.text}'),
.encryptData('+2${phoneController.text}'),
}); });
if (responseCheker != 'failure') { if (responseCheker != 'failure') {
var d = jsonDecode(responseCheker); var d = jsonDecode(responseCheker);
@@ -117,29 +115,18 @@ class RegisterCaptainController extends GetxController {
Get.snackbar('Phone number is verified before'.tr, '', Get.snackbar('Phone number is verified before'.tr, '',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
box.write(BoxName.phoneVerified, '1'); box.write(BoxName.phoneVerified, '1');
box.write( box.write(BoxName.phone, ('+2${phoneController.text}'));
BoxName.phone,
EncryptionHelper.instance
.encryptData('+2${phoneController.text}'));
await Get.put(LoginDriverController()).loginWithGoogleCredential( await Get.put(LoginDriverController()).loginWithGoogleCredential(
box.read(BoxName.driverID).toString(), box.read(BoxName.driverID).toString(),
EncryptionHelper.instance (box.read(BoxName.emailDriver).toString()),
.encryptData(box.read(BoxName.emailDriver).toString()),
); );
} else { } else {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': EncryptionHelper.instance 'phone_number': ('+2${phoneController.text}'),
.encryptData('+2${phoneController.text}'),
'token_code': EncryptionHelper.instance
.encryptData(randomNumber.toString()),
"driverId": box.read(BoxName.driverID), "driverId": box.read(BoxName.driverID),
"email": EncryptionHelper.instance "email": (box.read(BoxName.emailDriver)),
.encryptData(box.read(BoxName.emailDriver)),
}); });
await smsEgyptController.sendSmsEgypt(
phoneController.text.toString(), randomNumber.toString());
isSent = true; isSent = true;
isLoading = false; isLoading = false;
@@ -147,17 +134,11 @@ class RegisterCaptainController extends GetxController {
} }
} else { } else {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: { await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': EncryptionHelper.instance 'phone_number': ('+2${phoneController.text}'),
.encryptData('+2${phoneController.text}'),
'token_code': EncryptionHelper.instance
.encryptData(randomNumber.toString()),
"driverId": box.read(BoxName.driverID), "driverId": box.read(BoxName.driverID),
"email": box.read(BoxName.emailDriver), "email": box.read(BoxName.emailDriver),
}); });
await smsEgyptController.sendSmsEgypt(
phoneController.text.toString(), randomNumber.toString());
isSent = true; isSent = true;
isLoading = false; isLoading = false;
@@ -250,8 +231,7 @@ class RegisterCaptainController extends GetxController {
_handleAlreadyVerified() { _handleAlreadyVerified() {
mySnackbarSuccess('Phone number is already verified'.tr); mySnackbarSuccess('Phone number is already verified'.tr);
box.write(BoxName.phoneVerified, '1'); box.write(BoxName.phoneVerified, '1');
box.write(BoxName.phone, box.write(BoxName.phone, ('+2${phoneController.text}'));
EncryptionHelper.instance.encryptData('+2${phoneController.text}'));
Get.put(LoginDriverController()).loginWithGoogleCredential( Get.put(LoginDriverController()).loginWithGoogleCredential(
box.read(BoxName.driverID).toString(), box.read(BoxName.driverID).toString(),
box.read(BoxName.emailDriver).toString(), box.read(BoxName.emailDriver).toString(),
@@ -266,15 +246,14 @@ class RegisterCaptainController extends GetxController {
await CRUD().post( await CRUD().post(
link: AppLink.sendVerifyOtpMessage, link: AppLink.sendVerifyOtpMessage,
payload: { payload: {
'phone_number': EncryptionHelper.instance.encryptData('+2$phoneNumber'), 'phone_number': ('+2$phoneNumber'),
'token_code': 'token_code': (randomNumber.toString()),
EncryptionHelper.instance.encryptData(randomNumber.toString()),
'driverId': box.read(BoxName.driverID), 'driverId': box.read(BoxName.driverID),
'email': box.read(BoxName.emailDriver), 'email': box.read(BoxName.emailDriver),
}, },
); );
await smsEgyptController.sendSmsEgypt(phoneNumber, randomNumber.toString()); await smsEgyptController.sendSmsEgypt(phoneNumber);
lastOtpSentTime = DateTime.now(); // Update the last OTP sent time lastOtpSentTime = DateTime.now(); // Update the last OTP sent time
isSent = true; isSent = true;
@@ -286,15 +265,12 @@ class RegisterCaptainController extends GetxController {
// var loginDriverController = Get.put(LoginDriverController()); // var loginDriverController = Get.put(LoginDriverController());
if (formKey3.currentState!.validate()) { if (formKey3.currentState!.validate()) {
var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: { var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: {
'phone_number': 'phone_number': ('+2${phoneController.text}'),
EncryptionHelper.instance.encryptData('+2${phoneController.text}'), 'token_code': (verifyCode.text.toString()),
'token_code':
EncryptionHelper.instance.encryptData(verifyCode.text.toString()),
}); });
if (res != 'failure') { if (res != 'failure') {
// var dec = jsonDecode(res); // var dec = jsonDecode(res);
box.write(BoxName.phoneDriver, box.write(BoxName.phoneDriver, ('+2${phoneController.text}'));
EncryptionHelper.instance.encryptData('+2${phoneController.text}'));
box.write(BoxName.phoneVerified, '1'); box.write(BoxName.phoneVerified, '1');
// loginDriverController.isGoogleLogin == true // loginDriverController.isGoogleLogin == true
@@ -319,10 +295,9 @@ class RegisterCaptainController extends GetxController {
sendVerifications() async { sendVerifications() async {
var res = await CRUD().post(link: AppLink.verifyEmail, payload: { var res = await CRUD().post(link: AppLink.verifyEmail, payload: {
'email': emailController.text.isEmpty 'email': emailController.text.isEmpty
? EncryptionHelper.instance.encryptData( ? (Get.find<LoginDriverController>().emailController.text.toString())
Get.find<LoginDriverController>().emailController.text.toString()) : (emailController.text),
: EncryptionHelper.instance.encryptData(emailController.text), 'token': (verifyCode.text),
'token': EncryptionHelper.instance.encryptData(verifyCode.text),
}); });
if (res != 'failure') { if (res != 'failure') {

View File

@@ -94,9 +94,8 @@ class GoogleSignInHelper {
// Retrieve driverID and emailDriver with added validation // Retrieve driverID and emailDriver with added validation
final driverID = final driverID =
(box.read(BoxName.driverID)!.toString()) ?? 'Unknown ID'; (box.read(BoxName.driverID)!.toString()) ?? 'Unknown ID';
final emailDriver = EncryptionHelper.instance final emailDriver =
.encryptData(box.read(BoxName.emailDriver)!.toString()) ?? (box.read(BoxName.emailDriver)!.toString()) ?? 'Unknown Email';
'Unknown Email';
// Debug print statements // Debug print statements
print('Driver ID: $driverID'); print('Driver ID: $driverID');

View File

@@ -60,10 +60,7 @@ class LoginController extends GetxController {
if (jsonDecoeded['status'] == 'success') { if (jsonDecoeded['status'] == 'success') {
if (jsonDecoeded['data'][0]['verified'] == 1) { if (jsonDecoeded['data'][0]['verified'] == 1) {
box.write(BoxName.driverID, jsonDecoeded['data'][0]['id']); box.write(BoxName.driverID, jsonDecoeded['data'][0]['id']);
box.write( box.write(BoxName.emailDriver, (jsonDecoeded['data'][0]['email']));
BoxName.emailDriver,
EncryptionHelper.instance
.encryptData(jsonDecoeded['data'][0]['email']));
box.write( box.write(
BoxName.nameDriver, BoxName.nameDriver,
jsonDecoeded['data'][0]['first_name'] + jsonDecoeded['data'][0]['first_name'] +

View File

@@ -71,8 +71,7 @@ class FirebaseMessagesController extends GetxController {
Future getToken() async { Future getToken() async {
fcmToken.getToken().then((token) { fcmToken.getToken().then((token) {
// Log.print('token: ${token}'); // Log.print('token: ${token}');
box.write( box.write(BoxName.tokenDriver, (token!));
BoxName.tokenDriver, EncryptionHelper.instance.encryptData(token!));
}); });
FirebaseMessaging.onMessage.listen((RemoteMessage message) { FirebaseMessaging.onMessage.listen((RemoteMessage message) {
@@ -409,8 +408,7 @@ class FirebaseMessagesController extends GetxController {
var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY'); var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY');
// Log.print('encryptedKey: ${encryptedKey}'); // Log.print('encryptedKey: ${encryptedKey}');
if (encryptedKey != null) { if (encryptedKey != null) {
serviceAccountKeyJson = serviceAccountKeyJson = (encryptedKey);
EncryptionHelper.instance.decryptData(encryptedKey);
// Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}'); // Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}');
} else { } else {
print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage'); print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage');

View File

@@ -66,12 +66,12 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration return 'token_expired'; // Return a specific value for token expiration
} else { } else {
// Other 401 errors // Other 401 errors
addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure'; return 'failure';
} }
} else { } else {
addError('Non-200 response code: ${response.statusCode}', // addError('Non-200 response code: ${response.statusCode}',
'crud().post - Other'); // 'crud().post - Other');
return 'failure'; return 'failure';
} }
} }
@@ -96,7 +96,7 @@ class CRUD {
}, },
); );
// print(response.request); // print(response.request);
// Log.print('response.request: ${response.request}'); // // Log.print('response.request: ${response.request}');
// Log.print('response.body: ${response.body}'); // Log.print('response.body: ${response.body}');
// print(payload); // print(payload);
if (response.statusCode == 200) { if (response.statusCode == 200) {
@@ -117,12 +117,12 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration return 'token_expired'; // Return a specific value for token expiration
} else { } else {
// Other 401 errors // Other 401 errors
addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure'; return 'failure';
} }
} else { } else {
addError('Non-200 response code: ${response.statusCode}', // addError('Non-200 response code: ${response.statusCode}',
'crud().post - Other'); // 'crud().post - Other');
return 'failure'; return 'failure';
} }
} }
@@ -157,7 +157,7 @@ class CRUD {
return jsonData['status']; return jsonData['status'];
} }
} catch (e) { } catch (e) {
addError(e.toString(), 'crud().post - JSON decoding'); // addError(e.toString(), 'crud().post - JSON decoding');
return 'failure'; return 'failure';
} }
} else if (response.statusCode == 401) { } else if (response.statusCode == 401) {
@@ -168,16 +168,16 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration return 'token_expired'; // Return a specific value for token expiration
} else { } else {
// Other 401 errors // Other 401 errors
addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure'; return 'failure';
} }
} else { } else {
addError('Non-200 response code: ${response.statusCode}', // addError('Non-200 response code: ${response.statusCode}',
'crud().post - Other'); // 'crud().post - Other');
return 'failure'; return 'failure';
} }
} catch (e) { } catch (e) {
addError('HTTP request error: $e', 'crud().post - HTTP'); // addError('HTTP request error: $e', 'crud().post - HTTP');
return 'failure'; return 'failure';
} }
} }
@@ -215,7 +215,7 @@ class CRUD {
return jsonData['status']; return jsonData['status'];
} }
} catch (e) { } catch (e) {
addError(e.toString(), url); // addError(e.toString(), url);
return 'failure'; return 'failure';
} }
} else if (response.statusCode == 401) { } else if (response.statusCode == 401) {
@@ -238,16 +238,16 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration return 'token_expired'; // Return a specific value for token expiration
} else { } else {
// Other 401 errors // Other 401 errors
addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401'); // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure'; return 'failure';
} }
} else { } else {
addError('Non-200 response code: ${response.statusCode}', // addError('Non-200 response code: ${response.statusCode}',
'crud().post - Other'); // 'crud().post - Other');
return 'failure'; return 'failure';
} }
} catch (e) { } catch (e) {
addError('HTTP request error: $e', 'crud().post - HTTP'); // addError('HTTP request error: $e', 'crud().post - HTTP');
return 'failure'; return 'failure';
} }
} }

View File

@@ -28,9 +28,9 @@ Future<String> faceDetector() async {
request.body = json.encode({ request.body = json.encode({
"url1": "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": "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}'); print('request.body: ${request.body}');
request.headers.addAll(headers); request.headers.addAll(headers);

View File

@@ -1,7 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'dart:math';
import 'dart:convert'; import 'dart:convert';
import 'package:crypto/crypto.dart'; 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/firbase_messge.dart';
import 'package:sefer_driver/controller/firebase/local_notification.dart'; import 'package:sefer_driver/controller/firebase/local_notification.dart';
import 'package:sefer_driver/controller/functions/crud.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/main.dart';
import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart'; import 'package:sefer_driver/views/home/Captin/home_captain/home_captin.dart';
import 'package:sefer_driver/views/widgets/error_snakbar.dart'; import 'package:sefer_driver/views/widgets/error_snakbar.dart';
@@ -397,16 +394,13 @@ class AI extends GetxController {
update(); update();
var payload = { var payload = {
'first_name': EncryptionHelper.instance.encryptData( 'first_name':
responseNonIdCardFront['full_name'].toString().split(' ')[0]) ?? (responseNonIdCardFront['full_name'].toString().split(' ')[0]) ??
'Not specified', 'Not specified',
'last_name': EncryptionHelper.instance.encryptData( 'last_name':
responseNonIdCardFront['full_name'].toString().split(' ').last) ?? (responseNonIdCardFront['full_name'].toString().split(' ').last) ??
'Not specified',
'email': EncryptionHelper.instance
.encryptData(box.read(BoxName.emailDriver))
?.toString() ??
'Not specified', 'Not specified',
'email': (box.read(BoxName.emailDriver))?.toString() ?? 'Not specified',
'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified', 'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified',
'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified', 'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified',
'password': 'password':
@@ -416,16 +410,13 @@ class AI extends GetxController {
.passwordController .passwordController
.text .text
.toString(), .toString(),
'gender': EncryptionHelper.instance 'gender':
.encryptData(responseNonIdCardFront['gender'].toString()) ?? (responseNonIdCardFront['gender'].toString()) ?? 'Not specified',
'Not specified',
'license_type': 'Foreign', 'license_type': 'Foreign',
'national_number': EncryptionHelper.instance 'national_number':
.encryptData(responseNonIdCardFront['passport_no'].toString()) ?? (responseNonIdCardFront['passport_no'].toString()) ?? 'Not specified',
'Not specified', 'name_arabic':
'name_arabic': EncryptionHelper.instance (responseNonIdCardFront['full_name'].toString()) ?? 'Not specified',
.encryptData(responseNonIdCardFront['full_name'].toString()) ??
'Not specified',
'name_english': 'Not specified', 'name_english': 'Not specified',
'issue_date': 'issue_date':
responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified',
@@ -437,31 +428,23 @@ class AI extends GetxController {
? responseIdEgyptDriverLicense['license_categories'].join(', ') ? responseIdEgyptDriverLicense['license_categories'].join(', ')
: responseIdEgyptDriverLicense['license_categories']?.toString() ?? : responseIdEgyptDriverLicense['license_categories']?.toString() ??
'Not specified', 'Not specified',
'address': EncryptionHelper.instance 'address':
.encryptData(responseNonIdCardFront['address'].toString()) ?? (responseNonIdCardFront['address'].toString()) ?? 'Not specified',
'Not specified', 'card_id':
'card_id': EncryptionHelper.instance (responseNonIdCardFront['card_id'].toString()) ?? 'Not specified',
.encryptData(responseNonIdCardFront['card_id'].toString()) ?? 'occupation':
'Not specified', (responseNonIdCardBack['workStatus'].toString()) ?? 'Not specified',
'occupation': EncryptionHelper.instance
.encryptData(responseNonIdCardBack['workStatus'].toString()) ??
'Not specified',
'education': 'Not specified', 'education': 'Not specified',
'licenseIssueDate': 'licenseIssueDate':
responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified', responseNonIdCardBack['issueDate']?.toString() ?? 'Not specified',
'religion': EncryptionHelper.instance 'religion':
.encryptData(responseNonIdCardFront['country'].toString()) ?? (responseNonIdCardFront['country'].toString()) ?? 'Not specified',
'Not specified',
'status': 'yet', 'status': 'yet',
'birthdate': EncryptionHelper.instance 'birthdate':
.encryptData(responseNonIdCardFront['birthdate'].toString()) ?? (responseNonIdCardFront['birthdate'].toString()) ?? 'Not specified',
'Not specified',
'maritalStatus': 'Not specified', 'maritalStatus': 'Not specified',
'site': EncryptionHelper.instance 'site': (responseNonIdCardFront['address'].toString()) ?? 'Not specified',
.encryptData(responseNonIdCardFront['address'].toString()) ?? 'employmentType': (responseNonIdCardBack['residencyType'].toString()) ??
'Not specified',
'employmentType': EncryptionHelper.instance
.encryptData(responseNonIdCardBack['residencyType'].toString()) ??
'Not specified', 'Not specified',
}; };
@@ -517,32 +500,22 @@ class AI extends GetxController {
String hashedPassword = shortHash(pass); String hashedPassword = shortHash(pass);
var payload = { var payload = {
'first_name': EncryptionHelper.instance.encryptData( 'first_name': (responseIdEgyptDriverLicense['firstName'].toString()) ??
responseIdEgyptDriverLicense['firstName'].toString()) ??
'Not specified', 'Not specified',
'last_name': EncryptionHelper.instance.encryptData( 'last_name': (responseIdEgyptDriverLicense['lastName'].toString()) ??
responseIdEgyptDriverLicense['lastName'].toString()) ??
'Not specified',
'email': EncryptionHelper.instance
.encryptData(box.read(BoxName.emailDriver))
.toString() ??
'Not specified', 'Not specified',
'email': (box.read(BoxName.emailDriver)).toString() ?? 'Not specified',
'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified', 'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified',
'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified', 'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified',
'password': hashedPassword.toString(), 'password': hashedPassword.toString(),
'gender': EncryptionHelper.instance 'gender': (responseIdEgyptBack['gender'].toString()) ?? 'Not specified',
.encryptData(responseIdEgyptBack['gender'].toString()) ?? 'license_type':
(responseIdEgyptDriverLicense['license_type'].toString()) ??
'Not specified', 'Not specified',
'license_type': EncryptionHelper.instance.encryptData( 'national_number':
responseIdEgyptDriverLicense['license_type'].toString()) ?? (responseIdEgyptBack['nationalID'].toString()) ?? 'Not specified',
'Not specified', 'name_arabic': (responseIdEgyptDriverLicense['name_arabic'].toString()),
'national_number': EncryptionHelper.instance 'name_english': (responseIdEgyptDriverLicense['name_english'].toString()),
.encryptData(responseIdEgyptBack['nationalID'].toString()) ??
'Not specified',
'name_arabic': EncryptionHelper.instance
.encryptData(responseIdEgyptDriverLicense['name_arabic'].toString()),
'name_english': EncryptionHelper.instance
.encryptData(responseIdEgyptDriverLicense['name_english'].toString()),
'issue_date': responseIdEgyptDriverLicense['issue_date']?.toString() ?? 'issue_date': responseIdEgyptDriverLicense['issue_date']?.toString() ??
'Not specified', 'Not specified',
'expiry_date': responseIdEgyptDriverLicense['expiry_date']?.toString() ?? 'expiry_date': responseIdEgyptDriverLicense['expiry_date']?.toString() ??
@@ -552,35 +525,28 @@ class AI extends GetxController {
? responseIdEgyptDriverLicense['license_categories'].join(', ') ? responseIdEgyptDriverLicense['license_categories'].join(', ')
: responseIdEgyptDriverLicense['license_categories']?.toString() ?? : responseIdEgyptDriverLicense['license_categories']?.toString() ??
'Not specified', 'Not specified',
'address': EncryptionHelper.instance 'address':
.encryptData(responseIdEgyptFront['address'].toString()) ?? (responseIdEgyptFront['address'].toString()) ?? 'Not specified',
'Not specified', 'card_id':
'card_id': EncryptionHelper.instance (responseIdEgyptFront['card_id'].toString()) ?? 'Not specified',
.encryptData(responseIdEgyptFront['card_id'].toString()) ?? 'occupation':
'Not specified', (responseIdEgyptBack['occupation'].toString()) ?? 'Not specified',
'occupation': EncryptionHelper.instance 'education':
.encryptData(responseIdEgyptBack['occupation'].toString()) ?? (responseIdEgyptBack['occupation'].toString()) ?? 'Not specified',
'Not specified',
'education': EncryptionHelper.instance
.encryptData(responseIdEgyptBack['occupation'].toString()) ??
'Not specified',
'licenseIssueDate': 'licenseIssueDate':
responseIdEgyptDriverLicense['issue_date'].toString() ?? responseIdEgyptDriverLicense['issue_date'].toString() ??
'Not specified', 'Not specified',
'religion': EncryptionHelper.instance 'religion':
.encryptData(responseIdEgyptBack['religion'].toString()) ?? (responseIdEgyptBack['religion'].toString()) ?? 'Not specified',
'Not specified',
'status': 'yet', 'status': 'yet',
'birthdate': EncryptionHelper.instance.encryptData(extractDOB( 'birthdate': (extractDOB(
responseIdEgyptDriverLicense['national_number'].toString())), responseIdEgyptDriverLicense['national_number'].toString())),
'maritalStatus': EncryptionHelper.instance 'maritalStatus':
.encryptData(responseIdEgyptBack['maritalStatus'].toString()) ?? (responseIdEgyptBack['maritalStatus'].toString()) ?? 'Not specified',
'site': (responseIdEgyptDriverLicense['address'].toString()) ??
'Not specified', 'Not specified',
'site': EncryptionHelper.instance.encryptData( 'employmentType':
responseIdEgyptDriverLicense['address'].toString()) ?? (responseIdEgyptDriverLicense['employmentType'].toString()) ??
'Not specified',
'employmentType': EncryptionHelper.instance.encryptData(
responseIdEgyptDriverLicense['employmentType'].toString()) ??
'Not specified', 'Not specified',
}; };
@@ -624,8 +590,7 @@ class AI extends GetxController {
var res = await CRUD().post(link: AppLink.addCriminalDocuments, payload: { var res = await CRUD().post(link: AppLink.addCriminalDocuments, payload: {
"driverId": box.read(BoxName.driverID), "driverId": box.read(BoxName.driverID),
"IssueDate": responseCriminalRecordEgypt['IssueDate'], "IssueDate": responseCriminalRecordEgypt['IssueDate'],
"InspectionResult": EncryptionHelper.instance "InspectionResult": (responseCriminalRecordEgypt['InspectionResult']),
.encryptData(responseCriminalRecordEgypt['InspectionResult']),
}); });
if (res != 'failure') { if (res != 'failure') {
mySnackbarSuccess('uploaded sucssefuly'.tr); mySnackbarSuccess('uploaded sucssefuly'.tr);
@@ -639,19 +604,16 @@ class AI extends GetxController {
var res = await CRUD().post(link: AppLink.addRegisrationCar, payload: { var res = await CRUD().post(link: AppLink.addRegisrationCar, payload: {
'driverID': box.read(BoxName.driverID), 'driverID': box.read(BoxName.driverID),
'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(),
'car_plate': EncryptionHelper.instance.encryptData( 'car_plate': (responseIdCardDriverEgyptFront['car_plate'].toString()),
responseIdCardDriverEgyptFront['car_plate'].toString()),
'make': (responseIdCardDriverEgyptBack['make'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()),
'model': (responseIdCardDriverEgyptBack['model']), 'model': (responseIdCardDriverEgyptBack['model']),
'year': responseIdCardDriverEgyptBack['year'].toString(), 'year': responseIdCardDriverEgyptBack['year'].toString(),
'expiration_date': 'expiration_date':
responseIdCardDriverEgyptFront['LicenseExpirationDate'].toString(), responseIdCardDriverEgyptFront['LicenseExpirationDate'].toString(),
'color': responseIdCardDriverEgyptBack['color'], 'color': responseIdCardDriverEgyptBack['color'],
'owner': EncryptionHelper.instance 'owner': (responseIdCardDriverEgyptFront['owner']),
.encryptData(responseIdCardDriverEgyptFront['owner']),
'color_hex': responseIdCardDriverEgyptBack['color_hex'].toString(), 'color_hex': responseIdCardDriverEgyptBack['color_hex'].toString(),
'address': EncryptionHelper.instance 'address': (responseIdCardDriverEgyptFront['address'].toString()),
.encryptData(responseIdCardDriverEgyptFront['address'].toString()),
'displacement': responseIdCardDriverEgyptBack['engine'].toString(), 'displacement': responseIdCardDriverEgyptBack['engine'].toString(),
'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(),
'registration_date': 'registration_date':
@@ -669,8 +631,8 @@ class AI extends GetxController {
payload: { payload: {
'driverID': box.read(BoxName.driverID), 'driverID': box.read(BoxName.driverID),
'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(),
'car_plate': EncryptionHelper.instance.encryptData( 'car_plate':
responseIdCardDriverEgyptFront['car_plate'].toString()), (responseIdCardDriverEgyptFront['car_plate'].toString()),
'make': (responseIdCardDriverEgyptBack['make'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()),
'model': (responseIdCardDriverEgyptBack['model']), 'model': (responseIdCardDriverEgyptBack['model']),
'year': responseIdCardDriverEgyptBack['year'].toString(), 'year': responseIdCardDriverEgyptBack['year'].toString(),
@@ -678,12 +640,10 @@ class AI extends GetxController {
responseIdCardDriverEgyptFront['LicenseExpirationDate'] responseIdCardDriverEgyptFront['LicenseExpirationDate']
.toString(), .toString(),
'color': responseIdCardDriverEgyptBack['color'], 'color': responseIdCardDriverEgyptBack['color'],
'owner': EncryptionHelper.instance 'owner': (responseIdCardDriverEgyptFront['owner']),
.encryptData(responseIdCardDriverEgyptFront['owner']),
'color_hex': 'color_hex':
responseIdCardDriverEgyptBack['color_hex'].toString(), responseIdCardDriverEgyptBack['color_hex'].toString(),
'address': EncryptionHelper.instance.encryptData( 'address': (responseIdCardDriverEgyptFront['address'].toString()),
responseIdCardDriverEgyptFront['address'].toString()),
'displacement': 'displacement':
responseIdCardDriverEgyptBack['engine'].toString(), responseIdCardDriverEgyptBack['engine'].toString(),
'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(),
@@ -695,8 +655,8 @@ class AI extends GetxController {
payload: { payload: {
'driverID': box.read(BoxName.driverID), 'driverID': box.read(BoxName.driverID),
'vin': responseIdCardDriverEgyptBack['chassis'].toString(), 'vin': responseIdCardDriverEgyptBack['chassis'].toString(),
'car_plate': EncryptionHelper.instance.encryptData( 'car_plate':
responseIdCardDriverEgyptFront['car_plate'].toString()), (responseIdCardDriverEgyptFront['car_plate'].toString()),
'make': (responseIdCardDriverEgyptBack['make'].toString()), 'make': (responseIdCardDriverEgyptBack['make'].toString()),
'model': (responseIdCardDriverEgyptBack['model']), 'model': (responseIdCardDriverEgyptBack['model']),
'year': responseIdCardDriverEgyptBack['year'].toString(), 'year': responseIdCardDriverEgyptBack['year'].toString(),
@@ -704,12 +664,10 @@ class AI extends GetxController {
responseIdCardDriverEgyptFront['LicenseExpirationDate'] responseIdCardDriverEgyptFront['LicenseExpirationDate']
.toString(), .toString(),
'color': responseIdCardDriverEgyptBack['color'], 'color': responseIdCardDriverEgyptBack['color'],
'owner': EncryptionHelper.instance 'owner': (responseIdCardDriverEgyptFront['owner']),
.encryptData(responseIdCardDriverEgyptFront['owner']),
'color_hex': 'color_hex':
responseIdCardDriverEgyptBack['color_hex'].toString(), responseIdCardDriverEgyptBack['color_hex'].toString(),
'address': EncryptionHelper.instance.encryptData( 'address': (responseIdCardDriverEgyptFront['address'].toString()),
responseIdCardDriverEgyptFront['address'].toString()),
'displacement': 'displacement':
responseIdCardDriverEgyptBack['engine'].toString(), responseIdCardDriverEgyptBack['engine'].toString(),
'fuel': responseIdCardDriverEgyptBack['fuel'].toString(), 'fuel': responseIdCardDriverEgyptBack['fuel'].toString(),

View File

@@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:math';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.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/box_name.dart';
import '../../constant/links.dart'; import '../../constant/links.dart';
import '../../main.dart'; import '../../main.dart';
import '../../print.dart';
import '../home/captin/home_captain_controller.dart'; import '../home/captin/home_captain_controller.dart';
import '../home/payment/captain_wallet_controller.dart'; import '../home/payment/captain_wallet_controller.dart';
import 'crud.dart'; import 'crud.dart';
@@ -18,64 +18,37 @@ class LocationController extends GetxController {
late Location location = Location(); late Location location = Location();
bool isLoading = false; bool isLoading = false;
late double heading = 0; late double heading = 0;
late double accuracy = 0;
late double previousTime = 0; late double previousTime = 0;
late double latitude; late double latitude;
late double totalDistance = 0; late double totalDistance = 0;
late double longitude; late double longitude;
late DateTime time; late DateTime time;
late double speed = 0; late double speed = 0;
late double speedAccuracy = 0;
late double headingAccuracy = 0;
bool isActive = false; bool isActive = false;
late LatLng myLocation = LatLng(0, 0); // Default value late LatLng myLocation = LatLng(0, 0);
String totalPoints = '0'; String totalPoints = '0';
LocationData? get currentLocation => _currentLocation; LocationData? get currentLocation => _currentLocation;
Timer? _locationTimer; Timer? _locationTimer;
LatLng? _lastSavedPosition;
@override @override
void onInit() async { void onInit() async {
super.onInit(); super.onInit();
location = Location(); // Initialize the location object location = Location();
await location.changeSettings( await location.changeSettings(
accuracy: LocationAccuracy.high, accuracy: LocationAccuracy.high, interval: 5000, distanceFilter: 0);
interval: 5000, // 5 seconds await getLocation();
distanceFilter: 0); await startLocationUpdates();
await getLocation(); // Fetch the location immediately
await startLocationUpdates(); // Start periodic location updates
totalPoints = Get.put(CaptainWalletController()).totalPoints.toString(); totalPoints = Get.put(CaptainWalletController()).totalPoints.toString();
isActive = Get.put(HomeCaptainController()).isActive; 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) { String getLocationArea(double latitude, double longitude) {
final locations = box.read(BoxName.locationName) ?? []; final locations = box.read(BoxName.locationName) ?? [];
for (final location in locations) { for (final location in locations) {
final locationData = location as Map<String, dynamic>; final locationData = location as Map<String, dynamic>;
// Debugging: Print location data
// Convert string values to double
final minLatitude = final minLatitude =
double.tryParse(locationData['min_latitude'].toString()) ?? 0.0; double.tryParse(locationData['min_latitude'].toString()) ?? 0.0;
final maxLatitude = final maxLatitude =
@@ -85,21 +58,15 @@ class LocationController extends GetxController {
final maxLongitude = final maxLongitude =
double.tryParse(locationData['max_longitude'].toString()) ?? 0.0; 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 && if (latitude >= minLatitude &&
latitude <= maxLatitude && latitude <= maxLatitude &&
longitude >= minLongitude && longitude >= minLongitude &&
longitude <= maxLongitude) { longitude <= maxLongitude) {
box.write(BoxName.serverChosen, box.write(BoxName.serverChosen, (locationData['server_link']));
EncryptionHelper.instance.decryptData(locationData['server_link']));
// 'locationData----server_link: ${locationData['server_link']}');
return locationData['name']; return locationData['name'];
} }
} }
// Default case
box.write(BoxName.serverChosen, AppLink.seferCairoServer); box.write(BoxName.serverChosen, AppLink.seferCairoServer);
return 'Cairo'; return 'Cairo';
} }
@@ -108,10 +75,6 @@ class LocationController extends GetxController {
Future<void> startLocationUpdates() async { Future<void> startLocationUpdates() async {
if (box.read(BoxName.driverID) != null) { if (box.read(BoxName.driverID) != null) {
if (location == null) {
location = Location(); // Ensure location is initialized
}
_locationTimer = _locationTimer =
Timer.periodic(const Duration(seconds: 5), (timer) async { Timer.periodic(const Duration(seconds: 5), (timer) async {
try { try {
@@ -121,7 +84,7 @@ class LocationController extends GetxController {
if (isActive && double.parse(totalPoints) > -300) { if (isActive && double.parse(totalPoints) > -300) {
await getLocation(); await getLocation();
if (myLocation == null) return; if (myLocation.latitude == 0 && myLocation.longitude == 0) return;
String area = String area =
getLocationArea(myLocation.latitude, myLocation.longitude); getLocationArea(myLocation.latitude, myLocation.longitude);
@@ -132,22 +95,35 @@ class LocationController extends GetxController {
'longitude': myLocation.longitude.toString(), 'longitude': myLocation.longitude.toString(),
'heading': heading.toString(), 'heading': heading.toString(),
'speed': (speed * 3.6).toStringAsFixed(1), 'speed': (speed * 3.6).toStringAsFixed(1),
'distance': totalDistance == 0 && (speed * 3.6) < 5 'distance': totalDistance.toStringAsFixed(2),
? '0.0'
: totalDistance < 7
? totalDistance.toStringAsFixed(3)
: totalDistance.toStringAsFixed(1),
'status': box.read(BoxName.statusDriverLocation) ?? 'off', 'status': box.read(BoxName.statusDriverLocation) ?? 'off',
}; };
// 🔁 كل 5 ثواني - تحديث الموقع // ✅ تحديث للسيرفر
await CRUD().post( await CRUD().post(
link: link:
box.read(BoxName.serverChosen) + '/ride/location/update.php', box.read(BoxName.serverChosen) + '/ride/location/update.php',
payload: payload, 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++; _insertCounter++;
if (_insertCounter >= 12) { if (_insertCounter >= 12) {
_insertCounter = 0; _insertCounter = 0;
@@ -157,14 +133,14 @@ class LocationController extends GetxController {
); );
} }
// 🔄 تحديث الكاميرا // تحديث الكاميرا
Get.find<HomeCaptainController>() Get.find<HomeCaptainController>()
.mapHomeCaptainController .mapHomeCaptainController
?.animateCamera( ?.animateCamera(
CameraUpdate.newLatLng( CameraUpdate.newLatLng(
LatLng( LatLng(
Get.find<LocationController>().myLocation.latitude, myLocation.latitude,
Get.find<LocationController>().myLocation.longitude, myLocation.longitude,
), ),
), ),
); );
@@ -181,30 +157,18 @@ class LocationController extends GetxController {
} }
Future<void> getLocation() async { Future<void> getLocation() async {
if (location == null) { bool serviceEnabled = await location.serviceEnabled();
location = Location(); // تأكد من أن `Location` مهيأ
}
bool serviceEnabled;
PermissionStatus permissionGranted;
serviceEnabled = await location.serviceEnabled();
if (!serviceEnabled) { if (!serviceEnabled) {
serviceEnabled = await location.requestService(); serviceEnabled = await location.requestService();
if (!serviceEnabled) { if (!serviceEnabled) return;
return;
}
} }
permissionGranted = await location.hasPermission(); PermissionStatus permissionGranted = await location.hasPermission();
if (permissionGranted == PermissionStatus.denied) { if (permissionGranted == PermissionStatus.denied) {
permissionGranted = await location.requestPermission(); permissionGranted = await location.requestPermission();
if (permissionGranted != PermissionStatus.granted) { if (permissionGranted != PermissionStatus.granted) return;
return;
}
} }
/// **تجنب استدعاء `getLocation()` مباشرة على الـ Main Thread**
Future.delayed(Duration(milliseconds: 500), () async { Future.delayed(Duration(milliseconds: 500), () async {
try { try {
LocationData _locationData = await location.getLocation(); LocationData _locationData = await location.getLocation();
@@ -212,80 +176,27 @@ class LocationController extends GetxController {
myLocation = myLocation =
LatLng(_locationData.latitude!, _locationData.longitude!); LatLng(_locationData.latitude!, _locationData.longitude!);
} else { } else {
myLocation = LatLng(0, 0); // Default value myLocation = LatLng(0, 0);
} }
speed = _locationData.speed ?? 0; speed = _locationData.speed ?? 0;
heading = _locationData.heading ?? 0; heading = _locationData.heading ?? 0;
if (Get.find<HomeCaptainController>().rideId == 'rideId') {
if (previousTime > 0) {
double distance = calculateDistanceInKmPerHour(
previousTime, _locationData.time, speed);
totalDistance += distance;
}
previousTime = _locationData.time ?? 0;
}
update(); update();
} catch (e) { } catch (e) {
print("Error getting location: $e"); print("Error getting location: $e");
} }
}); });
} }
// Future<void> getLocation() async {
// if (location == null) {
// location = Location(); // Ensure location is initialized
// }
// bool serviceEnabled; double _calculateDistanceInMeters(LatLng start, LatLng end) {
// PermissionStatus permissionGranted; const p = 0.017453292519943295;
final a = 0.5 -
// serviceEnabled = await location.serviceEnabled(); cos((end.latitude - start.latitude) * p) / 2 +
// if (!serviceEnabled) { cos(start.latitude * p) *
// serviceEnabled = await location.requestService(); cos(end.latitude * p) *
// if (!serviceEnabled) { (1 - cos((end.longitude - start.longitude) * p)) /
// return; 2;
// } return 12742 * 1000 * asin(sqrt(a)); // meters
// }
// 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<HomeCaptainController>().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;
} }
} }

View File

@@ -75,9 +75,7 @@ class LogOutController extends GetxController {
confirm: MyElevatedButton( confirm: MyElevatedButton(
title: 'Delete'.tr, title: 'Delete'.tr,
onPressed: () async { onPressed: () async {
if (checkTxtController.text == if (checkTxtController.text == (box.read(BoxName.nameDriver))) {
EncryptionHelper.instance
.decryptData(box.read(BoxName.nameDriver))) {
// deletecaptainAccount(); // deletecaptainAccount();
var id = await checkBeforeDelete(); var id = await checkBeforeDelete();

View File

@@ -197,8 +197,8 @@ class DeviceHelper {
// Generate and return the encrypted fingerprint // Generate and return the encrypted fingerprint
final String fingerprint = '${deviceId}_${deviceModel}_$osVersion'; final String fingerprint = '${deviceId}_${deviceModel}_$osVersion';
print(EncryptionHelper.instance.encryptData(fingerprint)); // print(EncryptionHelper.instance.encryptData(fingerprint));
return EncryptionHelper.instance.encryptData(fingerprint); return (fingerprint);
} catch (e) { } catch (e) {
throw Exception('Failed to generate device fingerprint'); throw Exception('Failed to generate device fingerprint');
} }
@@ -247,15 +247,15 @@ class SecurityHelper {
await box.write('isTampered', isTampered); // Use await await box.write('isTampered', isTampered); // Use await
await box.write('isJailBroken', isJailBroken); // Use await await box.write('isJailBroken', isJailBroken); // Use await
// debugPrint("Security Check Results:"); debugPrint("Security Check Results:");
// debugPrint("isNotTrust: $isNotTrust"); debugPrint("isNotTrust: $isNotTrust");
// debugPrint("isJailBroken: $isJailBroken"); debugPrint("isJailBroken: $isJailBroken");
// debugPrint("isRealDevice: $isRealDevice"); debugPrint("isRealDevice: $isRealDevice");
// debugPrint("isOnExternalStorage: $isOnExternalStorage"); debugPrint("isOnExternalStorage: $isOnExternalStorage");
// debugPrint("checkForIssues: $checkForIssues"); debugPrint("checkForIssues: $checkForIssues");
// debugPrint("isDevMode: $isDevMode"); debugPrint("isDevMode: $isDevMode");
// debugPrint("isTampered: $isTampered"); debugPrint("isTampered: $isTampered");
// debugPrint("Bundle ID: $bundleId"); // Print the bundle ID debugPrint("Bundle ID: $bundleId"); // Print the bundle ID
// Check for security risks and potentially show a warning // Check for security risks and potentially show a warning
if (isJailBroken || isRealDevice == false || isTampered) { if (isJailBroken || isRealDevice == false || isTampered) {

View File

@@ -40,6 +40,7 @@ class AppInitializer {
Future<void> initializeApp() async { Future<void> initializeApp() async {
if (box.read(BoxName.jwt) == null) { if (box.read(BoxName.jwt) == null) {
Log.print('box.read(BoxName.jwt): ${box.read(BoxName.jwt)}');
await LoginDriverController().getJWT(); await LoginDriverController().getJWT();
} else { } else {
bool isTokenExpired = JwtDecoder.isExpired(X bool isTokenExpired = JwtDecoder.isExpired(X
@@ -74,16 +75,11 @@ class AppInitializer {
links = List<Map<String, dynamic>>.from(jsonDecode(res)['message']); links = List<Map<String, dynamic>>.from(jsonDecode(res)['message']);
await box.write(BoxName.locationName, links); await box.write(BoxName.locationName, links);
await box.write(BoxName.basicLink, await box.write(BoxName.basicLink, (links[0]['server_link']));
EncryptionHelper.instance.decryptData(links[0]['server_link'])); await box.write(links[2]['name'], (links[2]['server_link']));
await box.write(links[2]['name'], await box.write(links[1]['name'], (links[3]['server_link']));
EncryptionHelper.instance.decryptData(links[2]['server_link'])); await box.write(links[3]['name'], (links[1]['server_link']));
await box.write(links[1]['name'], await box.write(BoxName.paymentLink, (links[4]['server_link']));
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']));
} }
} catch (e) {} } catch (e) {}
} }

View File

@@ -27,16 +27,9 @@ class SmsEgyptController extends GetxController {
} }
} }
Future<dynamic> sendSmsEgypt(String phone, otp) async { Future<dynamic> sendSmsEgypt(String phone) async {
String sender = await getSender(); String sender = await getSender();
var body = jsonEncode({ var body = jsonEncode({"receiver": "2$phone"});
"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 res = await http.post( var res = await http.post(
Uri.parse(AppLink.sendSms), Uri.parse(AppLink.sendSms),
@@ -46,19 +39,16 @@ class SmsEgyptController extends GetxController {
if (jsonDecode(res.body)['message'].toString() != "Success") { if (jsonDecode(res.body)['message'].toString() != "Success") {
await CRUD().post(link: AppLink.updatePhoneInvalidSMS, payload: { await CRUD().post(link: AppLink.updatePhoneInvalidSMS, payload: {
"phone_number": EncryptionHelper.instance.encryptData( "phone_number":
'+2${Get.find<RegisterCaptainController>().phoneController.text}') ('+2${Get.find<RegisterCaptainController>().phoneController.text}')
}); });
box.write( box.write(BoxName.phoneDriver,
BoxName.phoneDriver, ('+2${Get.find<RegisterCaptainController>().phoneController.text}'));
EncryptionHelper.instance.encryptData(
'+2${Get.find<RegisterCaptainController>().phoneController.text}'));
box.write(BoxName.phoneVerified, '1'); box.write(BoxName.phoneVerified, '1');
await Get.put(LoginDriverController()).loginWithGoogleCredential( await Get.put(LoginDriverController()).loginWithGoogleCredential(
box.read(BoxName.driverID).toString(), box.read(BoxName.driverID).toString(),
EncryptionHelper.instance (box.read(BoxName.emailDriver).toString()),
.encryptData(box.read(BoxName.emailDriver).toString()),
); );
} else { } else {
Get.defaultDialog( Get.defaultDialog(

View File

@@ -419,10 +419,8 @@ class ImageController extends GetxController {
await uploadImage( await uploadImage(
compressedImage, compressedImage,
{ {
'driverID': EncryptionHelper.instance 'driverID':
.decryptData(box.read(BoxName.driverID)) ?? (box.read(BoxName.driverID)) ?? (box.read(BoxName.passengerID)),
EncryptionHelper.instance
.decryptData(box.read(BoxName.passengerID)),
'imageType': imageType 'imageType': imageType
}, },
link, link,
@@ -461,8 +459,7 @@ class ImageController extends GetxController {
'image', 'image',
stream, stream,
length, length,
filename: filename: '${(box.read(BoxName.driverID))}.jpg',
'${EncryptionHelper.instance.decryptData(box.read(BoxName.driverID))}.jpg',
), ),
); );
data.forEach((key, value) { data.forEach((key, value) {

View File

@@ -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<List<Map<String, dynamic>>> getAllData() async {
return await sql.getAllData(TableName.behavior);
}
var isLoading = false.obs;
var overallScore = 100.0.obs;
var lastTrips = [].obs;
Future<void> 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<Map<String, dynamic>> 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<void> 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<void> 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
}
}

View File

@@ -31,8 +31,7 @@ class HelpController extends GetxController {
update(); update();
var res = await CRUD().post(link: AppLink.addhelpCenter, payload: { var res = await CRUD().post(link: AppLink.addhelpCenter, payload: {
'driverID': box.read(BoxName.driverID).toString(), 'driverID': box.read(BoxName.driverID).toString(),
'helpQuestion': 'helpQuestion': (helpQuestionController.text)
EncryptionHelper.instance.encryptData(helpQuestionController.text)
}); });
var d = jsonDecode(res); var d = jsonDecode(res);
isLoading = false; isLoading = false;

View File

@@ -198,9 +198,7 @@ class HomeCaptainController extends GetxController {
controller.animateCamera( controller.animateCamera(
CameraUpdate.newLatLng(Get.find<LocationController>().myLocation), CameraUpdate.newLatLng(Get.find<LocationController>().myLocation),
); );
} else { } else {}
print("Controller is null, cannot proceed.");
}
} }
void savePeriod(Duration period) { void savePeriod(Duration period) {
@@ -299,7 +297,6 @@ class HomeCaptainController extends GetxController {
// List<Map<String, dynamic>> results = // List<Map<String, dynamic>> results =
// await sql.getCustomQuery(customQuery); // await sql.getCustomQuery(customQuery);
// countRefuse = results[0]['count'].toString(); // countRefuse = results[0]['count'].toString();
// print(countRefuse);
// update(); // update();
// if (int.parse(countRefuse) > 3) { // if (int.parse(countRefuse) > 3) {
// box.write(BoxName.statusDriverLocation, 'on'); // box.write(BoxName.statusDriverLocation, 'on');
@@ -324,34 +321,34 @@ class HomeCaptainController extends GetxController {
addToken() async { addToken() async {
String? fingerPrint = await storage.read(key: BoxName.fingerPrint); 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)), 'token': (box.read(BoxName.tokenDriver)),
'captain_id': (box.read(BoxName.driverID)).toString(), 'captain_id': (box.read(BoxName.driverID)).toString(),
'fingerPrint': (fingerPrint).toString() 'fingerPrint': (fingerPrint).toString()
}); });
await CRUD().post( // CRUD().post(
link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php", // link: "${AppLink.seferAlexandriaServer}/ride/firebase/addDriver.php",
payload: { // payload: {
'token': box.read(BoxName.tokenDriver), // 'token': box.read(BoxName.tokenDriver),
'captain_id': box.read(BoxName.driverID).toString(), // 'captain_id': box.read(BoxName.driverID).toString(),
'fingerPrint': (fingerPrint).toString() // 'fingerPrint': (fingerPrint).toString()
}); // });
await CRUD().post( // CRUD().post(
link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php", // link: "${AppLink.seferGizaServer}/ride/firebase/addDriver.php",
payload: { // payload: {
'token': box.read(BoxName.tokenDriver), // 'token': box.read(BoxName.tokenDriver),
'captain_id': box.read(BoxName.driverID).toString(), // 'captain_id': box.read(BoxName.driverID).toString(),
'fingerPrint': (fingerPrint).toString() // 'fingerPrint': (fingerPrint).toString()
}); // });
await CRUD().post( await CRUD().postWallet(
link: "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php", link: "${AppLink.seferPaymentServer}/ride/firebase/addDriver.php",
payload: { payload: {
'token': box.read(BoxName.tokenDriver), 'token': box.read(BoxName.tokenDriver),
'captain_id': box.read(BoxName.driverID).toString(), 'captain_id': box.read(BoxName.driverID).toString(),
'fingerPrint': (fingerPrint).toString() 'fingerPrint': (fingerPrint).toString()
}); });
MapDriverController().driverCallPassenger(); // MapDriverController().driverCallPassenger();
// box.write(BoxName.statusDriverLocation, 'off'); // box.write(BoxName.statusDriverLocation, 'off');
} }

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; 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/controller/home/captin/home_captain_controller.dart';
import 'package:sefer_driver/views/widgets/mydialoug.dart'; import 'package:sefer_driver/views/widgets/mydialoug.dart';
import 'package:bubble_head/bubble.dart'; import 'package:bubble_head/bubble.dart';
@@ -183,9 +184,7 @@ class MapDriverController extends GetxController {
await CRUD().post( await CRUD().post(
link: "${AppLink.seferCairoServer}/ride/rides/update.php", link: "${AppLink.seferCairoServer}/ride/rides/update.php",
payload: { payload: {
"id": EncryptionHelper.instance "id": (rideId).toString(), // Convert to String
.encryptData(rideId)
.toString(), // Convert to String
"status": 'CancelFromDriverAfterApply' "status": 'CancelFromDriverAfterApply'
}); });
CRUD().postFromDialogue( CRUD().postFromDialogue(
@@ -193,28 +192,22 @@ class MapDriverController extends GetxController {
payload: { payload: {
'driver_id': box.read(BoxName.driverID).toString(), 'driver_id': box.read(BoxName.driverID).toString(),
// box.read(BoxName.driverID).toString(), // box.read(BoxName.driverID).toString(),
'order_id': 'order_id': (rideId).toString(),
EncryptionHelper.instance.encryptData(rideId).toString(),
'status': 'CancelFromDriverAfterApply' 'status': 'CancelFromDriverAfterApply'
}); });
await CRUD().post( await CRUD().post(
link: link:
"${AppLink.seferCairoServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", "${AppLink.seferCairoServer}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php",
payload: { payload: {
"order_id": "order_id": (rideId).toString(),
EncryptionHelper.instance.encryptData(rideId).toString(),
"driver_id": box.read(BoxName.driverID).toString(), "driver_id": box.read(BoxName.driverID).toString(),
"status": 'reject After Applied', "status": 'reject After Applied',
"notes": EncryptionHelper.instance "notes": (cancelTripCotroller.text).toString()
.encryptData(cancelTripCotroller.text)
.toString()
}); });
if (AppLink.endPoint != AppLink.seferCairoServer) { if (AppLink.endPoint != AppLink.seferCairoServer) {
CRUD() CRUD()
.post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { .post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: {
"id": EncryptionHelper.instance "id": (rideId).toString(), // Convert to String
.encryptData(rideId)
.toString(), // Convert to String
"status": 'CancelFromDriverAfterApply' "status": 'CancelFromDriverAfterApply'
}); });
CRUD().postFromDialogue( CRUD().postFromDialogue(
@@ -222,26 +215,22 @@ class MapDriverController extends GetxController {
payload: { payload: {
'driver_id': box.read(BoxName.driverID).toString(), 'driver_id': box.read(BoxName.driverID).toString(),
// box.read(BoxName.driverID).toString(), // box.read(BoxName.driverID).toString(),
'order_id': 'order_id': (rideId).toString(),
EncryptionHelper.instance.encryptData(rideId).toString(),
'status': 'CancelFromDriverAfterApply' 'status': 'CancelFromDriverAfterApply'
}); });
CRUD().post( CRUD().post(
link: link:
"${AppLink.endPoint}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php", "${AppLink.endPoint}/ride/cancelRide/addCancelTripFromDriverAfterApplied.php",
payload: { payload: {
"order_id": "order_id": (rideId).toString(),
EncryptionHelper.instance.encryptData(rideId).toString(),
"driver_id": box.read(BoxName.driverID).toString(), "driver_id": box.read(BoxName.driverID).toString(),
"status": 'reject After Applied', "status": 'reject After Applied',
"notes": EncryptionHelper.instance "notes": (cancelTripCotroller.text).toString()
.encryptData(cancelTripCotroller.text)
.toString()
}); });
} }
sql.insertData({ sql.insertData({
'order_id': EncryptionHelper.instance.encryptData(rideId), 'order_id': (rideId),
'created_at': DateTime.now().toString(), 'created_at': DateTime.now().toString(),
'driver_id': box.read(BoxName.driverID).toString(), 'driver_id': box.read(BoxName.driverID).toString(),
}, TableName.driverOrdersRefuse); }, TableName.driverOrdersRefuse);
@@ -312,13 +301,13 @@ class MapDriverController extends GetxController {
await CRUD().post( await CRUD().post(
link: "${AppLink.seferCairoServer}/ride/rides/update.php", link: "${AppLink.seferCairoServer}/ride/rides/update.php",
payload: { payload: {
'id': EncryptionHelper.instance.encryptData(rideId), 'id': (rideId),
'driverGoToPassengerTime': DateTime.now().toString(), 'driverGoToPassengerTime': DateTime.now().toString(),
'status': 'Applied' 'status': 'Applied'
}); });
if (AppLink.endPoint != AppLink.seferCairoServer) { if (AppLink.endPoint != AppLink.seferCairoServer) {
CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: { CRUD().post(link: "${AppLink.endPoint}/ride/rides/update.php", payload: {
'id': EncryptionHelper.instance.encryptData(rideId), 'id': (rideId),
'driverGoToPassengerTime': DateTime.now().toString(), 'driverGoToPassengerTime': DateTime.now().toString(),
'status': 'Applied' 'status': 'Applied'
}); });
@@ -533,35 +522,35 @@ class MapDriverController extends GetxController {
: (distanceBetweenDriverAndPassengerWhenConfirm * .06) + : (distanceBetweenDriverAndPassengerWhenConfirm * .06) +
(5 * .06); //for Eygpt other like jordan .06 per minute (5 * .06); //for Eygpt other like jordan .06 per minute
await CRUD().post(link: AppLink.updateRides, payload: { await CRUD().post(link: AppLink.updateRides, payload: {
'id': EncryptionHelper.instance.encryptData(rideId), 'id': (rideId),
'rideTimeStart': DateTime.now().toString(), 'rideTimeStart': DateTime.now().toString(),
'status': 'CancelAfterWait', 'status': 'CancelAfterWait',
}); });
CRUD().post(link: AppLink.addDriverOrder, payload: { CRUD().post(link: AppLink.addDriverOrder, payload: {
'driver_id': box.read(BoxName.driverID).toString(), 'driver_id': box.read(BoxName.driverID).toString(),
'order_id': EncryptionHelper.instance.encryptData(rideId).toString(), 'order_id': (rideId).toString(),
'status': 'CancelAfterWait' 'status': 'CancelAfterWait'
}); });
if (AppLink.endPoint != AppLink.seferCairoServer) { if (AppLink.endPoint != AppLink.seferCairoServer) {
CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: {
'id': EncryptionHelper.instance.encryptData(rideId), 'id': (rideId),
'rideTimeStart': DateTime.now().toString(), 'rideTimeStart': DateTime.now().toString(),
'status': 'CancelAfterWait', 'status': 'CancelAfterWait',
}); });
CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: { CRUD().post(link: "${AppLink.endPoint}/rides/update.php", payload: {
'driver_id': box.read(BoxName.driverID).toString(), 'driver_id': box.read(BoxName.driverID).toString(),
'order_id': EncryptionHelper.instance.encryptData(rideId).toString(), 'order_id': (rideId).toString(),
'status': 'CancelAfterWait' 'status': 'CancelAfterWait'
}); });
} }
var paymentTokenWait = var paymentTokenWait =
await generateTokenDriver(costOfWaiting5Minute.toString()); await generateTokenDriver(costOfWaiting5Minute.toString());
var res = await CRUD().post(link: AppLink.addDrivePayment, payload: { var res = await CRUD().post(link: AppLink.addDrivePayment, payload: {
'rideId': EncryptionHelper.instance.encryptData(rideId), 'rideId': (rideId),
'amount': (costOfWaiting5Minute.toString()), 'amount': (costOfWaiting5Minute.toString()),
'payment_method': 'wait-cancel', 'payment_method': 'wait-cancel',
'passengerID': EncryptionHelper.instance.encryptData(passengerId), 'passengerID': (passengerId),
'token': paymentTokenWait, 'token': paymentTokenWait,
'driverID': box.read(BoxName.driverID).toString(), 'driverID': box.read(BoxName.driverID).toString(),
}); });
@@ -569,7 +558,7 @@ class MapDriverController extends GetxController {
await generateTokenDriver(costOfWaiting5Minute.toString()); await generateTokenDriver(costOfWaiting5Minute.toString());
var res1 = var res1 =
await CRUD().post(link: AppLink.addDriversWalletPoints, payload: { await CRUD().post(link: AppLink.addDriversWalletPoints, payload: {
'paymentID': 'rideId${EncryptionHelper.instance.encryptData(rideId)}', 'paymentID': 'rideId${(rideId)}',
'amount': (costOfWaiting5Minute).toStringAsFixed(0), 'amount': (costOfWaiting5Minute).toStringAsFixed(0),
'paymentMethod': 'wait', 'paymentMethod': 'wait',
'token': paymentTokenWait1, 'token': paymentTokenWait1,
@@ -585,7 +574,7 @@ class MapDriverController extends GetxController {
var paymentTokenWaitPassenger1 = var paymentTokenWaitPassenger1 =
await generateTokenPassenger((costOfWaiting5Minute * -1).toString()); await generateTokenPassenger((costOfWaiting5Minute * -1).toString());
await CRUD().post(link: AppLink.addPassengersWallet, payload: { await CRUD().post(link: AppLink.addPassengersWallet, payload: {
'passenger_id': EncryptionHelper.instance.encryptData(passengerId), 'passenger_id': (passengerId),
'balance': (costOfWaiting5Minute * -1).toString(), 'balance': (costOfWaiting5Minute * -1).toString(),
'token': paymentTokenWaitPassenger1, 'token': paymentTokenWaitPassenger1,
}); });
@@ -671,13 +660,13 @@ class MapDriverController extends GetxController {
// Prepare data for API calls // Prepare data for API calls
final nowString = DateTime.now().toString(); final nowString = DateTime.now().toString();
final basePayload = { final basePayload = {
'id': EncryptionHelper.instance.encryptData(rideId), 'id': (rideId),
'rideTimeFinish': nowString, 'rideTimeFinish': nowString,
'status': 'Finished', 'status': 'Finished',
'price': totalCost, 'price': totalCost,
}; };
final driverOrderPayload = { final driverOrderPayload = {
'order_id': EncryptionHelper.instance.encryptData(rideId.toString()), 'order_id': (rideId.toString()),
'status': 'Finished' 'status': 'Finished'
}; };
@@ -710,7 +699,7 @@ class MapDriverController extends GetxController {
paymentToken = await generateTokenPassenger( paymentToken = await generateTokenPassenger(
((-1) * double.parse(paymentAmount)).toString()); ((-1) * double.parse(paymentAmount)).toString());
futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: { futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: {
'passenger_id': EncryptionHelper.instance.encryptData(passengerId), 'passenger_id': (passengerId),
'balance': ((-1) * double.parse(paymentAmount)).toString(), 'balance': ((-1) * double.parse(paymentAmount)).toString(),
'token': paymentToken, 'token': paymentToken,
})); }));
@@ -718,11 +707,11 @@ class MapDriverController extends GetxController {
paymentToken = await generateTokenDriver(paymentAmount.toString()); paymentToken = await generateTokenDriver(paymentAmount.toString());
futures.add(CRUD().post(link: AppLink.addDrivePayment, payload: { futures.add(CRUD().post(link: AppLink.addDrivePayment, payload: {
'rideId': EncryptionHelper.instance.encryptData(rideId), 'rideId': (rideId),
'amount': paymentAmount, 'amount': paymentAmount,
'payment_method': 'payment_method':
walletChecked == 'true' ? "${paymentMethod}Ride" : paymentMethod, walletChecked == 'true' ? "${paymentMethod}Ride" : paymentMethod,
'passengerID': EncryptionHelper.instance.encryptData(passengerId), 'passengerID': (passengerId),
'token': paymentToken, 'token': paymentToken,
'driverID': box.read(BoxName.driverID).toString(), 'driverID': box.read(BoxName.driverID).toString(),
})); }));
@@ -731,7 +720,7 @@ class MapDriverController extends GetxController {
final paymentToken1 = await generateTokenPassenger( final paymentToken1 = await generateTokenPassenger(
((-1) * double.parse(passengerWalletBurc)).toString()); ((-1) * double.parse(passengerWalletBurc)).toString());
futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: { futures.add(CRUD().post(link: AppLink.addPassengersWallet, payload: {
'passenger_id': EncryptionHelper.instance.encryptData(passengerId), 'passenger_id': (passengerId),
'token': paymentToken1, 'token': paymentToken1,
'balance': ((-1) * double.parse(passengerWalletBurc)).toString() 'balance': ((-1) * double.parse(passengerWalletBurc)).toString()
})); }));
@@ -741,7 +730,7 @@ class MapDriverController extends GetxController {
final paymentToken2 = final paymentToken2 =
await generateTokenDriver((pointsSubtraction).toStringAsFixed(0)); await generateTokenDriver((pointsSubtraction).toStringAsFixed(0));
futures.add(CRUD().post(link: AppLink.addDriversWalletPoints, payload: { futures.add(CRUD().post(link: AppLink.addDriversWalletPoints, payload: {
'paymentID': 'rideId${EncryptionHelper.instance.encryptData(rideId)}', 'paymentID': 'rideId${(rideId)}',
'amount': (pointsSubtraction).toStringAsFixed(0), 'amount': (pointsSubtraction).toStringAsFixed(0),
'paymentMethod': paymentMethod, 'paymentMethod': paymentMethod,
'token': paymentToken2, 'token': paymentToken2,
@@ -750,6 +739,7 @@ class MapDriverController extends GetxController {
// Wait for all independent API calls to complete // Wait for all independent API calls to complete
await Future.wait(futures); await Future.wait(futures);
Get.put(DriverBehaviorController()).sendSummaryToServer(driverId, rideId);
// Send notification (this likely depends on previous steps) // Send notification (this likely depends on previous steps)
FirebaseMessagesController().sendNotificationToDriverMAP( FirebaseMessagesController().sendNotificationToDriverMAP(
@@ -898,7 +888,7 @@ class MapDriverController extends GetxController {
var res = await CRUD().get( var res = await CRUD().get(
link: "${AppLink.endPoint}/ride/driver_order/getOrderCancelStatus.php", link: "${AppLink.endPoint}/ride/driver_order/getOrderCancelStatus.php",
payload: { payload: {
'order_id': EncryptionHelper.instance.encryptData(rideId), 'order_id': (rideId),
}); //.then((value) { }); //.then((value) {
var response = jsonDecode(res); var response = jsonDecode(res);
canelString = response['data']['status']; canelString = response['data']['status'];

View File

@@ -32,6 +32,7 @@ class DriverWalletHistoryController extends GetxController {
)); ));
} }
archive = jsonDecode(res)['message']; archive = jsonDecode(res)['message'];
isLoading = false; isLoading = false;
update(); update();
} }

View File

@@ -157,11 +157,9 @@ class PaymentController extends GetxController {
paymentIntentClientSecret: clientSecret, paymentIntentClientSecret: clientSecret,
merchantDisplayName: AppInformation.appName, merchantDisplayName: AppInformation.appName,
billingDetails: BillingDetails( billingDetails: BillingDetails(
name: EncryptionHelper.instance name: (box.read(BoxName.nameDriver)),
.decryptData(box.read(BoxName.nameDriver)),
email: (box.read(BoxName.emailDriver)), email: (box.read(BoxName.emailDriver)),
phone: EncryptionHelper.instance phone: (box.read(BoxName.phoneDriver)),
.decryptData(box.read(BoxName.phoneDriver)),
address: Address( address: Address(
city: 'city', city: 'city',
country: box.read(BoxName.countryCode), //'United States' country: box.read(BoxName.countryCode), //'United States'

View File

@@ -133,13 +133,10 @@ class PaymobManager extends GetxController {
"amount_cents": amount, "amount_cents": amount,
"currency": currency, "currency": currency,
"billing_data": { "billing_data": {
"first_name": "first_name": (box.read(BoxName.nameDriver)),
EncryptionHelper.instance.decryptData(box.read(BoxName.nameDriver)), "last_name": (box.read(BoxName.lastNameDriver)),
"last_name": EncryptionHelper.instance
.decryptData(box.read(BoxName.lastNameDriver)),
"email": (box.read(BoxName.emailDriver)), "email": (box.read(BoxName.emailDriver)),
"phone_number": EncryptionHelper.instance "phone_number": (box.read(BoxName.phoneDriver)),
.decryptData(box.read(BoxName.phoneDriver)),
"apartment": "NA", "apartment": "NA",
"floor": "NA", "floor": "NA",
"street": "NA", "street": "NA",

View File

@@ -227,8 +227,7 @@ class PaymobBillingData {
"email": (box.read(BoxName.emailDriver)), "email": (box.read(BoxName.emailDriver)),
"first_name": box.read(BoxName.nameDriver), "first_name": box.read(BoxName.nameDriver),
"last_name": box.read(BoxName.nameDriver), "last_name": box.read(BoxName.nameDriver),
"phone_number": "phone_number": (box.read(BoxName.phoneDriver)),
EncryptionHelper.instance.decryptData(box.read(BoxName.phoneDriver)),
"apartment": apartment ?? "NA", "apartment": apartment ?? "NA",
"floor": floor ?? "NA", "floor": floor ?? "NA",
"building": building ?? "NA", "building": building ?? "NA",

View File

@@ -43,9 +43,7 @@ class RatingController extends GetxController {
? box.read(BoxName.nameDriver) ? box.read(BoxName.nameDriver)
: box.read(BoxName.name), : box.read(BoxName.name),
"email": (box.read(BoxName.emailDriver)).toString(), "email": (box.read(BoxName.emailDriver)).toString(),
"phone": EncryptionHelper.instance "phone": (box.read(BoxName.phoneDriver)).toString(),
.decryptData(box.read(BoxName.phoneDriver))
.toString(),
"userId": box.read(BoxName.driverID), "userId": box.read(BoxName.driverID),
"userType": "driver", "userType": "driver",
"rating": rating.toString(), "rating": rating.toString(),

View File

@@ -183,7 +183,7 @@ class _MyAppState extends State<MyApp> {
String? key = (await storage.read(key: BoxName.payMobApikey)); String? key = (await storage.read(key: BoxName.payMobApikey));
if (key != null) { if (key != null) {
String? apiKey = EncryptionHelper.instance.decryptData(key); String? apiKey = (key);
if (apiKey != null) { if (apiKey != null) {
PaymobPayment.instance.initialize( PaymobPayment.instance.initialize(
// Use .instance // Use .instance

View File

@@ -72,6 +72,16 @@ class DbSql {
faceDetectTimes INTEGER 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(''' await db.execute('''
CREATE TABLE IF NOT EXISTS ${TableName.captainNotification}( CREATE TABLE IF NOT EXISTS ${TableName.captainNotification}(
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,

View File

@@ -95,17 +95,17 @@ class AiPage extends StatelessWidget {
Row( Row(
children: [ children: [
Text( Text(
'${'Name'.tr} :${EncryptionHelper.instance.decryptData(contentController.responseMap['first_name'])}', '${'Name'.tr} :${(contentController.responseMap['first_name'])}',
style: AppStyle.subtitle, style: AppStyle.subtitle,
), ),
Text( Text(
' ${EncryptionHelper.instance.decryptData(contentController.responseMap['last_name'])}', ' ${(contentController.responseMap['last_name'])}',
style: AppStyle.subtitle, style: AppStyle.subtitle,
), ),
], ],
), ),
Text( 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, style: AppStyle.title,
), ),
Text( Text(
@@ -121,7 +121,7 @@ class AiPage extends StatelessWidget {
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${'National Number'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['id'])}', '${'National Number'.tr}: ${(contentController.responseMap['id'])}',
style: AppStyle.title, style: AppStyle.title,
), ),
// Image.memory( // Image.memory(
@@ -131,7 +131,7 @@ class AiPage extends StatelessWidget {
// ), // ),
]), ]),
Text( Text(
'${'Address'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['address'])}', '${'Address'.tr}: ${(contentController.responseMap['address'])}',
style: AppStyle.title, style: AppStyle.title,
), ),
Row( Row(

View File

@@ -322,8 +322,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[0]['prompt'].toString()),
ai.prompts[0]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'driver_license'); //egypt 'driver_license'); //egypt
}, },
@@ -335,32 +334,30 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor), const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'License Type'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['license_type'])}', '${'License Type'.tr}: ${(ai.responseIdEgyptDriverLicense['license_type'])}',
style: AppStyle.title, style: AppStyle.title,
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'National Number'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['national_number'])}', '${'National Number'.tr}: ${(ai.responseIdEgyptDriverLicense['national_number'])}',
style: AppStyle.title.copyWith( style: AppStyle.title.copyWith(
color: EncryptionHelper.instance.decryptData( color: (ai.responseIdEgyptDriverLicense[
ai.responseIdEgyptDriverLicense[
'national_number']) == 'national_number']) ==
EncryptionHelper.instance.decryptData( (ai.responseIdEgyptBack['nationalID'])
ai.responseIdEgyptBack['nationalID'])
? AppColor.greenColor ? AppColor.greenColor
: AppColor.redColor), : AppColor.redColor),
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Name (Arabic)'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['name_arabic'])}', '${'Name (Arabic)'.tr}: ${(ai.responseIdEgyptDriverLicense['name_arabic'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Name (English)'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['name_english'])}', '${'Name (English)'.tr}: ${(ai.responseIdEgyptDriverLicense['name_english'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptDriverLicense['address'])}', '${'Address'.tr}: ${(ai.responseIdEgyptDriverLicense['address'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
@@ -386,11 +383,8 @@ class EgyptCardAI extends StatelessWidget {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI((ai.prompts[0]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'driver_license'); //egypt
.decryptData(ai.prompts[0]['prompt'].toString()),
AppLink.uploadEgypt,
'driver_license'); //egypt
}, },
child: Column( child: Column(
children: [ children: [
@@ -443,8 +437,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[1]['prompt'].toString()),
ai.prompts[1]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'id_back'); //egypt 'id_back'); //egypt
}, },
@@ -457,20 +450,18 @@ class EgyptCardAI extends StatelessWidget {
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
// Assuming these keys exist in ai.responseIdEgyptFront // Assuming these keys exist in ai.responseIdEgyptFront
Text( Text(
'${'National ID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptBack['nationalID'])}', '${'National ID'.tr}: ${(ai.responseIdEgyptBack['nationalID'])}',
style: AppStyle.title.copyWith( style: AppStyle.title.copyWith(
color: EncryptionHelper.instance.decryptData( color: (ai.responseIdEgyptDriverLicense[
ai.responseIdEgyptDriverLicense[
'national_number']) == 'national_number']) ==
EncryptionHelper.instance.decryptData( (ai.responseIdEgyptBack['nationalID'])
ai.responseIdEgyptBack['nationalID'])
? AppColor.greenColor ? AppColor.greenColor
: AppColor.redColor), : AppColor.redColor),
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( 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), const SizedBox(height: 8.0),
Row( Row(
@@ -480,7 +471,7 @@ class EgyptCardAI extends StatelessWidget {
'${'Issue Date'.tr}: ${ai.responseIdEgyptBack['issueDate']}', // Assuming 'issueDate' exists '${'Issue Date'.tr}: ${ai.responseIdEgyptBack['issueDate']}', // Assuming 'issueDate' exists
), ),
Text( 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( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI((ai.prompts[1]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'id_back'); //egypt
.decryptData(ai.prompts[1]['prompt'].toString()),
AppLink.uploadEgypt,
'id_back'); //egypt
}, },
child: Column( child: Column(
children: [ children: [
@@ -571,8 +559,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[7]['prompt'].toString()),
ai.prompts[7]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'non_id_back'); 'non_id_back');
}, },
@@ -584,16 +571,16 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor), const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Country'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['country'])}', '${'Country'.tr}: ${(ai.responseNonIdCardBack['country'])}',
style: AppStyle.title, style: AppStyle.title,
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Residency Type'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['residencyType'])}', '${'Residency Type'.tr}: ${(ai.responseNonIdCardBack['residencyType'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Work Status'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardBack['workStatus'])}', '${'Work Status'.tr}: ${(ai.responseNonIdCardBack['workStatus'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Row( Row(
@@ -603,7 +590,7 @@ class EgyptCardAI extends StatelessWidget {
'${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}', '${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}',
), ),
Text( 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( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI((ai.prompts[7]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'non_id_back');
.decryptData(ai.prompts[7]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_back');
}, },
child: Column( child: Column(
children: [ children: [
@@ -670,8 +654,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[2]['id_front'].toString()),
ai.prompts[2]['id_front'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'id_front'); //egypt 'id_front'); //egypt
}, },
@@ -688,10 +671,10 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${'First Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['first_name'])}', '${'First Name'.tr}: ${(ai.responseIdEgyptFront['first_name'])}',
), ),
Text( 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, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${'Full Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['full_name'])}', '${'Full Name'.tr}: ${(ai.responseIdEgyptFront['full_name'])}',
), ),
Text( Text(
'${'DOB'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['dob'])}', '${'DOB'.tr}: ${(ai.responseIdEgyptFront['dob'])}',
), ),
], ],
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdEgyptFront['address'])}', '${'Address'.tr}: ${(ai.responseIdEgyptFront['address'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
// Text( // Text(
@@ -726,11 +709,8 @@ class EgyptCardAI extends StatelessWidget {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI((ai.prompts[2]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'id_front'); //egypt
.decryptData(ai.prompts[2]['prompt'].toString()),
AppLink.uploadEgypt,
'id_front'); //egypt
}, },
child: Column( child: Column(
children: [ children: [
@@ -773,8 +753,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[6]['prompt'].toString()),
ai.prompts[6]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'non_id_front'); 'non_id_front');
}, },
@@ -786,7 +765,7 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor), const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Full Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['full_name'])}', '${'Full Name'.tr}: ${(ai.responseNonIdCardFront['full_name'])}',
style: AppStyle.title, style: AppStyle.title,
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
@@ -794,10 +773,10 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${'Passport No'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['passport_no'])}', '${'Passport No'.tr}: ${(ai.responseNonIdCardFront['passport_no'])}',
), ),
Text( 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, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${'Country'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['country'])}', '${'Country'.tr}: ${(ai.responseNonIdCardFront['country'])}',
), ),
Text( Text(
'${'Gender'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['gender'])}', '${'Gender'.tr}: ${(ai.responseNonIdCardFront['gender'])}',
), ),
], ],
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Birth Date'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['birthdate'])}', '${'Birth Date'.tr}: ${(ai.responseNonIdCardFront['birthdate'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseNonIdCardFront['address'])}', '${'Address'.tr}: ${(ai.responseNonIdCardFront['address'])}',
), ),
], ],
), ),
@@ -829,11 +808,8 @@ class EgyptCardAI extends StatelessWidget {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI((ai.prompts[6]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'non_id_front');
.decryptData(ai.prompts[6]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_front');
}, },
child: Column( child: Column(
children: [ children: [
@@ -884,8 +860,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
ai.allMethodForAI( ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[3]['prompt'].toString()),
ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'car_front'); 'car_front');
}, },
@@ -899,15 +874,15 @@ class EgyptCardAI extends StatelessWidget {
// Removed Make, Model, etc. as they are not available // Removed Make, Model, etc. as they are not available
Text( Text(
'${'Plate Number'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['car_plate'])}', '${'Plate Number'.tr}: ${(ai.responseIdCardDriverEgyptFront['car_plate'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Owner Name'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['owner'])}', '${'Owner Name'.tr}: ${(ai.responseIdCardDriverEgyptFront['owner'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'Address'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseIdCardDriverEgyptFront['address'])}', '${'Address'.tr}: ${(ai.responseIdCardDriverEgyptFront['address'])}',
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Row( Row(
@@ -931,11 +906,8 @@ class EgyptCardAI extends StatelessWidget {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
ai.allMethodForAI( ai.allMethodForAI((ai.prompts[3]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'car_front');
.decryptData(ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt,
'car_front');
}, },
child: Column( child: Column(
children: [ children: [
@@ -1003,8 +975,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
ai.allMethodForAI( ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[4]['prompt'].toString()),
ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'car_back'); 'car_back');
}, },
@@ -1076,11 +1047,8 @@ class EgyptCardAI extends StatelessWidget {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
ai.allMethodForAI( ai.allMethodForAI((ai.prompts[4]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'car_back');
.decryptData(ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
}, },
child: Column( child: Column(
children: [ children: [
@@ -1123,8 +1091,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton( IconButton(
onPressed: () async { onPressed: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance.decryptData( (ai.prompts[5]['prompt'].toString()),
ai.prompts[5]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'criminalRecord', 'criminalRecord',
); );
@@ -1140,19 +1107,16 @@ class EgyptCardAI extends StatelessWidget {
'${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'), '${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'FullName'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', '${'FullName'.tr}: ${(ai.responseCriminalRecordEgypt['FullName'])}',
style: AppStyle.title.copyWith( style: AppStyle.title.copyWith(
color: EncryptionHelper.instance.decryptData(ai color: (ai.responseCriminalRecordEgypt['FullName']) ==
.responseCriminalRecordEgypt['FullName']) == (ai.responseIdEgyptDriverLicense['name_arabic'])
EncryptionHelper.instance.decryptData(
ai.responseIdEgyptDriverLicense[
'name_arabic'])
? AppColor.greenColor ? AppColor.greenColor
: AppColor.redColor), : AppColor.redColor),
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'NationalID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), '${'NationalID'.tr}: ${(ai.responseCriminalRecordEgypt['NationalID'])}'),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'),
@@ -1165,8 +1129,7 @@ class EgyptCardAI extends StatelessWidget {
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
await ai.allMethodForAI( await ai.allMethodForAI(
EncryptionHelper.instance (ai.prompts[5]['prompt'].toString()),
.decryptData(ai.prompts[5]['prompt'].toString()),
AppLink.uploadEgypt, AppLink.uploadEgypt,
'criminalRecord', 'criminalRecord',
); );

View File

@@ -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/colors.dart';
import 'package:sefer_driver/constant/style.dart'; import 'package:sefer_driver/constant/style.dart';
import 'package:sefer_driver/controller/auth/captin/register_captin_controller.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:sefer_driver/views/widgets/mycircular.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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'; import '../../../Rate/rate_app_page.dart';
class SmsSignupEgypt extends StatelessWidget { class SmsSignupEgypt extends StatelessWidget {

View File

@@ -36,7 +36,7 @@ class CriminalDocumemtPage extends StatelessWidget {
? MyElevatedButton( ? MyElevatedButton(
title: 'Next'.tr, title: 'Next'.tr,
onPressed: () async { onPressed: () async {
if (EncryptionHelper.instance.decryptData(controller if ((controller
.responseCriminalRecordEgypt['FullName']) != .responseCriminalRecordEgypt['FullName']) !=
box.read(BoxName.nameArabic)) //todo get from server 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 Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'InspectionResult'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['InspectionResult'])}'), '${'InspectionResult'.tr}: ${(ai.responseCriminalRecordEgypt['InspectionResult'])}'),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'FullName'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['FullName'])}', '${'FullName'.tr}: ${(ai.responseCriminalRecordEgypt['FullName'])}',
style: AppStyle.title.copyWith( style: AppStyle.title.copyWith(
color: EncryptionHelper.instance.decryptData(ai color: (ai.responseCriminalRecordEgypt['FullName']) ==
.responseCriminalRecordEgypt['FullName']) == (ai.responseIdEgyptDriverLicense['name_arabic'])
EncryptionHelper.instance.decryptData(
ai.responseIdEgyptDriverLicense[
'name_arabic'])
? AppColor.greenColor ? AppColor.greenColor
: AppColor.redColor), : AppColor.redColor),
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'NationalID'.tr}: ${EncryptionHelper.instance.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'), '${'NationalID'.tr}: ${(ai.responseCriminalRecordEgypt['NationalID'])}'),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'), '${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'),

View File

@@ -390,8 +390,7 @@ class InviteScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
EncryptionHelper.instance.decryptData( (controller.driverInvitationData[index]['invitorName']),
controller.driverInvitationData[index]['invitorName']),
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@@ -447,8 +446,7 @@ class InviteScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
EncryptionHelper.instance (invitation['passengerName'])
.decryptData(invitation['passengerName'])
.toString(), // Handle null or missing data .toString(), // Handle null or missing data
style: const TextStyle( style: const TextStyle(
fontSize: 17, fontSize: 17,
@@ -510,9 +508,7 @@ class InviteScreen extends StatelessWidget {
_buildStatItem( _buildStatItem(
context, context,
"Active Users".tr, "Active Users".tr,
EncryptionHelper.instance (controller.driverInvitationDataToPassengers[0]['passengerName'])
.decryptData(controller.driverInvitationDataToPassengers[0]
['passengerName'])
.toString(), .toString(),
), ),
], ],

View File

@@ -336,8 +336,7 @@ class LoginCaptin extends StatelessWidget {
box box
.read(BoxName.driverID) .read(BoxName.driverID)
.toString(), .toString(),
EncryptionHelper.instance (box
.encryptData(box
.read(BoxName.emailDriver) .read(BoxName.emailDriver)
.toString()), .toString()),
); );

View File

@@ -1,8 +1,10 @@
import 'dart:io'; import 'dart:io';
import 'package:sefer_driver/constant/box_name.dart'; 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/controller/firebase/local_notification.dart';
import 'package:sefer_driver/main.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:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart';
@@ -50,7 +52,7 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', // '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}',
// ''); // '');
NotificationController1().showNotification( NotificationController1().showNotification(
'Sefer Driver'.tr, 'Tripz Driver'.tr,
'${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}', '${'Please wait'.tr} $minutesLeft ${"minutes before trying again.".tr}',
'ding', 'ding',
''); '');
@@ -93,46 +95,26 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
) )
: const SizedBox(), : const SizedBox(),
// : const SizedBox(), // : const SizedBox(),
// AnimatedContainer( AnimatedContainer(
// duration: const Duration(microseconds: 200), duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic, width: controller.widthMapTypeAndTraffic,
// decoration: BoxDecoration( decoration: BoxDecoration(
// color: AppColor.secondaryColor, color: AppColor.secondaryColor,
// border: Border.all(color: AppColor.blueColor), border: Border.all(color: AppColor.blueColor),
// borderRadius: BorderRadius.circular(15)), borderRadius: BorderRadius.circular(15)),
// child: Builder(builder: (context) { child: Builder(builder: (context) {
// return IconButton( return IconButton(
// onPressed: () async { onPressed: () async {
// print("Current working directory: ${Directory.current.path}"); print(box.read(BoxName.paymentLink));
// print( },
// "pubspec.yaml exists here?: ${await File('${Directory.current.path}/pubspec.yaml').exists()}"); icon: const Icon(
FontAwesome5.grin_tears,
// try { size: 29,
// await LingoHunter.extractAndCreateTranslationFiles( color: AppColor.blueColor,
// 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,
// ),
// );
// }),
// ),
const SizedBox( const SizedBox(
height: 5, height: 5,

View File

@@ -327,25 +327,7 @@ class OrderSpeedRequest extends StatelessWidget {
'driver_id': box.read(BoxName.driverID), 'driver_id': box.read(BoxName.driverID),
}); });
} }
if (res != "failure") {
// .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") {
box.write(BoxName.statusDriverLocation, 'on'); box.write(BoxName.statusDriverLocation, 'on');
orderRequestController.changeApplied(); orderRequestController.changeApplied();
List<String> bodyToPassenger = [ List<String> bodyToPassenger = [
@@ -357,33 +339,29 @@ class OrderSpeedRequest extends StatelessWidget {
.sendNotificationToPassengerToken( .sendNotificationToPassengerToken(
'Accepted Ride', 'Accepted Ride',
'your ride is applied'.tr, 'your ride is applied'.tr,
// arguments['DriverList'][9].toString(),
orderRequestController orderRequestController
.arguments['DriverList'][9] .arguments['DriverList'][9]
.toString(), .toString(),
// box.read(BoxName.tokenDriver).toString(),
bodyToPassenger, bodyToPassenger,
'start.wav'); 'start.wav');
await CRUD().postFromDialogue( CRUD().postFromDialogue(
link: AppLink.addDriverOrder, link: AppLink.addDriverOrder,
payload: { payload: {
'driver_id': orderRequestController.myList[6] 'driver_id': orderRequestController.myList[6]
.toString(), .toString(),
// box.read(BoxName.driverID).toString(),
'order_id': 'order_id':
orderRequestController.body.toString(), orderRequestController.body.toString(),
'status': 'Apply' 'status': 'Apply'
}); });
await CRUD().postFromDialogue( // CRUD().postFromDialogue(
link: AppLink.addDriverOrder, // link: AppLink.addDriverOrder,
payload: { // payload: {
'driver_id': orderRequestController.myList[6] // 'driver_id': orderRequestController.myList[6]
.toString(), // .toString(),
// box.read(BoxName.driverID).toString(), // 'order_id': orderRequestController.myList[16]
'order_id': orderRequestController.myList[16] // .toString(),
.toString(), // 'status': 'Apply'
'status': 'Apply' // });
});
if (AppLink.endPoint != AppLink.seferCairoServer) { if (AppLink.endPoint != AppLink.seferCairoServer) {
CRUD().post( CRUD().post(
@@ -402,9 +380,6 @@ class OrderSpeedRequest extends StatelessWidget {
} }
Get.back(); Get.back();
// 'Arguments passed to PassengerLocationMapPage:');
// 'Payment Method: ${orderRequestController.myList[13] == 'true' ? 'visa' : 'cash'}');
box.write(BoxName.rideArguments, { box.write(BoxName.rideArguments, {
'passengerLocation': 'passengerLocation':
orderRequestController.myList[0].toString(), orderRequestController.myList[0].toString(),
@@ -473,6 +448,21 @@ class OrderSpeedRequest extends StatelessWidget {
}); });
Get.to(() => PassengerLocationMapPage(), Get.to(() => PassengerLocationMapPage(),
arguments: box.read(BoxName.rideArguments)); 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(); // Get.back();

View File

@@ -195,7 +195,7 @@ class WalletCaptain extends StatelessWidget {
_buildPromoCard( _buildPromoCard(
title: 'Morning Promo'.tr, title: 'Morning Promo'.tr,
timePromo: 'Morning Promo', timePromo: 'Morning Promo',
count: int.parse(captainWalletController count: (captainWalletController
.walletDate['message'][0] .walletDate['message'][0]
['morning_count']), ['morning_count']),
maxCount: 5, maxCount: 5,
@@ -208,7 +208,7 @@ class WalletCaptain extends StatelessWidget {
_buildPromoCard( _buildPromoCard(
timePromo: 'Afternoon Promo', timePromo: 'Afternoon Promo',
title: 'Afternoon Promo'.tr, title: 'Afternoon Promo'.tr,
count: int.parse(captainWalletController count: (captainWalletController
.walletDate['message'][0] .walletDate['message'][0]
['afternoon_count']), ['afternoon_count']),
maxCount: 5, maxCount: 5,

View File

@@ -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"),
],
),
),
);
},
),
],
),
);
}),
);
}
}

View File

@@ -74,9 +74,7 @@ class CaptainsCars extends StatelessWidget {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 4), horizontal: 4),
child: Text( child: Text(
EncryptionHelper.instance (car['car_plate']),
.decryptData(
car['car_plate']),
style: AppStyle.title, style: AppStyle.title,
), ),
), ),

View File

@@ -94,11 +94,8 @@ GetBuilder<AI> egyptCarLicenceFront() {
style: AppStyle.headTitle2), style: AppStyle.headTitle2),
IconButton( IconButton(
onPressed: () async { onPressed: () async {
ai.allMethodForAI( ai.allMethodForAI((ai.prompts[3]['prompt'].toString()),
EncryptionHelper.instance.decryptData( AppLink.uploadEgypt, 'car_front');
ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt,
'car_front');
}, },
icon: const Icon(Icons.refresh), icon: const Icon(Icons.refresh),
), ),
@@ -142,12 +139,8 @@ GetBuilder<AI> egyptCarLicenceFront() {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
ai.allMethodForAINewCar( ai.allMethodForAINewCar((ai.prompts[3]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt1, 'car_front', 'carId'); //todo
.decryptData(ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt1,
'car_front',
'carId'); //todo
}, },
child: Column( child: Column(
children: [ children: [
@@ -213,11 +206,8 @@ GetBuilder<AI> egyptCarLicenceBack() {
Text('Vehicle Details Back'.tr, style: AppStyle.headTitle2), Text('Vehicle Details Back'.tr, style: AppStyle.headTitle2),
IconButton( IconButton(
onPressed: () async { onPressed: () async {
ai.allMethodForAI( ai.allMethodForAI((ai.prompts[4]['prompt'].toString()),
EncryptionHelper.instance.decryptData( AppLink.uploadEgypt, 'car_back');
ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
}, },
icon: const Icon(Icons.refresh), icon: const Icon(Icons.refresh),
), ),
@@ -286,11 +276,8 @@ GetBuilder<AI> egyptCarLicenceBack() {
return Card( return Card(
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
ai.allMethodForAI( ai.allMethodForAI((ai.prompts[4]['prompt'].toString()),
EncryptionHelper.instance AppLink.uploadEgypt, 'car_back');
.decryptData(ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
}, },
child: Column( child: Column(
children: [ children: [

View File

@@ -10,6 +10,7 @@ import 'package:sefer_driver/controller/profile/captain_profile_controller.dart'
import 'package:sefer_driver/views/widgets/my_scafold.dart'; import 'package:sefer_driver/views/widgets/my_scafold.dart';
import '../my_wallet/walet_captain.dart'; import '../my_wallet/walet_captain.dart';
import 'behavior_page.dart';
import 'captains_cars.dart'; import 'captains_cars.dart';
class ProfileCaptain extends StatelessWidget { class ProfileCaptain extends StatelessWidget {
@@ -33,7 +34,10 @@ class ProfileCaptain extends StatelessWidget {
Material( Material(
elevation: 2, elevation: 2,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
child: InkWell( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
InkWell(
onTap: () async { onTap: () async {
addBankCodeEgypt(captainWalletController); addBankCodeEgypt(captainWalletController);
}, },
@@ -47,6 +51,22 @@ class ProfileCaptain extends StatelessWidget {
), ),
), ),
), ),
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), const SizedBox(height: 15),
Row( Row(
@@ -73,40 +93,27 @@ class ProfileCaptain extends StatelessWidget {
driverId: driverId:
controller.captainProfileData['driverID'] ?? controller.captainProfileData['driverID'] ??
'', '',
name: EncryptionHelper.instance.decryptData( name:
(controller.captainProfileData[ '${((controller.captainProfileData['first_name']) ?? '')} ${((controller.captainProfileData['last_name']) ?? '')}',
'first_name']) ?? phoneNumber:
'') + (controller.captainProfileData['phone']) ??
' ' +
EncryptionHelper.instance.decryptData(
(controller.captainProfileData[
'last_name']) ??
''),
phoneNumber: EncryptionHelper.instance
.decryptData(controller
.captainProfileData['phone']) ??
'', '',
email: EncryptionHelper.instance.decryptData( email: (controller.captainProfileData['email']) ??
controller.captainProfileData['email']) ??
'', '',
birthdate: EncryptionHelper.instance.decryptData( birthdate: (controller
controller
.captainProfileData['birthdate']) ?? .captainProfileData['birthdate']) ??
'', '',
gender: EncryptionHelper.instance.decryptData( gender:
controller (controller.captainProfileData['gender']) ??
.captainProfileData['gender']) ??
'', '',
education: EncryptionHelper.instance.decryptData( education: (controller
controller
.captainProfileData['education']) ?? .captainProfileData['education']) ??
'', '',
carMake: carMake:
controller.captainProfileData['make'] ?? '', controller.captainProfileData['make'] ?? '',
carModel: carModel:
controller.captainProfileData['model'] ?? '', controller.captainProfileData['model'] ?? '',
carPlate: EncryptionHelper.instance.decryptData( carPlate: (controller
controller
.captainProfileData['car_plate']) ?? .captainProfileData['car_plate']) ??
'', '',
carColor: carColor:

View File

@@ -251,20 +251,7 @@ class RideAvailableCard extends StatelessWidget {
// .then((value) { // .then((value) {
// var json = jsonDecode(res); // var json = jsonDecode(res);
if (res == "failure") { 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") {
List<String> bodyToPassenger = [ List<String> bodyToPassenger = [
box.read(BoxName.driverID).toString(), box.read(BoxName.driverID).toString(),
box.read(BoxName.nameDriver).toString(), box.read(BoxName.nameDriver).toString(),
@@ -273,7 +260,6 @@ class RideAvailableCard extends StatelessWidget {
box.write(BoxName.statusDriverLocation, 'on'); box.write(BoxName.statusDriverLocation, 'on');
await CRUD().postFromDialogue(link: AppLink.addDriverOrder, payload: { await CRUD().postFromDialogue(link: AppLink.addDriverOrder, payload: {
'driver_id': box.read(BoxName.driverID), 'driver_id': box.read(BoxName.driverID),
// box.read(BoxName.driverID).toString(),
'order_id': rideInfo['id'], 'order_id': rideInfo['id'],
'status': 'Apply' 'status': 'Apply'
}); });
@@ -349,6 +335,19 @@ class RideAvailableCard extends StatelessWidget {
'carType': rideInfo['carType'].toString(), 'carType': rideInfo['carType'].toString(),
'kazan': Get.find<HomeCaptainController>().kazan.toString(), 'kazan': Get.find<HomeCaptainController>().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();
});
} }
} }
} }