<?php
// cron_cleanup_waiting.php
// مسار الاتصال بقاعدة البيانات
require_once __DIR__ . '/../../get_connect.php';

// تسجيل في اللوج لبداية العملية
error_log("⏰ [Cleanup Cron] Started cleaning old waiting rides...");

try {
    // المدة المسموحة بالدقائق
    $minutesLimit = 15;

    // =========================================================
    // الخطوة 1: تحديث الحالة في الجدول الرئيسي (الأرشيف)
    // =========================================================
    // نقوم بتحديث حالة الرحلات التي ستُحذف ليعلم الراكب أنها انتهت (Time Out)
    // بدلاً من أن تبقى 'waiting' للأبد في سجلات الراكب
    
    $sqlUpdate = "UPDATE ride 
                  SET status = 'timeout' 
                  WHERE id IN (
                      SELECT id FROM waitingRides 
                      WHERE created_at < DATE_SUB(NOW(), INTERVAL $minutesLimit MINUTE)
                  ) AND status = 'waiting'"; // نتأكد أننا نحدث ما هو معلق فقط

    $stmtUpdate = $con->prepare($sqlUpdate);
    $stmtUpdate->execute();
    $updatedCount = $stmtUpdate->rowCount();

    // =========================================================
    // الخطوة 2: الحذف من جدول الانتظار (تنظيف Hot Data)
    // =========================================================
    
    $sqlDelete = "DELETE FROM waitingRides 
                  WHERE created_at < DATE_SUB(NOW(), INTERVAL $minutesLimit MINUTE)";

    $stmtDelete = $con->prepare($sqlDelete);
    $stmtDelete->execute();
    $deletedCount = $stmtDelete->rowCount();

    // =========================================================
    // الخطوة 3: (اختياري) تنظيف الريدز
    // =========================================================
    // بما أنك تستخدم Redis، المفترض أن تحذفها منه أيضاً.
    // لكن بما أن الريدز يعتمد على TTL (Expire) أو سيتم تحديثه عند الطلب القادم،
    // فالحذف من الـ MySQL يكفي لأن getRideWaiting سيفحص MySQL ولن يجدها.
    
    // تقرير العملية
    if ($deletedCount > 0) {
        $msg = "✅ [Cleanup Cron] Success: Timed out $updatedCount rides in Main DB, and Deleted $deletedCount rides from Waiting DB.";
        error_log($msg);
        echo json_encode(["status" => "success", "message" => $msg]);
    } else {
        $msg = "💤 [Cleanup Cron] No expired rides found.";
        error_log($msg);
        echo json_encode(["status" => "success", "message" => "Nothing to clean."]);
    }

} catch (PDOException $e) {
    $errorMsg = "❌ [Cleanup Cron] Error: " . $e->getMessage();
    error_log($errorMsg);
    echo json_encode(["status" => "failure", "message" => $e->getMessage()]);
}
?>