173 lines
7.2 KiB
PHP
173 lines
7.2 KiB
PHP
<?php
|
|
|
|
// --- تضمين الملفات الأساسية ---
|
|
require_once __DIR__ . '/../connect.php'; // يفترض أن يحتوي على الاتصال ومساعد التشفير
|
|
|
|
// --- استقبال البيانات من التطبيق ---
|
|
$driverId = filterRequest("driverId");
|
|
$phone = filterRequest("phone");
|
|
$email = filterRequest("email");
|
|
$status = filterRequest("status") ?: 'actives';
|
|
|
|
// --- بيانات جدول السائق (driver) ---
|
|
$firstName = filterRequest("first_name");
|
|
$lastName = filterRequest("last_name");
|
|
$site = filterRequest("site");
|
|
$address = filterRequest("address") ?: $site;
|
|
$nationalNumber = filterRequest("national_number");
|
|
$licenseCategories = filterRequest("license_categories");
|
|
$licenseType = filterRequest("license_type");
|
|
$expiryDate = filterRequest("expiry_date");
|
|
$licenseIssueDate = filterRequest("license_issue_date");
|
|
$gender = filterRequest("gender");
|
|
$birthdate = filterRequest("birthdate");
|
|
$maritalStatus = filterRequest("maritalStatus");
|
|
|
|
// --- بيانات جدول السيارة (CarRegistration) ---
|
|
$owner = filterRequest("owner");
|
|
$color = filterRequest("color");
|
|
$colorHex = filterRequest("color_hex");
|
|
$model = filterRequest("model");
|
|
$carPlate = filterRequest("car_plate");
|
|
$make = filterRequest("make");
|
|
$fuel = filterRequest("fuel");
|
|
$year = filterRequest("year");
|
|
$carExpirationDate = filterRequest("expiration_date");
|
|
$vin = filterRequest("vin");
|
|
|
|
// --- بدء المعاملة لضمان سلامة البيانات ---
|
|
$con->beginTransaction();
|
|
|
|
try {
|
|
// --- 1. معالجة وتشفير البيانات ---
|
|
$nameArabic = $firstName . ' ' . $lastName;
|
|
|
|
// تشفير الحقول الحساسة
|
|
$encryptedFirstName = $encryptionHelper->encryptData($firstName);
|
|
$encryptedLastName = $encryptionHelper->encryptData($lastName);
|
|
$encryptedSite = $encryptionHelper->encryptData($site);
|
|
$encryptedAddress = $encryptionHelper->encryptData($address);
|
|
$encryptedNameArabic = $encryptionHelper->encryptData($nameArabic);
|
|
$encryptedNationalNumber = $encryptionHelper->encryptData($nationalNumber);
|
|
$encryptedOwner = $encryptionHelper->encryptData($owner);
|
|
$encryptedCarPlate = $encryptionHelper->encryptData($carPlate);
|
|
$encryptedBirthdate = $encryptionHelper->encryptData($birthdate);
|
|
$encryptedGender = $encryptionHelper->encryptData($gender);
|
|
|
|
$encryptedPhone = !empty($phone) ? $encryptionHelper->encryptData($phone) : null;
|
|
$encryptedEmail = !empty($email) ? $encryptionHelper->encryptData($email) : null;
|
|
|
|
// --- 2. تحديث جدول السائق ---
|
|
$sqlDriver = "UPDATE `driver` SET
|
|
`first_name` = :first_name,
|
|
`last_name` = :last_name,
|
|
`site` = :site,
|
|
`address` = :address,
|
|
`national_number` = :national_number,
|
|
`license_categories` = :license_categories,
|
|
`license_type` = :license_type,
|
|
`expiry_date` = :expiry_date,
|
|
`issue_date` = :issue_date,
|
|
`gender` = :gender,
|
|
`birthdate` = :birthdate,
|
|
`name_arabic` = :name_arabic,
|
|
`maritalStatus` = :maritalStatus,
|
|
`status` = :status
|
|
WHERE `id` = :driverId";
|
|
|
|
$stmtDriver = $con->prepare($sqlDriver);
|
|
$stmtDriver->execute([
|
|
':first_name' => $encryptedFirstName,
|
|
':last_name' => $encryptedLastName,
|
|
':site' => $encryptedSite,
|
|
':address' => $encryptedAddress,
|
|
':national_number' => $encryptedNationalNumber,
|
|
':license_categories' => $licenseCategories,
|
|
':license_type' => $licenseType,
|
|
':expiry_date' => $expiryDate,
|
|
':issue_date' => $licenseIssueDate,
|
|
':gender' => $encryptedGender,
|
|
':birthdate' => $encryptedBirthdate,
|
|
':name_arabic' => $encryptedNameArabic,
|
|
':maritalStatus' => $maritalStatus,
|
|
':status' => $status,
|
|
':driverId' => $driverId,
|
|
]);
|
|
|
|
// --- تحديث الهاتف والايميل إذا وجدا ---
|
|
if ($encryptedPhone) {
|
|
$stmtPhone = $con->prepare("UPDATE `driver` SET `phone` = :phone WHERE `id` = :id");
|
|
$stmtPhone->execute([':phone' => $encryptedPhone, ':id' => $driverId]);
|
|
}
|
|
if ($encryptedEmail) {
|
|
$stmtEmail = $con->prepare("UPDATE `driver` SET `email` = :email WHERE `id` = :id");
|
|
$stmtEmail->execute([':email' => $encryptedEmail, ':id' => $driverId]);
|
|
}
|
|
|
|
// --- 3. تحديث جدول السيارة ---
|
|
$sqlCar = "UPDATE `CarRegistration` SET
|
|
`owner` = :owner,
|
|
`color` = :color,
|
|
`color_hex` = :color_hex,
|
|
`model` = :model,
|
|
`car_plate` = :car_plate,
|
|
`make` = :make,
|
|
`fuel` = :fuel,
|
|
`year` = :year,
|
|
`vin` = :vin,
|
|
`expiration_date` = :expiration_date
|
|
WHERE `driverID` = :driverId";
|
|
|
|
$stmtCar = $con->prepare($sqlCar);
|
|
$stmtCar->execute([
|
|
':owner' => $encryptedOwner,
|
|
':color' => $color,
|
|
':color_hex' => $colorHex,
|
|
':model' => $model,
|
|
':car_plate' => $encryptedCarPlate,
|
|
':make' => $make,
|
|
':fuel' => $fuel,
|
|
':year' => $year,
|
|
':vin' => $vin ?: '',
|
|
':expiration_date' => $carExpirationDate,
|
|
':driverId' => $driverId
|
|
]);
|
|
|
|
// --- 4. تأكيد المعاملة ---
|
|
$con->commit();
|
|
jsonSuccess(["message" => "Driver and car data updated successfully."]);
|
|
|
|
// --- 5. إرسال رسالة واتساب مبسطة وآمنة (باختيار رقم عشوائي) ---
|
|
|
|
// 5.1. تعريف الأرقام
|
|
$supportPhones = ['0952475740', '0952475742']; // يمكنك إضافة المزيد من الأرقام هنا
|
|
|
|
// 5.2. اختيار رقم عشوائي من القائمة
|
|
$randomIndex = array_rand($supportPhones); // يختار "مفتاح" عشوائي (index)
|
|
$phoneToUse = $supportPhones[$randomIndex]; // يحصل على الرقم من المفتاح
|
|
|
|
|
|
// --- !!! التعديل: إضافة رقم عشوائي ---
|
|
// هذا يضيف رقم عشوائي (4-6 خانات) لجعل الرسالة فريدة
|
|
$randomNumber = rand(1000, 999999);
|
|
|
|
// 5.5. إعداد نص الرسالة بالرقم المتغير
|
|
$messageBody = "أهلاً وسهلاً كابتن $firstName 👋\n"
|
|
. "تم تفعيل حسابك على تطبيق *سيرو*.\n"
|
|
. "يمكنك الآن تسجيل الدخول والبدء بالعمل مباشرة.\n"
|
|
. "للمساعدة تواصل معنا على الرقم: $phoneToUse\n" // <-- تم استخدام المتغير العشوائي هنا
|
|
. "نتمنى لك عمل موفق 🚖\n\n"
|
|
. "معرف الرسالة: $randomNumber"; // <-- إضافة الرقم العشوائي
|
|
|
|
// 5.6. إرسال الرسالة
|
|
sendWhatsAppFromServer($phone, $messageBody);
|
|
|
|
} catch (Exception $e) {
|
|
// --- 6. التراجع في حال الخطأ ---
|
|
$con->rollBack();
|
|
jsonError("An internal error occurred. Please try again later.");
|
|
}
|
|
|
|
?>
|
|
|