Update: 2026-08-07 02:37:30

This commit is contained in:
Hamza-Ayed
2026-08-07 02:37:30 +03:00
parent 70772cf0d2
commit e070c2d9a8
3 changed files with 76 additions and 21 deletions
+63
View File
@@ -167,3 +167,66 @@ function estimateDriverEarningsAdvantage(
];
}
?>
/**
* ‏صف التسعير الصحيح لدولة هذه الرحلة.
*
* ⚠️ ‏لا تستخدم "SELECT * FROM kazan LIMIT 1" أبداً. جدول kazan يحمل صفاً
* ‏لكل دولة بمقاييس متباعدة جداً:
* Syria 40 SYP/كم · 9 SYP/دقيقة
* Egypt 3.5 EGP/كم · 0.8 EGP/دقيقة
* Jordan 0.284 JOD/كم· 0.05 JOD/دقيقة
* ‏فـ LIMIT 1 يعيد أول صف (سوريا) ويطبّق أسعارها على رحلة أردنية — أي
* ‏مئات الأضعاف. حدث هذا فعلاً في مسارَي الإلغاء.
*
* ‏مصدر الدولة: driver.site عبر الرحلة — نفس ما يفعله finish_ride_updates.php.
* ‏وإن تعذّر (رحلة بلا سائق مثلاً) نقع على $fallbackCountry.
*
* @return array ‏صف kazan، أو مصفوفة فارغة إن لم يُوجد شيء إطلاقاً.
*/
function getKazanForRide(PDO $con, $rideId, string $fallbackCountry = 'Syria', $driverId = null): array
{
$country = '';
try {
if (!empty($driverId) && (string) $driverId !== '0') {
// ‏مسار الإلغاء يصفّر ride.driver_id قبل الوصول إلى هنا، فالانضمام
// ‏عبر الرحلة يرجع فارغاً. المستدعي يمرّر السائق الذي يعرفه.
$stmt = $con->prepare("SELECT site FROM driver WHERE id = ? LIMIT 1");
$stmt->execute([$driverId]);
} else {
$stmt = $con->prepare("
SELECT d.site AS country_code
FROM ride r
LEFT JOIN driver d ON d.id = r.driver_id
WHERE r.id = ? LIMIT 1
");
$stmt->execute([$rideId]);
}
$country = (string) ($stmt->fetchColumn() ?: '');
} catch (PDOException $e) {
error_log("[pricing] تعذّر تحديد دولة الرحلة $rideId: " . $e->getMessage());
}
if ($country === '') {
$country = $fallbackCountry;
error_log("[pricing] الرحلة $rideId بلا دولة معروفة — السقوط على $country");
}
try {
$stmt = $con->prepare("SELECT * FROM kazan WHERE country = ? LIMIT 1");
$stmt->execute([$country]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
error_log("[pricing] لا صف kazan للدولة $country — السقوط على $fallbackCountry");
$stmt->execute([$fallbackCountry]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
}
return $row ?: [];
} catch (PDOException $e) {
error_log("[pricing] تعذّر جلب أسعار $country: " . $e->getMessage());
return [];
}
}