54 lines
2.4 KiB
PHP
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);
|
|
}
|