This commit is contained in:
Hamza-Ayed
2024-07-05 04:50:32 +03:00
parent b5bc36e4be
commit dc4677a6bf
21 changed files with 586 additions and 234 deletions

View File

@@ -57,9 +57,10 @@ class LoginDriverController extends GetxController {
'email': email,
'id': driverID,
});
print(res);
if (res == 'Failure') {
//Failure
if (box.read(BoxName.phoneVerified) == '1') {
if (box.read(BoxName.phoneVerified).toString() == '1') {
Get.offAll(() => EgyptCardAI());
} else {
Get.offAll(() => SmsSignupEgypt());
@@ -72,7 +73,7 @@ class LoginDriverController extends GetxController {
var jsonDecoeded = jsonDecode(res);
if (jsonDecoeded.isNotEmpty) {
if (jsonDecoeded['status'] == 'success' &&
jsonDecoeded['data'][0]['is_verified'] == 1) {
jsonDecoeded['data'][0]['is_verified'].toString() == '1') {
box.write(BoxName.emailDriver, jsonDecoeded['data'][0]['email']);
box.write(BoxName.gender, jsonDecoeded['data'][0]['gender']);
box.write(BoxName.phoneVerified,

View File

@@ -109,13 +109,17 @@ class RegisterCaptainController extends GetxController {
if (res != 'failure') {
// var dec = jsonDecode(res);
box.write(BoxName.phoneDriver, '+2${phoneController.text}');
box.write(BoxName.phoneVerified, 1);
box.write(BoxName.phoneVerified, '1');
// var res1 = await CRUD().post(
// link: AppLink.updateAccountBank,
// payload: {'phone': '+2${phoneController.text}'});
// if (res1 != 'failure') {
Get.to(EgyptCardAI());
await Get.put(LoginDriverController()).loginUsingCredentials(
box.read(BoxName.driverID).toString(),
box.read(BoxName.emailDriver).toString(),
);
// Get.to(EgyptCardAI());
// } else {
// Get.snackbar('title', 'message');
// }

View File

@@ -98,7 +98,10 @@ class GoogleSignInHelper {
box.write(BoxName.emailDriver, user.email);
// box.write(BoxName.nameDriver, user.displayName);
// box.write(BoxName.driverPhotoUrl, user.photoUrl);
print(box.read(BoxName.driverID).toString());
print(
box.read(BoxName.emailDriver).toString(),
);
// Perform any additional sign-up tasks or API calls here
// For example, you can send the user data to your server for registration
}

View File

@@ -109,22 +109,22 @@ class FirebaseMessagesController extends GetxController {
// 'PolylineJson': myPoints,
'body': message.notification!.body
});
} else if (message.notification!.title == 'Cancel Trip'.tr) {
} else if (message.notification!.title == 'Cancel Trip') {
NotificationController().showNotification(
'Cancel Trip'.tr, 'Passenger Cancel Trip'.tr, 'cancel');
cancelTripDialog();
} else if (message.notification!.title! == 'token change'.tr) {
} else if (message.notification!.title! == 'token change') {
// NotificationController()
// .showNotification('token change'.tr, 'token change', 'cancel');
// GoogleSignInHelper.signOut();
GoogleSignInHelper.signOut();
} else if (message.notification!.title! == 'message From passenger'.tr) {
} else if (message.notification!.title! == 'message From passenger') {
NotificationController()
.showNotification('message From passenger'.tr, ''.tr, 'tone2');
.showNotification('message From passenger', ''.tr, 'tone2');
passengerDialog(message.notification!.body!);
update();
} else if (message.notification!.title! == 'Hi ,I will go now'.tr) {
} else if (message.notification!.title! == 'Hi ,I will go now') {
// Get.snackbar('Hi ,I will go now', '',
// backgroundColor: AppColor.greenColor);
NotificationController().showNotification(

View File

@@ -27,6 +27,9 @@ 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') {

View File

@@ -0,0 +1,83 @@
import 'package:encrypt/encrypt.dart' as encrypt;
import 'dart:convert';
import 'package:http/http.dart' as http;
//
import 'dart:convert';
import 'dart:math';
import 'package:encrypt/encrypt.dart' as encrypt;
class KeyEncryption {
static final _key = encrypt.Key.fromUtf8('mehmetDEV@2101'); // ضع مفتاحك هنا
static String encryptKey(String key) {
final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية
final encrypter =
encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc));
final encrypted = encrypter.encrypt(key, iv: iv);
final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر
return base64Encode(result);
}
static String decryptKey(String encryptedKey) {
final decoded = base64Decode(encryptedKey);
final iv = encrypt.IV(decoded.sublist(0, 16)); // استخراج التهيئة
final encrypted =
encrypt.Encrypted(decoded.sublist(16)); // استخراج النص المشفر
final encrypter =
encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc));
return encrypter.decrypt(encrypted, iv: iv);
}
}
// class KeyEncryption {
// static final _key = encrypt.Key.fromUtf8('7'); // ضع مفتاحك هنا
//
// static String encryptKey(String key) {
// final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية
// final encrypter =
// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc));
// final encrypted = encrypter.encrypt(key, iv: iv);
// final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر
// return base64Encode(result);
// }
//
// static String decryptKey(String encryptedKey) {
// final decoded = base64Decode(encryptedKey);
// final iv = encrypt.IV(decoded.sublist(0, 16)); // استخراج التهيئة
// final encrypted =
// encrypt.Encrypted(decoded.sublist(16)); // استخراج النص المشفر
// final encrypter =
// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc));
// return encrypter.decrypt(encrypted, iv: iv);
// }
// }
// class KeyEncryption {
// static final _key =
// encrypt.Key.fromUtf8('32-character-key....'); // ضع مفتاحك هنا
//
// static String encryptKey(String key) {
// final iv = encrypt.IV.fromLength(16); // توليد تهيئة عشوائية
// final encrypter =
// encrypt.Encrypter(encrypt.AES(_key, mode: encrypt.AESMode.cbc));
// final encrypted = encrypter.encrypt(key, iv: iv);
// final result = iv.bytes + encrypted.bytes; // تضمين التهيئة مع النص المشفر
// return base64Encode(result);
// }
//
// static Future<void> storeApiKeys(List<String> apiKeys) async {
// final encryptedKeys = apiKeys.map((key) => encryptKey(key)).toList();
// final response = await http.post(
// Uri.parse('https://yourdomain.com/store_keys.php'),
// body: jsonEncode({'keys': encryptedKeys}),
// headers: {'Content-Type': 'application/json'},
// );
//
// if (response.statusCode == 200) {
// print('Keys stored successfully.');
// } else {
// print('Failed to store keys.');
// }
// }
// }

View File

@@ -201,7 +201,7 @@ class AI extends GetxController {
if (isCarSaved && isDriverSaved) {
DeviceController().getDeviceSerialNumber();
box.write(BoxName.phoneVerified, 1);
box.write(BoxName.phoneVerified, '1');
Get.offAll(() => HomeCaptain());
// Get.offAll(() => HomeCaptain());
}
@@ -209,89 +209,164 @@ class AI extends GetxController {
}
Future<void> addDriverEgypt() async {
try {
// Extract values from box or set defaults
var firstName = responseIdEgyptDriverLicense['firstName'] ?? '';
var lastName = responseIdEgyptDriverLicense['lastName'] ?? '';
var email = box.read(BoxName.emailDriver) ?? '';
var phone = box.read(BoxName.phoneDriver)?.toString() ?? '';
var driverId = box.read(BoxName.driverID)?.toString() ?? '';
var password = '123456';
var gender = responseIdEgyptBack['gender'] == 'ذكر' ? 'Male' : 'Female';
var licenseType = responseIdEgyptDriverLicense['license_type'] ?? '';
var nationalNumber = responseIdEgyptBack['nationalID'] ?? '';
var nameArabic = responseIdEgyptDriverLicense['name_arabic'] ?? '';
var nameEnglish = responseIdEgyptDriverLicense['name_english'] ?? '';
var issueDate = responseIdEgyptDriverLicense['issue_date'] ?? '';
var expiryDate = responseIdEgyptDriverLicense['expiry_date'] ?? '';
var licenseCategories =
responseIdEgyptDriverLicense['license_categories'] ?? '';
var address = responseIdEgyptFront['address'] ?? '';
var cardId = responseIdEgyptFront['card_id'] ?? '';
var occupation = responseIdEgyptBack['occupation'] ?? '';
var education = responseIdEgyptBack['occupation'] ?? '';
var licenseIssueDate =
responseIdEgyptDriverLicense['issue_date'].toString() ?? '';
var religion = responseIdEgyptBack['religion'] ?? '';
var status = responseIdEgyptBack['fullName'] ?? '';
var birthdate = responseIdEgyptFront['dob'] != null
? DateTime.parse(responseIdEgyptFront['dob'] + '-01-01').toString()
: '1960-01-01';
isLoading = true;
update();
var maritalStatus = responseIdEgyptBack['maritalStatus'] ?? '';
var site = responseIdEgyptDriverLicense['address'] ?? '';
var employmentType = responseIdEgyptDriverLicense['employmentType'] ?? '';
// Create payload
var payload = {
'first_name': firstName,
'last_name': lastName,
'email': email,
'phone': phone,
'id': driverId,
'password': password,
'gender': gender,
'license_type': licenseType,
'national_number': nationalNumber,
'name_arabic': nameArabic,
'name_english': nameEnglish,
'issue_date': issueDate,
'expiry_date': expiryDate,
'license_categories': licenseCategories,
'address': address,
'card_id': cardId,
'occupation': occupation,
'education': education,
'licenseIssueDate': licenseIssueDate,
'religion': religion,
'status': status,
'birthdate': birthdate,
'maritalStatus': maritalStatus,
'site': site,
'employmentType': employmentType,
};
isLoading = true;
update();
// Make POST request
var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload);
var status1 = jsonDecode(res);
isLoading = false;
update();
// Handle response
if (status1['status'] == 'success') {
isDriverSaved = true;
Get.snackbar('Success', 'Driver data saved successfully',
backgroundColor: AppColor.greenColor);
} else {
Get.snackbar('Error', 'Failed to save driver data',
backgroundColor: Colors.red);
}
} catch (e) {
Get.snackbar('Error', 'An error occurred while saving driver data',
var payload = {
'first_name': responseIdEgyptDriverLicense['firstName']?.toString() ??
'Not specified',
'last_name': responseIdEgyptDriverLicense['lastName']?.toString() ??
'Not specified',
'email': box.read(BoxName.emailDriver)?.toString() ?? 'Not specified',
'phone': box.read(BoxName.phoneDriver)?.toString() ?? 'Not specified',
'id': box.read(BoxName.driverID)?.toString() ?? 'Not specified',
'password': '123456',
'gender': responseIdEgyptBack['gender']?.toString() ?? 'Not specified',
'license_type':
responseIdEgyptDriverLicense['license_type']?.toString() ??
'Not specified',
'national_number':
responseIdEgyptBack['nationalID']?.toString() ?? 'Not specified',
'name_arabic': responseIdEgyptDriverLicense['name_arabic']?.toString() ??
'Not specified',
'name_english':
responseIdEgyptDriverLicense['name_english']?.toString() ??
'Not specified',
'issue_date': responseIdEgyptDriverLicense['issue_date']?.toString() ??
'Not specified',
'expiry_date': responseIdEgyptDriverLicense['expiry_date']?.toString() ??
'Not specified',
'license_categories': responseIdEgyptDriverLicense['license_categories']
is List
? responseIdEgyptDriverLicense['license_categories'].join(', ')
: responseIdEgyptDriverLicense['license_categories']?.toString() ??
'Not specified',
'address': responseIdEgyptFront['address']?.toString() ?? 'Not specified',
'card_id': responseIdEgyptFront['card_id']?.toString() ?? 'Not specified',
'occupation':
responseIdEgyptBack['occupation']?.toString() ?? 'Not specified',
'education':
responseIdEgyptBack['occupation']?.toString() ?? 'Not specified',
'licenseIssueDate':
responseIdEgyptDriverLicense['issue_date']?.toString() ??
'Not specified',
'religion':
responseIdEgyptBack['religion']?.toString() ?? 'Not specified',
'status': 'yet',
'birthdate': responseIdEgyptFront['dob']?.toString() ?? 'Not specified',
'maritalStatus':
responseIdEgyptBack['maritalStatus']?.toString() ?? 'Not specified',
'site': responseIdEgyptDriverLicense['address']?.toString() ??
'Not specified',
'employmentType':
responseIdEgyptDriverLicense['employmentType']?.toString() ??
'Not specified',
};
var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload);
var status1 = jsonDecode(res);
isLoading = false;
update();
print(res);
// Handle response
if (status1['status'] == 'success') {
isDriverSaved = true;
Get.snackbar('Success', 'Driver data saved successfully',
backgroundColor: AppColor.greenColor);
} else {
Get.snackbar('Error', 'Failed to save driver data',
backgroundColor: Colors.red);
}
// } catch (e) {
// isLoading = false;
// update();
// Get.snackbar('Error', 'An error occurred while saving driver data: $e',
// backgroundColor: Colors.red);
// }
}
// Future<void> addDriverEgypt() async {
// // try {
// // Extract values from box or set defaults
// var firstName = responseIdEgyptDriverLicense['firstName'] ?? '';
// var lastName = responseIdEgyptDriverLicense['lastName'] ?? '';
// var email = box.read(BoxName.emailDriver) ?? '';
// var phone = box.read(BoxName.phoneDriver)?.toString() ?? '';
// var driverId = box.read(BoxName.driverID)?.toString() ?? '';
// var password = '123456';
// var gender = responseIdEgyptBack['gender'] == 'ذكر' ? 'Male' : 'Female';
// var licenseType = responseIdEgyptDriverLicense['license_type'] ?? '';
// var nationalNumber = responseIdEgyptBack['nationalID'] ?? '';
// var nameArabic = responseIdEgyptDriverLicense['name_arabic'] ?? '';
// var nameEnglish = responseIdEgyptDriverLicense['name_english'] ?? '';
// var issueDate = responseIdEgyptDriverLicense['issue_date'] ?? '';
// var expiryDate = responseIdEgyptDriverLicense['expiry_date'] ?? '';
// var licenseCategories =
// responseIdEgyptDriverLicense['license_categories'] ?? '';
// var address = responseIdEgyptFront['address'] ?? '';
// var cardId = responseIdEgyptFront['card_id'] ?? '';
// var occupation = responseIdEgyptBack['occupation'] ?? '';
// var education = responseIdEgyptBack['occupation'] ?? '';
// var licenseIssueDate =
// responseIdEgyptDriverLicense['issue_date'].toString() ?? '';
// var religion = responseIdEgyptBack['religion'] ?? '';
// var status = responseIdEgyptBack['fullName'] ?? '';
// var birthdate = responseIdEgyptFront['dob'] != null
// ? DateTime.parse(responseIdEgyptFront['dob'] + '-01-01').toString()
// : '1960-01-01';
//
// var maritalStatus = responseIdEgyptBack['maritalStatus'] ?? '';
// var site = responseIdEgyptDriverLicense['address'] ?? '';
// var employmentType = responseIdEgyptDriverLicense['employmentType'] ?? '';
//
// // Create payload
// var payload = {
// 'first_name': firstName,
// 'last_name': lastName,
// 'email': email,
// 'phone': phone,
// 'id': driverId,
// 'password': password,
// 'gender': gender,
// 'license_type': licenseType,
// 'national_number': nationalNumber,
// 'name_arabic': nameArabic,
// 'name_english': nameEnglish,
// 'issue_date': issueDate,
// 'expiry_date': expiryDate,
// 'license_categories': licenseCategories,
// 'address': address,
// 'card_id': cardId,
// 'occupation': occupation,
// 'education': education,
// 'licenseIssueDate': licenseIssueDate,
// 'religion': religion,
// 'status': status,
// 'birthdate': birthdate,
// 'maritalStatus': maritalStatus,
// 'site': site,
// 'employmentType': employmentType,
// };
// isLoading = true;
// update();
// // Make POST request
// var res = await CRUD().post(link: AppLink.signUpCaptin, payload: payload);
// var status1 = jsonDecode(res);
// isLoading = false;
// update();
// // Handle response
//
// if (status1['status'] == 'success') {
// isDriverSaved = true;
// Get.snackbar('Success', 'Driver data saved successfully',
// backgroundColor: AppColor.greenColor);
// } else {
// Get.snackbar('Error', 'Failed to save driver data',
// backgroundColor: Colors.red);
// }
// // } catch (e) {
// // Get.snackbar('Error', 'An error occurred while saving driver data',
// // backgroundColor: Colors.red);
// // }
// }
Future addRegistrationCarEgypt() async {
try {

View File

@@ -4,6 +4,7 @@ import 'package:SEFER/constant/links.dart';
import 'package:SEFER/constant/style.dart';
import 'package:SEFER/main.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../constant/box_name.dart';
import '../../../constant/table_names.dart';
@@ -21,6 +22,8 @@ class OrderRequestController extends GetxController {
String countRefuse = '0';
bool applied = false;
final locationController = Get.put(LocationController());
BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker;
BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker;
@override
void onInit() {
@@ -30,6 +33,30 @@ class OrderRequestController extends GetxController {
super.onInit();
}
void addCustomStartIcon() async {
// Create the marker with the resized image
ImageConfiguration config = ImageConfiguration(
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
BitmapDescriptor.fromAssetImage(config, 'assets/images/A.png',
mipmaps: false)
.then((value) {
startIcon = value;
update();
});
}
void addCustomEndIcon() {
ImageConfiguration config = ImageConfiguration(
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
BitmapDescriptor.fromAssetImage(config, 'assets/images/b.png',
mipmaps: false)
.then((value) {
endIcon = value;
update();
});
}
void changeApplied() {
applied = true;
update();

View File

@@ -4,8 +4,21 @@ class MyTranslation extends Translations {
@override
Map<String, Map<String, String>> get keys => {
"ar": {
"We use location to get accurate and nearest passengers for you":
"نستخدم الموقع للحصول على أقرب الركاب وأكثرهم دقة لك",
"This ride is already applied by another driver.":
"هذه الرحلة قام بقبولها سائق آخر بالفعل.",
"Please don't be late"
"My location is correct. You can search for me using the navigation app":
"موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة",
"Hello, I'm at the agreed-upon location":
"مرحباً، أنا في المكان المتفق عليه",
"message From Driver": "رسالة من السائق",
"How much longer will you be?": "‏قدامك قد إيه",
'Phone number is verified before': "تم التحقق من رقم الهاتف مسبقاً",
'Change Ride': 'تغيير الرحلة',
'Cost Of Trip IS ': "تكلفة الرحلة هي",
'message From passenger': "رسالة من الراكب",
"Where are you, sir?": "أنا وصلت حضرتك فين.",
"I've been trying to reach you but your phone is off.":
"بحاول أكلمك التلفون مغلق.",
@@ -419,7 +432,7 @@ class MyTranslation extends Translations {
"To change some Settings": "لتغيير بعض الإعدادات",
"To change Language the App": "لتغيير لغة التطبيق",
"Order Request Page": "صفحة طلب الطلبية",
"Rouats of Trip": "روات تريب",
"Routs of Trip": "طرق الرحلة",
"Passenger Name is": "اسم المسافر",
"Total From Passenger is": "إجمالي من الراكب هو",
"Duration To Passenger is": "المدة إلى الراكب",
@@ -718,7 +731,8 @@ class MyTranslation extends Translations {
"لا توجد بطاقة SIM، لا توجد مشكلة! اتصل بالشريك السائق مباشرة من خلال تطبيقنا. نحن نستخدم التكنولوجيا المتقدمة لضمان خصوصيتك.",
"This ride type allows changes, but the price may increase":
"يسمح نوع الرحلة هذا بالتغييرات، لكن قد يرتفع السعر",
"message From passenger": "رسالة من الراكب",
'message From Driver': 'رسالة من السائق',
'message From passenger': "رسالة من الراكب",
"Select one message": "اختر رسالة واحدة",
"My location is correct. You can search for me using the navigation app":
"موقعي صحيح. يمكنك البحث عني باستخدام تطبيق الملاحة",

View File

@@ -73,7 +73,7 @@ class RateController extends GetxController {
} else {
double pointsSubtraction = 0;
pointsSubtraction = remainingFee *
(-1) *
(-1) /
double.parse(
Get.find<MapDriverController>().kazan); // for egypt /100
var paymentToken4 = await Get.find<MapDriverController>()
@@ -88,7 +88,7 @@ class RateController extends GetxController {
});
FirebaseMessagesController().sendNotificationToAnyWithoutData(
'Wallet Added'.tr,
'Wallet Added${(pointsSubtraction).toStringAsFixed(0)}'.tr,
'Wallet Added${(remainingFee).toStringAsFixed(0)}'.tr,
Get.find<MapDriverController>().tokenPassenger,
'tone2.wav');
walletChecked = 'true';