<?php
// ملف استقبال وإرسال الموقع المباشر بدون تخزين في قاعدة البيانات
// Real-time location handler without database storage

// ✅ إعداد المنطقة الزمنية لدولة العراق
date_default_timezone_set('Asia/Baghdad');

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

// التعامل مع طلبات OPTIONS للـ CORS
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// مجلد مؤقت لحفظ الموقع المباشر (في الذاكرة المؤقتة)
$temp_dir = sys_get_temp_dir() . '/almanara_realtime/';
if (!is_dir($temp_dir)) {
    mkdir($temp_dir, 0777, true);
}

// دالة لتنظيف الملفات القديمة (أكثر من 30 ثانية)
function cleanOldFiles($dir) {
    $files = glob($dir . '*.json');
    $now = time();
    foreach ($files as $file) {
        if ($now - filemtime($file) > 10) { // حذف الملفات الأقدم من 10 ثوانٍ
            unlink($file);
        }
    }
}

// تنظيف الملفات القديمة
cleanOldFiles($temp_dir);

$method = $_SERVER['REQUEST_METHOD'];

if ($method === 'POST') {
    // استقبال الموقع من التطبيق
    $input = file_get_contents('php://input');
    $data = json_decode($input, true);
    
    // Log for debugging
    error_log("📥 [real_time_location.php] POST request received");
    error_log("📥 [real_time_location.php] Raw input: " . substr($input, 0, 500));
    error_log("📥 [real_time_location.php] Parsed data: " . json_encode($data));
    
    if (!$data || !isset($data['device_id']) || !isset($data['latitude']) || !isset($data['longitude'])) {
        error_log("❌ [real_time_location.php] Invalid data received");
        http_response_code(400);
        echo json_encode([
            'success' => false,
            'message' => 'بيانات غير صحيحة. يجب إرسال device_id, latitude, longitude',
            'received_data' => $data
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // التحقق من صحة الإحداثيات
    $latitude = floatval($data['latitude']);
    $longitude = floatval($data['longitude']);
    
    if ($latitude < -90 || $latitude > 90 || $longitude < -180 || $longitude > 180) {
        error_log("❌ [real_time_location.php] Invalid coordinates: lat=$latitude, lng=$longitude");
        http_response_code(400);
        echo json_encode([
            'success' => false,
            'message' => 'إحداثيات غير صحيحة'
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // إعداد بيانات الموقع المباشر
    $location_data = [
        'device_id' => trim($data['device_id']),
        'device_name' => $data['device_name'] ?? $data['device_id'],
        'latitude' => $latitude,
        'longitude' => $longitude,
        'accuracy' => $data['accuracy'] ?? null,
        'speed' => $data['speed'] ?? null,
        'heading' => $data['heading'] ?? null,
        'altitude' => $data['altitude'] ?? null,
        'battery' => $data['battery'] ?? null,
        'timestamp' => date('Y-m-d H:i:s'),
        'unix_timestamp' => time()
    ];
    
    // حفظ الموقع في ملف مؤقت
    $file_path = $temp_dir . trim($data['device_id']) . '.json';
    $saved = file_put_contents($file_path, json_encode($location_data));
    
    error_log("💾 [real_time_location.php] Saved location to: $file_path");
    error_log("💾 [real_time_location.php] File saved: " . ($saved !== false ? 'YES' : 'NO'));
    error_log("💾 [real_time_location.php] Location data: " . json_encode($location_data));
    
    // إرجاع استجابة نجاح
    echo json_encode([
        'success' => true,
        'message' => 'تم استقبال الموقع المباشر بنجاح',
        'timestamp' => $location_data['timestamp'],
        'device_id' => $location_data['device_id'],
        'file_path' => $file_path
    ], JSON_UNESCAPED_UNICODE);
    
} elseif ($method === 'GET') {
    // إرسال الموقع المباشر للوحة التحكم
    
    if (isset($_GET['device_id'])) {
        // جلب موقع جهاز محدد
        $device_id = trim($_GET['device_id']);
        $file_path = $temp_dir . $device_id . '.json';
        
        // Log for debugging
        error_log("🔍 [real_time_location.php] Looking for device: $device_id");
        error_log("🔍 [real_time_location.php] File path: $file_path");
        error_log("🔍 [real_time_location.php] File exists: " . (file_exists($file_path) ? 'YES' : 'NO'));
        
        if (file_exists($file_path)) {
            $location_data = json_decode(file_get_contents($file_path), true);
            $file_age = time() - $location_data['unix_timestamp'];
            
            error_log("🔍 [real_time_location.php] File age: $file_age seconds");
            error_log("🔍 [real_time_location.php] Location data: " . json_encode($location_data));
            
            // التحقق من أن البيانات ليست قديمة جداً (أكثر من 10 ثوانٍ)
            if ($file_age <= 10) {
                echo json_encode([
                    'success' => true,
                    'data' => $location_data,
                    'is_live' => true,
                    'file_age' => $file_age
                ], JSON_UNESCAPED_UNICODE);
            } else {
                echo json_encode([
                    'success' => false,
                    'message' => 'لا توجد بيانات موقع حديثة لهذا الجهاز (عمر الملف: ' . $file_age . ' ثانية)',
                    'is_live' => false,
                    'file_age' => $file_age
                ], JSON_UNESCAPED_UNICODE);
            }
        } else {
            // Check if directory exists and list files
            $files = glob($temp_dir . '*.json');
            error_log("🔍 [real_time_location.php] Available files in temp dir: " . json_encode($files));
            
            echo json_encode([
                'success' => false,
                'message' => 'لا توجد بيانات موقع مباشر لهذا الجهاز',
                'is_live' => false,
                'available_files' => count($files),
                'temp_dir' => $temp_dir
            ], JSON_UNESCAPED_UNICODE);
        }
        
    } else {
        // جلب جميع الأجهزة التي لها موقع مباشر
        $files = glob($temp_dir . '*.json');
        $devices = [];
        
        foreach ($files as $file) {
            $location_data = json_decode(file_get_contents($file), true);
            
            // التحقق من أن البيانات حديثة (أقل من 10 ثوانٍ)
            if (time() - $location_data['unix_timestamp'] <= 10) {
                $devices[] = $location_data;
            }
        }
        
        echo json_encode([
            'success' => true,
            'data' => $devices,
            'count' => count($devices)
        ]);
    }
    
} else {
    http_response_code(405);
    echo json_encode([
        'success' => false,
        'message' => 'طريقة الطلب غير مدعومة'
    ]);
}
?>