Files
2026-08-09 16:56:13 +03:00

54 lines
2.4 KiB
PHP

<?php
// ride/scheduled/list.php — حجوزات الراكب
//
// ‏القادمة أولاً ثم الأحدث تاريخاً: الراكب يفتح الشاشة ليرى ما ينتظره،
// ‏لا ليتصفّح أرشيفه.
require_once __DIR__ . '/../../connect.php';
$passengerId = $user_id ?? '';
if (empty($passengerId)) {
jsonError('Unauthorized', 401);
}
$scope = filterRequest('scope') ?: 'upcoming';
try {
if ($scope === 'upcoming_driver') {
// ═══════════════════════════════════════════════════════════════
// ‏لا عمود `driver_id` في scheduled_rides — ولا يصحّ أن يوجد:
// ‏الحجز يُنشئه الراكب، والسائق لا يُسند إلا لحظة توليد الرحلة
// ‏الفعلية عبر add_ride.php. الاستعلام السابق كان يسأل عن عمود
// ‏غير موجود فيسقط بـ 500 على كل فتح للشاشة.
//
// ‏الربط الصحيح عبر الرحلة المولّدة: حجوزات أُسندت لهذا السائق
// ‏ولم يحن موعدها بعد.
// ═══════════════════════════════════════════════════════════════
$sql = "SELECT sr.*
FROM scheduled_rides sr
JOIN ride r ON r.id = sr.ride_id
WHERE r.driver_id = ?
AND sr.scheduled_at >= NOW()
AND sr.status NOT IN ('cancelled', 'expired')
ORDER BY sr.scheduled_at ASC
LIMIT 50";
$stmt = $con->prepare($sql);
$stmt->execute([$passengerId]); // $passengerId here is actually the user_id (driver's ID)
} else {
$sql = "SELECT * FROM scheduled_rides WHERE passenger_id = ?";
if ($scope === 'upcoming') {
$sql .= " AND status = 'scheduled' AND scheduled_at >= NOW()";
}
$sql .= " ORDER BY scheduled_at ASC LIMIT 50";
$stmt = $con->prepare($sql);
$stmt->execute([$passengerId]);
}
jsonSuccess(['bookings' => $stmt->fetchAll(PDO::FETCH_ASSOC)], 'ok');
} catch (PDOException $e) {
error_log('[scheduled/list] ' . $e->getMessage());
jsonError('DB Error', 500);
}