قرار المالك 2026-07-27: باك إند سيرو PHP هو المعتمد، وتطبيقاته المجرّبة ميدانياً تحل محل إعادة البناء المؤرشفة. سيرو نفسه لم يُمسّ. الخريطة: backend · payment_server · loction_server · ride_server · passenger_server · docker · dashboard · stress_test → الجذر siro_rider → apps/rider siro_driver → apps/driver siro_admin → dashboards/admin siro_service → dashboards/service android_bot → apps/android_bot socialBot → apps/socialBot نُسخ المتعقَّب في git سيرو فقط عبر `git archive` (3,198 ملفاً / ~169 م.ب) لا `cp -r` — فاستُثنيت مخلفات البناء تلقائياً. بلا أي تعديل محتوى عمداً: كل ما يلي يصير فرقاً مقروءاً مقابل المصدر. لم يُستورد وسببه: siromove.com (الموقع التسويقي يبقى marketing/ في تريبز، سيرو فيه 8 ملفات) · docs و planning (تريبز له docs/ الخاص) · deploy.sh (ليس نشراً على سيرفر بل `git add . && git push origin --all` — فخّ في مستودع آخر) · transit_dashboard (بانتظار قرار مصير backend-transit و dashboards/transit-web). ⚠️ لا يبني بعد — ثلاثة نواقص متوقعة ومقصودة: 1. `.env` و `lib/env/env.g.dart` غير متعقَّبين في سيرو (أسرار لكل مستأجر): كل تطبيق فلاتر يحتاج .env خاصاً ثم توليد env.g.dart بـ build_runner. 2. إعدادات Firebase (9 ملفات google-services.json و GoogleService-Info.plist) يستبعدها .gitignore تريبز — ولكل مستأجر مشروع Firebase خاص أصلاً. 3. apps/driver في سيرو يشير إلى `../../Intaleq/packages/get` خارج المستودع → يجب ضمّ الحزم داخله أسوة بـ apps/rider. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
79 lines
3.3 KiB
PHP
79 lines
3.3 KiB
PHP
<?php
|
||
//updateStausFromSpeed.php";
|
||
|
||
require_once __DIR__ . '/../../connect.php';
|
||
|
||
$rideId = filterRequest("id");
|
||
$status = filterRequest("status");
|
||
$driverId = filterRequest("driver_id");
|
||
// لم نعد نحتاج لمتغير $rideTimeStart لربطه بالـ SQL، لكن نتركه لاستلام القيمة من الطلب
|
||
$rideTimeStart = filterRequest("rideTimeStart");
|
||
|
||
// 🚀 1. تسجيل بداية الطلب والبيانات المستلمة
|
||
error_log("🚀 [accept_ride.php] Request Started. RideID: $rideId | DriverID: $driverId | Status: $status");
|
||
|
||
if (!$rideId || !$driverId || !$status) {
|
||
error_log("❌ [accept_ride.php] Missing required parameters.");
|
||
jsonError("Missing required parameters.");
|
||
exit;
|
||
}
|
||
|
||
try {
|
||
// ---------------------------------------------------------
|
||
// 1. التحديث على سيرفر التتبع (صاحب القرار)
|
||
// ---------------------------------------------------------
|
||
|
||
error_log("🔄 [accept_ride.php] Attempting to update REMOTE Tracking DB for Ride ID: $rideId");
|
||
|
||
$stmtRideRemote = $con_ride->prepare("UPDATE `ride`
|
||
SET `status` = :status,
|
||
`driver_id` = :driverId,
|
||
`rideTimeStart` = NOW()
|
||
WHERE `id` = :id
|
||
AND `status` IN ('waiting', 'wait')
|
||
");
|
||
|
||
$stmtRideRemote->execute([
|
||
':status' => $status,
|
||
':driverId' => $driverId,
|
||
':id' => $rideId
|
||
]);
|
||
|
||
$count = $stmtRideRemote->rowCount();
|
||
error_log("ℹ️ [accept_ride.php] Remote DB Rows Affected: $count");
|
||
|
||
// نتحقق: هل نجح التحديث في سيرفر التتبع؟
|
||
if ($count > 0) {
|
||
|
||
// ---------------------------------------------------------
|
||
// 2. التحديث على السيرفر الرئيسي (تثبيت السجل فقط)
|
||
// ---------------------------------------------------------
|
||
|
||
error_log("🔄 [accept_ride.php] Remote success. Updating LOCAL Main DB...");
|
||
|
||
$sqlUpdate = "UPDATE `ride`
|
||
SET `driver_id` = :driverId,
|
||
`status` = :status,
|
||
`rideTimeStart` = NOW()
|
||
WHERE id = :rideId
|
||
AND `status` IN ('waiting', 'wait') ";
|
||
|
||
$stmtUpdate = $con->prepare($sqlUpdate);
|
||
$stmtUpdate->bindParam(":driverId", $driverId);
|
||
$stmtUpdate->bindParam(":status", $status);
|
||
$stmtUpdate->bindParam(":rideId", $rideId);
|
||
$stmtUpdate->execute();
|
||
|
||
error_log("✅ [accept_ride.php] Ride accepted and started successfully for Driver: $driverId");
|
||
jsonSuccess(null, "Ride accepted and started successfully at " . date('Y-m-d H:i:s'));
|
||
|
||
} else {
|
||
error_log("⚠️ [accept_ride.php] Failed to accept ride. It might be already taken, canceled, or invalid status.");
|
||
jsonError("Ride cannot be accepted (Already taken, Canceled, or Invalid Status).");
|
||
}
|
||
|
||
} catch (PDOException $e) {
|
||
error_log("❌ [accept_ride.php] Database Error: " . $e->getMessage());
|
||
jsonError("An internal error occurred. Please try again later.");
|
||
}
|
||
?>
|