This commit is contained in:
Hamza-Ayed
2024-07-06 19:24:10 +03:00
21 changed files with 262 additions and 275 deletions

147
.env
View File

@@ -42,98 +42,57 @@ payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
keyOfApp=nqryjp@1737wqnmqqsjyzjujljksvceiXrXlBl
a= q
b= x
c= f
d= y
e= j
f= u
g= k
h= w
i= o
j= e
k= g
l= r
m= n
n= b
o= i
p= v
q= a
r= l
s= z
t= c
u= h
v= p
w= t
x= d
y= s
z= m
A= Q
B= X
C= F
D= Y
E= J
F= U
G= K
H= W
I= O
J= E
K= G
L= R
M= N
N= B
O= I
P= V
Q= A
R= L
S= Z
T= C
U= H
V= P
W= T
X= D
Y= S
Z= M
#
#basicAuthCredentials= q9XDwNb2SWHU9nq0tIqWYIN+bvXt54jPVrBFOZUstsnk3Ndz2BOSI3wLC3GKMuqE
#basicCompareFaces= ZK2RkvTEAi0ihtR0GuJ+H2bmU1OVn5V/f9NLVoKZZdE=
#basicCompareFacesURL= ar0jvB0naim05FOurHErUfYAeinsHtAN899iUikg7tbJr+6xxOGCuKWOCHe5IvhNgCGRu0J93Kp81vuPDx4unmHE09ltyI+q6VxB/MS7qzc=
#accountSIDTwillo= Jg38nDPhemTsfLr6Lw/2FkBqXpgwsDREDKNZz4dFX8ZlhfR+c4SfLJw+5Kc9eCw9VIFDaAuONiCxy4EFZlTuDg==
#serverAPI= ylOIFlS8ojjZXo/KU+c9XfElPMf81wsrXfbJffd2vY8BIoAA+KPEgln5nhZm/NAChi96Fq/hxqX5OJM4oWFR0WhMwfMIP5kwdoHWtoJnaYDhyvLeEopljDHXxlMmavnzYmJPDJFO7RYC9bOZO/7ce9j5r9OApZFHCRE3xEiT11rvnc11nAS6FUND+DSqHixBpgRpaGzT6oI7V+/s/vY9UYyv1/87NDJCQcRdwqGNVxw=
#mapAPIKEY= tGW+KMGKtB6WNfuREjWHd1XT7O62xtleFECqMAAlugDro1IAeTZIulIQ3E8VZpWTdrY9VaxsP9HWpquGgn3FDw==
#twilloRecoveryCode= avovNMV1kWHcJCvEDCo2JB3YFuh7k7jFO/mQl9RPIf2dcqWYLgXlQJgYb1py7iMf
#authTokenTwillo= yX+P/HtnhF/zXqiR6dTmCNJkKqueZ/w6tRsj5shUtxmuvImHIFipy9Ncui4xDJ3qWYqpTJtK2E1s2MK0v4Ffng==
#chatGPTkey= eEFPdATgADNXrFigOePxRbJMcD+6WnO0p50QwNbTX42VarY2dSXKHZ7Vc0PlnSbvLTbYcmkeUKkOiZYh/t0gYP7heniFJ7CmGz50zvCbfAU=
#transactionCloude= fK6CI/ZhL5LrOdIm3l9JfStKlUYm1XcuFG/QYht8UeiNamZnRp4UsjUzs4+HNClOGsE5sGht3T6QMnE65e4lwwtBsXaDm+0Dlb6AcA6rMC8=
#visionApi= dXV9rtlwEBg7TrXCmPIc395+jpxaw/258dEBNfFUfbVQuJP+kWnFdzNzIyzFwjIGDAIgoE95uynR2/eNJOTY0A==
#chatGPTkeySefer= 2ZEe3pK2HOWRtEzTB7FjODCbB954UNnvb/L2x3lKsc9NCILNzgCffzcdqEzPs+lHCeolKViweygvgR7fIwC6z3cJJap7t+SPQ1noP5i2pRg=
#chatGPTkeySeferNew= KtZfNq+kEbVjU4eZVl+aexBKNybgr8jQvz/CZJQcH/CebLeFdkdfkJx43QA7UtH8oNH2hLTcrtqSKAXT0wYwShEG+Gt8pvgCx8xT+ViQrTE=
#secretKey= PNwYqtlLcDMlmKbzy3++wSPC/XB9WX2t+zfrJDsYz7LXD5jVFUGs3CXUF227VDGPe1sk10yMGLM4E818969GF7/qhZjLzwF8qXLAEpUhtGniQ+undfoiJw2vNfB4lXWKgQQC4N+/6KPb7zSZx8o8yVlvL/5iZiuf1LYhUhjJmJE=
#stripe_publishableKe= gyXxuOp+vaGcRTTBohZeTaK7HEhpNUVvWGcBNABhzHu125y6ftOwvf1Z8fYlfaG/ysClJpqfxBU8+RulI7KhtJM5mVrmALFiypv/6IlkACsundM6zkbxQGHzjfQdrfkdFZF00fpYjOI/3P/znZIlKGYYLmdxUqF3chAfYDet1/I=
#llamaKey= a3oCdxMeaKjatKyLQEnPMLqFmfLe9mCGRofsROVQ6NF7SCqxOt7h2A/KvdYWGBM42SxNTuWIq5+UsnPulqKbd3yVTRnG+Lx0rxPa+9mc48frICnl+hz6CSmJjOjDhHnE
#serverPHP= bWjMqX8G7gUyLhrQ85zAXSe2YLffF62PaPHyYK1WcQTPTjcj2+sRswzOU1XPVu+n
#cohere= SvRbfrRc+Gyyy20otHDz1cNNcQpoMyLm+TIkTyfZI7vnxkgsEYiGdYOJ0Punkz6JdY4qa3B0fu2OCZ7NOa6Y1w==
#claudeAiAPI= oO1ZcIFPBgin9gQs5vNT/oDs0KpJDVnjwXqKjCAABoezFxLUpAMINvSNruW7DFU2mbsjpJTDwpTzddsMCIPqi7AjzBpW6X1ddxYX+ZPuJ55Kymj5KvTHAwYYhW7F3l9sOjrtODWwhH6uGTNfh3Ftz531Xb2Qr5d3rKDC4H5tkFM=
#payPalClientId= VmMsEn1Kz4wCqCnWOm+XoUE2k2c7wA9y2cHqe303GSR9HfnuDqpbcijBYDs5EGYsYF/t68M1xlAp1OX+oXSN3RSsjKelJmbbreg8YtjTeErMVOSGHrsOHRY7hqlUYvmN8DUTlRTFvIdTX+RafY2LiA==
#payPalClientIdLive= qA7WnFU1WANkp1tFx/FsAQg11xw3MT9+29KiviNZ4/CJZ8HjXA1oaiXP9jFCdw9O5lIsxu77kwcHyyj7jazRo40gHt09LOiQx3B9TGyYU8xZKyrTgDYzaAN8uGtzh+im+O3uX9e8dB6hP3KjoEiWAw==
#payPalSecret= /X5bZua3pBhTWc+lM0Soj0B9DmZCAd7d6ptl7Odqvl6VM2WXsxLTEj+quzlqWsw5EMohotzv+vsgOaak7MnSFj/GiH3dsLrCDKRbKmMtO8B7y01sTxHM5KJBThdn00kdPhCrRupHGBQ2UVn7+Pvk+g==
#payPalSecretLive= IgD5ztFUiGNpKNn9tQ1BUrxJixFEa6qOD2rTlrMHWddgEFJfSnwguYk+ims2Fjh/Yyq6k7blq3rNw8QxvqYx8Zddn3JBkjJy+CuCO8PD87yE3Cq16lAYpKBUONx1L2JhfOvnpHmlKsItNp3VlO2hnA==
#geminiApi= bm0hPbzgZ4fYIiQIt+q01JMoinEwOanaTTP+w6VVa5ycvURUWzRNUGuxkw8SddBODHMsmw3m6QMDhWRV2JldWQ==
#geminiApiMasa= NivzPDHz8vLzsd+1NlCTdr7z0Q7QF20nXv64sc31KV5itWz+jy/wXfJKBk3FUkGws0ASOiO3bPcsS4ZpTDt/Gg==
#agoraAppId= VFN6+inSX0lGchoJJyyregcmoz7IRc4WFIvY0E7DSoSMOWy87h64PplAeR5gb0bdsSdBoNlKHVMqdiAiHf6rAA==
#agoraAppCertificate= K5mK/SbgSybbq1n8T8fwDjg+KTCBHaXFztmslJ6IVuEol+rAGhPN3i9zsvtQrHbKzhEQPvCL4Bga0UL9qAVZFA==
#usernamePayMob= RB5cSc0HLCKF47EJQgq+9aGwjc9M6aCBV/gC0h/f+gY=
#passwordPayMob= WDGpip/MF/k8K2bq+A6GYP40z9JrCkzMx5V6J+lzJ6Q=
#integrationIdPayMob= R1xVYlVQwYslnZ9J7XSgcguCuQSJalFSlBNnVP6mMbE=
#payMobApikey= g3vzSYRbIw9WOB+d48x5mt3CGMfGuuH8zFL6ane7b8mi8k2Jx571o3/3A93bAMj9cdW8yY0a1z1zgjqHoPNbBWhr5G4P5EySachi05ZQ5c25zXi/hO1RgNF9lA4+d5l4vpOqkNqglAD+t940Fg3Pa5UC5qhQNwsAz6OMFpRZoD87vdPRqX2ovzGnXy5OuljFuU0NO7tswQ7ECgZAROT5zGQQRksjbhjay3hrngENl6XUsdY8OczkBeKSkXD8T7RGKmsUDnn0C14N7ag8mCPponfs1+DvfG5jl5tYTCX07E4suvwbnx6rRrJXX8BrlC4u9f1ZPwjOJr1CVaWzxcOMLe4/FNhbqC93rBs1SB3zWYS8wjd+YD+Yzyhew2g0yodZ
#integrationIdPayMobWallet= dFjz/piJiilWVXHtZveA0wgU7d7evsQ9WhPsCTwFkT8=
#ocpApimSubscriptionKey= xg4WM1WHVuPBRV9W7xLC0TFRhjgnFuvXBIRddkWcIl7gJAoexceuFlHN7472eL9ZMs6xetYgAHkjsb95QBoF/g==
#smsPasswordEgypt= uvn2Wnr+Ze35cXGfznnb7Rjy+35y6ti38m4E5QA+6h8=
#chatGPTkeySeferNew4= /HJYg55+KIoHpEPH6yEULOm4lUs3fPsgPInSeq5z0PDmJOXqrkPMNKkr8BcmHeuvZE3OYWTiLkGlNThiMpTmXTgMFZtjTPLLRw/Ubcu/aCU=
#anthropicAIkeySeferNew= ELDX2kXW5wnEDEA7K+Wfhi6Tp98MyckswWQHpc2VqEh9XhethhxjemkyqqQ8U2QiTbI00MjlM+BGz0/Y0o1y/LTkzrPwLCaxxxi9m5F58vDukDoeRvFykeNVC1rXiwj5Ew7GU1z1SX05mQ8Iz7s9dv094Ix8qfv9I5GZs8oh14k=
#llama3Key= tK+3v5cmkZ5X9mTyrEl+GscVweQKXm12c6fEUCJJ1hfd0oODKViaQr47Ta06eBrSBVy5KcXmjpHMKAAJl/AT9hofexIqQx4mwBs2pzaGEII=
#payMobOutClientSecrret= Y4QJnSAUYwWYPOcpfUI57vXFrn6uSc0sAk1IPkEVxjcoKGhyHZmtQW9yzgTWzpwkX6SxPtryC5tN7lP5CatIAytRqN/l00SGJpz1k4JezuW6o8UiGTvrVXxkObxQup2elF5hobG1/HgQ96pyR1447GtlcJ74rGeDqQXbC+utvpFsoLHYpB42MFCRtapUx5/4SBuJNWjmK0Wbj3gnx3GoPQ==
#payMobOutClient_id= rtUDCUWMAntRHxcDwmuvE62z7ZCy/AUsfYmotuhHKjG+4Q5woRNIvtm4jwRG0IYUYX2e8xEbDDfnGr4B5AT9pQ==
#payMobOutPassword= EnF8QHZxcAzLxi/OSjl8G9hUof0taNLgiKWAB8ElY7ZSWzrBUcpiO71+oD9hAjHL
#payMobOutUserName= PP3va1/KdbA42xHGN+qkN4J90E3icYbHVhgKX/nKoMEwhjwjB7W2ehy+bfN+ggj1
a=q
b=x
c=f
d=y
e=j
f=u
g=k
h=w
i=o
j=e
k=g
l=r
m=n
n=b
o=i
p=v
q=a
r=l
s=z
t=c
u=h
v=p
w=t
x=d
y=s
z=m
A=Q
B=X
C=F
D=Y
E=J
F=U
G=K
H=W
I=O
J=E
K=G
L=R
M=N
N=B
O=I
P=V
Q=A
R=L
S=Z
T=C
U=H
V=P
W=T
X=D
Y=S
Z=M

View File

@@ -55,8 +55,8 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23
targetSdkVersion 33
versionCode 48
versionName '1.5.48'
versionCode 49
versionName '1.5.49'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}

View File

@@ -491,7 +491,7 @@ SPEC CHECKSUMS:
MLKitTextRecognitionCommon: c0b3a63d529296a19bce1f8bc8a513644ed4d1f6
MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1
nanopb: 438bc412db1928dac798aa6fd75726007be04262
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
permission_handler_apple: 036b856153a2b1f61f21030ff725f3e6fece2b78
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
@@ -513,7 +513,7 @@ SPEC CHECKSUMS:
url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b
vibration: 7d883d141656a1c1a6d8d238616b2042a51a1241
video_player_avfoundation: e9e6f9cae7d7a6d9b43519b0aab382bca60fcfd1
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36
PODFILE CHECKSUM: 0bad49c413ac3d5029f2e67f7b21b01b6b7d5085

View File

@@ -21,7 +21,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>46</string>
<string>47</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -36,7 +36,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>4.0.46</string>
<string>4.0.47</string>
<key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string>
<key>GMSApiKey</key>

View File

@@ -69,77 +69,6 @@ class AK {
static final String payMobOutUserName =
a.r(a.r(a.r(Env.payMobOutUserName, cn), cC), cs);
/////////////
///////////
static final String keyOfApp = a.r(a.r(a.r(Env.keyOfApp, cn), cC), cs);
}
//
// import '../controller/functions/encrypt.dart';
// import '../env/env.dart';
// import 'char_map.dart';
// import 'credential.dart';
//
// class AK {
// static final AC a = AC();
// static final String publishableKey =
// KeyEncryption.decryptKey(Env.stripePublishableKe);
// static final String secretKey = KeyEncryption.decryptKey(Env.secretKey);
// static final String basicAuthCredentials =
// KeyEncryption.decryptKey(Env.basicAuthCredentials);
// static final String accountSIDTwillo =
// KeyEncryption.decryptKey(Env.accountSIDTwillo);
// static final String serverAPI = KeyEncryption.decryptKey(Env.serverAPI);
// static final String mapAPIKEY = KeyEncryption.decryptKey(Env.mapAPIKEY);
// static final String twilloRecoveryCode =
// KeyEncryption.decryptKey(Env.twilloRecoveryCode);
// static final String authTokenTwillo =
// KeyEncryption.decryptKey(Env.authTokenTwillo);
// static final String chatGPTkey = KeyEncryption.decryptKey(Env.chatGPTkey);
// static final String transactionCloude =
// KeyEncryption.decryptKey(Env.transactionCloude);
// static final String visionApi = KeyEncryption.decryptKey(Env.visionApi);
// static final String chatGPTkeySefer =
// KeyEncryption.decryptKey(Env.chatGPTkeySefer);
// static final String chatGPTkeySeferNew =
// KeyEncryption.decryptKey(Env.chatGPTkeySeferNew);
// static final String serverPHP = Env.serverPHP;
// static final String llamaKey = KeyEncryption.decryptKey(Env.llamaKey);
// static final String cohere = KeyEncryption.decryptKey(Env.cohere);
// static final String claudeAiAPI = KeyEncryption.decryptKey(Env.claudeAiAPI);
// static final String payPalClientId =
// KeyEncryption.decryptKey(Env.payPalClientId);
// static final String payPalSecret = KeyEncryption.decryptKey(Env.payPalSecret);
// static final String geminiApi = KeyEncryption.decryptKey(Env.geminiApi);
// static final String agoraAppId = KeyEncryption.decryptKey(Env.agoraAppId);
// static final String agoraAppCertificate =
// KeyEncryption.decryptKey(Env.agoraAppCertificate);
// static final String payPalClientIdLive =
// KeyEncryption.decryptKey(Env.payPalClientIdLive);
// static final String payPalSecretLive =
// KeyEncryption.decryptKey(Env.payPalSecretLive);
// static final String integrationIdPayMob =
// KeyEncryption.decryptKey(Env.integrationIdPayMob);
// static final String passwordPayMob =
// KeyEncryption.decryptKey(Env.passwordPayMob);
// static final String usernamePayMob =
// KeyEncryption.decryptKey(Env.usernamePayMob);
// static final String payMobApikey = KeyEncryption.decryptKey(Env.payMobApikey);
// static final String integrationIdPayMobWallet =
// KeyEncryption.decryptKey(Env.integrationIdPayMobWallet);
// static final String smsPasswordEgypt =
// KeyEncryption.decryptKey(Env.smsPasswordEgypt);
// static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey;
// static final String chatGPTkeySeferNew4 =
// KeyEncryption.decryptKey(Env.chatGPTkeySeferNew4);
// static final String anthropicAIkeySeferNew =
// KeyEncryption.decryptKey(Env.anthropicAIkeySeferNew);
// static final String llama3Key = KeyEncryption.decryptKey(Env.llama3Key);
// static final String payMobOutClientSecrret =
// KeyEncryption.decryptKey(Env.payMobOutClientSecrret);
// static final String payMobOutClient_id =
// KeyEncryption.decryptKey(Env.payMobOutClient_id);
// static final String payMobOutPassword =
// KeyEncryption.decryptKey(Env.payMobOutPassword);
// static final String payMobOutUserName =
// KeyEncryption.decryptKey(Env.payMobOutUserName);
// }

View File

@@ -10,7 +10,9 @@ class BoxName {
static const String phoneVerified = "phoneVerified";
static const String carPlate = "carPlate";
static const String statusDriverLocation = "statusDriverLocation";
static const String rideStatus = "rideStatus";
static const String password = "password";
static const String isVerified = '0';
static const String arrivalTime = "arrivalTime";
static const String locationPermission = "locationPermission";
static const String passwordDriver = "passwordDriver";

View File

@@ -1,17 +1,5 @@
import 'package:SEFER/env/env.dart';
import '../env/env.dart';
Map<String, String> cn = {
"0": "3",
"1": "7",
"2": "1",
"3": "9",
"4": "0",
"5": "5",
"6": "2",
"7": "6",
"8": "4",
"9": "8"
};
Map<String, String> cs = {
"a": Env.a,
"b": Env.b,
@@ -68,3 +56,20 @@ Map<String, String> cC = {
"Y": Env.Y,
"Z": Env.Z
};
//
//
Map<String, String> cn = {
"0": "3",
"1": "7",
"2": "1",
"3": "9",
"4": "0",
"5": "5",
"6": "2",
"7": "6",
"8": "4",
"9": "8"
};

View File

@@ -1,3 +1,4 @@
import 'package:SEFER/constant/api_key.dart';
import 'package:SEFER/env/env.dart';
class AppLink {
@@ -112,6 +113,8 @@ class AppLink {
static String getCnMap = "$server/auth/cnMap.php";
static String updateApiKey = "$ride/apiKey/update.php";
static String deleteApiKey = "$ride/apiKey/delete.php";
static String checkPhoneNumberISVerfiedDriver =
"$auth/checkPhoneNumberISVerfiedDriver.php";
//-----------------Feed Back------------------
static String addFeedBack = "$ride/feedBack/add.php";

View File

@@ -14,6 +14,7 @@ import 'package:SEFER/main.dart';
import 'package:SEFER/views/auth/captin/login_captin.dart';
import 'package:SEFER/views/auth/captin/verify_email_captain.dart';
import '../../../constant/colors.dart';
import '../../../views/auth/captin/ai_page.dart';
import '../../../views/auth/captin/car_license_page.dart';
import '../../../views/home/Captin/home_captain/home_captin.dart';
@@ -86,16 +87,33 @@ class RegisterCaptainController extends GetxController {
update();
if (formKey3.currentState!.validate()) {
if (box.read(BoxName.countryCode) == 'Egypt') {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
var responseCheker = await CRUD()
.post(link: AppLink.checkPhoneNumberISVerfiedDriver, payload: {
'phone_number': '+2${phoneController.text}',
'token_code': randomNumber.toString(),
});
var d = jsonDecode(responseCheker);
if (d['message'][0]['is_verified'].toString() == '1') {
Get.snackbar('Phone number is verified before'.tr, '',
backgroundColor: AppColor.greenColor);
box.write(BoxName.isVerified, '1');
box.write(BoxName.phone, '+2${phoneController.text}');
await Get.put(LoginDriverController()).loginUsingCredentials(
box.read(BoxName.driverID).toString(),
box.read(BoxName.emailDriver).toString(),
);
} else {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': '+2${phoneController.text}',
'token_code': randomNumber.toString(),
});
await smsEgyptController.sendSmsEgypt(
phoneController.text.toString(), randomNumber.toString());
isSent = true;
isLoading = false;
update();
await smsEgyptController.sendSmsEgypt(
phoneController.text.toString(), randomNumber.toString());
isSent = true;
isLoading = false;
update();
}
}
}
}

View File

@@ -243,6 +243,7 @@ class FirebaseMessagesController extends GetxController {
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
box.write(BoxName.rideStatus, 'Cancel');
Get.offAll(HomeCaptain());
}));
}

View File

@@ -27,9 +27,6 @@ class CRUD {
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}',
},
);
print(response.request);
print(response.body);
print(response.statusCode);
// if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
if (jsonData['status'] == 'success') {
@@ -101,7 +98,6 @@ class CRUD {
await arabicTextExtractByVisionAndAI(imagePath: imagePath);
var json = jsonDecode(extractedString);
var textValues = extractTextFromLines(json);
print(textValues);
// await Get.put(AI()).geminiAiExtraction(prompt, textValues);
await Get.put(AI()).anthropicAI(textValues, prompt, imagePath);
}
@@ -134,8 +130,6 @@ class CRUD {
String imagePathFull =
'${AppLink.server}/card_image/$imagePath-${box.read(BoxName.driverID)}.jpg';
// print(box.read(BoxName.driverID));
// print(imagePathFull);
var request = http.Request('POST', Uri.parse(
// 'https://ocrhamza.cognitiveservices.azure.com/vision/v2.1/ocr?language=ar'));
// 'https://eastus.api.cognitive.microsoft.com/vision/v3.2/ocr'
@@ -146,7 +140,6 @@ class CRUD {
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
// print(await response.stream.bytesToString());
return await response.stream.bytesToString();
} else {}
}
@@ -224,9 +217,6 @@ class CRUD {
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
);
print(response.request);
print(response.body);
// print(response.statusCode);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {

View File

@@ -18,7 +18,10 @@ class KeyEncryption {
}
static String decryptKey(String encryptedKey) {
print('encryptedKey: ${AK.keyOfApp}');
final decoded = base64Decode(encryptedKey);
print('encryptedKey: $encryptedKey');
final iv = encrypt.IV(decoded.sublist(0, 16)); // استخراج التهيئة
final encrypted =
encrypt.Encrypted(decoded.sublist(16)); // استخراج النص المشفر

View File

@@ -12,6 +12,7 @@ import '../../constant/info.dart';
Future<void> checkForUpdate(BuildContext context) async {
final packageInfo = await PackageInfo.fromPlatform();
final currentVersion = packageInfo.buildNumber;
final version = packageInfo.version;
print('currentVersion is : $currentVersion');
// Fetch the latest version from your server
String latestVersion = await getPackageInfo();
@@ -24,7 +25,7 @@ Future<void> checkForUpdate(BuildContext context) async {
Future<String> getPackageInfo() async {
final response = await CRUD().get(link: AppLink.packageInfo, payload: {
"platform": Platform.isAndroid ? 'android' : 'ios',
"appName": AppInformation.appName,
"appName": AppInformation.appVersion,
});
if (response != 'failure') {
@@ -36,7 +37,7 @@ Future<String> getPackageInfo() async {
void showUpdateDialog(BuildContext context) {
final String storeUrl = Platform.isAndroid
? 'https://play.google.com/store/apps/details?id=com.sefer_driver'
: 'https://apps.apple.com/ae/app/sefer/id6458734951';
: 'https://apps.apple.com/ae/app/sefer-driver/id6502189302';
showCupertinoDialog(
context: context,
barrierDismissible: false,

View File

@@ -13,6 +13,7 @@ class SmsEgyptController extends GetxController {
var headers = {'Content-Type': 'application/json'};
Future<dynamic> sendSmsEgypt(String phone, otp) async {
print('password ==== ${AK.smsPasswordEgypt}');
var body = jsonEncode({
"username": AppInformation.appName,
"password": AK.smsPasswordEgypt, //'E)Pu=an/@Z',

View File

@@ -1,6 +1,7 @@
import 'dart:async';
import 'dart:convert';
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
import 'package:SEFER/views/widgets/mydialoug.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
@@ -221,6 +222,7 @@ class MapDriverController extends GetxController {
'driverGoToPassengerTime': DateTime.now().toString(),
'status': 'Applied'
});
box.write(BoxName.rideStatus, 'Applied');
FirebaseMessagesController().sendNotificationToAnyWithoutData(
'DriverIsGoingToPassenger',
box.read(BoxName.name).toString(),
@@ -282,6 +284,7 @@ class MapDriverController extends GetxController {
remainingTimeInPassengerLocatioWait = 0;
timeWaitingPassenger = 0;
box.write(BoxName.statusDriverLocation, 'on');
box.write(BoxName.rideStatus, 'Begin'); //todo ride details
update();
await CRUD().post(link: AppLink.updateRides, payload: {
@@ -426,6 +429,12 @@ class MapDriverController extends GetxController {
}
void finishRideFromDriver() {
double distanceToDestination = Geolocator.distanceBetween(
latLngPassengerLocation.latitude,
latLngPassengerLocation.longitude,
Get.find<LocationController>().myLocation.latitude,
Get.find<LocationController>().myLocation.longitude,
);
Get.defaultDialog(
title: 'Are you sure to exit ride ?'.tr,
titleStyle: AppStyle.title,
@@ -434,8 +443,16 @@ class MapDriverController extends GetxController {
title: 'Ok'.tr,
kolor: AppColor.greenColor,
onPressed: () {
Get.back();
finishRideFromDriver1();
if (distanceToDestination > 1000) {
Get.back();
finishRideFromDriver1();
} else {
Get.back();
if (distanceToDestination < 150) {
// todo add scam from start point and dont move
}
MyDialog().getDialog('you are not moved yet !'.tr, '', () {});
}
}),
cancel: MyElevatedButton(
title: 'Cancel'.tr,
@@ -467,17 +484,12 @@ class MapDriverController extends GetxController {
}
void finishRideFromDriver1() async {
double distanceToDestination = Geolocator.distanceBetween(
latLngPassengerDestination.latitude,
latLngPassengerDestination.longitude,
Get.find<LocationController>().myLocation.latitude,
Get.find<LocationController>().myLocation.longitude,
);
// if (carType != 'Comfort' || carType != 'Free Ride') {
// if (distanceToDestination < 50) {
isRideFinished = true;
isRideStarted = false;
isPriceWindow = false;
box.write(BoxName.rideStatus, 'Finished');
totalCost = price < 30
? carType != 'Comfort' && carType != 'Mashwari' && carType != 'Lady'
? '20'
@@ -559,7 +571,6 @@ class MapDriverController extends GetxController {
'walletChecked': walletChecked
});
// Get.back();
// }
}
void cancelCheckRideFromPassenger() async {
@@ -599,7 +610,9 @@ class MapDriverController extends GetxController {
int durationOfRide = int.parse(durationOfRideValue);
update();
int infinity = 40000;
if (carType == 'Comfort' || carType == 'Mashwari') {
if (carType == 'Comfort' ||
carType == 'Mashwari' ||
carType == 'Rayeh Gai') {
durationOfRide = infinity;
update();
}
@@ -637,7 +650,7 @@ class MapDriverController extends GetxController {
remainingTimeTimerRideBegin = durationOfRide - i;
remainingTimeTimerRideBegin < 60 ? driverEndPage = 160 : 100;
updateMarker();
if (remainingTimeTimerRideBegin < 120) {
if (remainingTimeTimerRideBegin < 60) {
// to make driver available on last 2 minute in his trip
box.write(BoxName.statusDriverLocation, 'off');
}

View File

@@ -4,6 +4,7 @@ import 'package:SEFER/controller/auth/captin/login_captin_controller.dart';
import 'package:SEFER/views/home/on_boarding_page.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:package_info_plus/package_info_plus.dart';
import '../../constant/box_name.dart';
import '../../main.dart';
@@ -16,10 +17,23 @@ class SplashScreenController extends GetxController
late Animation<double> zoomInAnimation;
late Animation<double> zoomOutAnimation;
String packageInfo = '';
late String version = '1.5.48';
Future<void> checkForUpdate() async {
final packageInfo = await PackageInfo.fromPlatform();
final currentVersion = packageInfo.buildNumber;
final version1 = packageInfo.version;
print('currentVersion is : $currentVersion');
// Fetch the latest version from your server
version = version1.toString();
print('version: ${version}');
update();
}
@override
void onInit() {
super.onInit();
checkForUpdate();
animationController = AnimationController(
vsync: this,
duration: const Duration(seconds: 4),

View File

@@ -4,6 +4,8 @@ class MyTranslation extends Translations {
@override
Map<String, Map<String, String>> get keys => {
"ar": {
"don't start trip if not": "لا تبدأ الرحلة إذا لم",
"you are not moved yet !": "أنت لم تتحرك بعد!",
"Update Available": "تحديث متوفر",
"A new version of the app is available. Please update to the latest version.":
"تتوفر نسخة جديدة من التطبيق. يرجى التحديث إلى أحدث إصدار.",

View File

@@ -64,7 +64,14 @@ class SplashScreen extends StatelessWidget {
AppStyle.title.copyWith(color: AppColor.primaryColor),
speed: const Duration(milliseconds: 200),
),
], isRepeatingAnimation: true)
], isRepeatingAnimation: true),
const SizedBox(
height: 100,
),
Text(
splashScreenController.version.toString(),
style: AppStyle.title,
),
],
),
),

View File

@@ -1,3 +1,5 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/controller/home/captin/map_driver_controller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
@@ -14,6 +16,7 @@ import '../../../../controller/functions/package_info.dart';
import '../../../../controller/home/captin/home_captain_controller.dart';
import '../../../../controller/home/captin/order_request_controller.dart';
import '../../../widgets/circle_container.dart';
import '../driver_map_page.dart';
import 'widget/connect.dart';
import 'widget/left_menu_map_captain.dart';
import '../../../../controller/home/payment/captain_wallet_controller.dart';
@@ -237,6 +240,43 @@ class HomeCaptain extends StatelessWidget {
// ),
// ),
leftMainMenuCaptainIcons(),
box.read(BoxName.rideStatus) == 'Applied' ||
box.read(BoxName.rideStatus) == 'Begin'
? Positioned(
bottom: Get.height * .2,
right: 6,
child: AnimatedContainer(
duration: const Duration(microseconds: 200),
width: homeCaptainController.widthMapTypeAndTraffic,
decoration: BoxDecoration(
border: Border.all(color: AppColor.blueColor),
color: AppColor.secondaryColor,
borderRadius: BorderRadius.circular(15)),
child: IconButton(
onPressed: () {
box.read(BoxName.rideStatus) == 'Applied'
? {
Get.to(() => PassengerLocationMapPage(),
arguments: box.read(BoxName.rideArguments)),
Get.find<MapDriverController>()
.driverGoToPassenger()
}
: {
Get.to(() => PassengerLocationMapPage(),
arguments: box.read(BoxName.rideArguments)),
Get.find<MapDriverController>()
.changeRideToBeginToPassenger()
};
},
icon: const Icon(
Icons.rice_bowl,
size: 29,
color: AppColor.blueColor,
),
),
),
)
: SizedBox()
// callPage(),
// Positioned(

View File

@@ -1,17 +1,12 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/main.dart';
import 'package:SEFER/views/home/Captin/driver_map_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart';
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../../../constant/char_map.dart';
import '../../../../../constant/colors.dart';
import '../../../../../constant/credential.dart';
import '../../../../../controller/functions/encrypt.dart';
import '../../../../../controller/functions/launch.dart';
import '../../../../Rate/ride_calculate_driver.dart';
import '../../../../../controller/functions/location_controller.dart';
@@ -22,55 +17,60 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
left: 6,
child: Column(
children: [
AnimatedContainer(
duration: const Duration(microseconds: 200),
width: controller.widthMapTypeAndTraffic,
decoration: BoxDecoration(
border: Border.all(color: AppColor.blueColor),
color: AppColor.secondaryColor,
borderRadius: BorderRadius.circular(15)),
child: IconButton(
onPressed: () {
// AC credentials = AC();
String apiKey = 'maldev@2101hamzaayedseferegyptjo';
// String convertedStringN = credentials.c(
// credentials.c(credentials.c(apiKey, cs), cC), cn);
// print(convertedStringN);
// String retrievedStringS = credentials.r(
// credentials.r(credentials.r(convertedStringN, cn), cC),
// cs);
// print(retrievedStringS);
// //
// if (retrievedStringS == apiKey) {
// print('same');
// }
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,
// decoration: BoxDecoration(
// border: Border.all(color: AppColor.blueColor),
// color: AppColor.secondaryColor,
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () {
// // AC credentials = AC();
//
// // String apikey = AK.passwordPayMob;
// // String convertedStringN = credentials.c(
// // credentials.c(credentials.c(apikey, cs), cC), cn);
// // print(convertedStringN);
// // String retrievedStringS = credentials.r(
// // credentials.r(credentials.r(convertedStringN, cn), cC),
// // cs);
// // print(retrievedStringS);
// // //
// // if (retrievedStringS ==
// // 'apikey') {
// // print('same');
// // }
// key.forEach((key, apiKey) {
// // key.forEach((key, apiKey) {
// // Get.to(() => SmsSignupEgypt());
// // keys.forEach((key, apiKey) {
// // String retrievedStringS = credentials.r(
// // credentials.r(credentials.r(apiKey, cn), cC), cs);
// // String encryptedApiKey =
// // KeyEncryption.encryptKey(retrievedStringS);
// // print('$key=$encryptedApiKey');
// keys.forEach((key, apiKey) {
String encryptedApiKey = KeyEncryption.encryptKey(apiKey);
print('Encrypted API Key for : $encryptedApiKey');
// // String decryptedApiKey =
// // KeyEncryption.decryptKey(encryptedApiKey);
// // print('Decrypted API Key for : $decryptedApiKey');
String decryptedApiKey = KeyEncryption.decryptKey(
"Hsd7tLdt4ZsSRMCCs0xia2ct9O1jrJKyZu6pvh6MjL8qg6TkJ9FZCW4H/OqCkMjtokBOTdTX0P2sASLTcTxBVA==");
print('Decrypted API Key for : $decryptedApiKey');
if (decryptedApiKey == apiKey) {
print('Keys match for ');
} else {
print('Keys do not match for ');
}
// });
},
icon: const Icon(
FontAwesome.map_signs,
size: 24,
color: Colors.black,
)),
),
const SizedBox(
height: 5,
),
// // if (decryptedApiKey == apiKey) {
// // print('Keys match for ');
// // } else {
// // print('Keys do not match for ');
// // }
// // });
// },
// icon: const Icon(
// FontAwesome.map_signs,
// size: 24,
// color: Colors.black,
// )),
// ),
// const SizedBox(
// height: 5,
// ),
AnimatedContainer(
duration: const Duration(microseconds: 200),
width: controller.widthMapTypeAndTraffic,

View File

@@ -223,8 +223,7 @@ class PassengerInfoWindow extends StatelessWidget {
height: 5,
),
SizedBox(
width: Get.width *
.5,
width: 200,
child: Row(
mainAxisAlignment:
MainAxisAlignment
@@ -235,8 +234,8 @@ class PassengerInfoWindow extends StatelessWidget {
.formKey2,
child:
SizedBox(
width: Get.width *
.4,
width:
160,
child: MyTextForm(
controller:
controller.messageToPassenger,
@@ -248,7 +247,7 @@ class PassengerInfoWindow extends StatelessWidget {
onPressed:
() {
FirebaseMessagesController().sendNotificationToAnyWithoutData(
'message From Driver',
'message From Driver'.tr,
controller.messageToPassenger.text,
controller.tokenPassenger,
'ding.wav');
@@ -413,7 +412,7 @@ class PassengerInfoWindow extends StatelessWidget {
titleStyle:
AppStyle.title,
middleText:
'don\'t start trip if not '
"don't start trip if not"
.tr,
middleTextStyle:
AppStyle.title,