<?php
session_start();
require_once __DIR__ . '/config.php';

// ✅ دالة shutdown لمعالجة الأخطاء القاتلة (Fatal Errors)
register_shutdown_function(function() {
    $error = error_get_last();
    if ($error && ($error['type'] === E_ERROR || $error['type'] === E_PARSE || $error['type'] === E_CORE_ERROR || $error['type'] === E_COMPILE_ERROR)) {
        if (ob_get_length()) ob_clean();
        http_response_code(500);
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode(['status' => 'error', 'message' => 'حدث خطأ قاتل: ' . $error['message']], JSON_UNESCAPED_UNICODE);
        exit;
    }
});

header('Content-Type: application/json; charset=utf-8');

// التحقق من تسجيل الدخول
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['status' => 'error', 'message' => 'غير مسموح، يرجى تسجيل الدخول']);
    exit;
}

// التأكد من وجود جدول user_places وإنشائه إذا لم يكن موجوداً
try {
    $conn->query("SELECT 1 FROM user_places LIMIT 1");
} catch (PDOException $e) {
    $conn->exec("CREATE TABLE `user_places` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_id` int(11) NOT NULL,
      `place_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
      `latitude` decimal(10,7) NOT NULL,
      `longitude` decimal(10,7) NOT NULL,
      `radius` int(11) NOT NULL DEFAULT 100, -- نصف القطر بالمتر
      `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `user_id_idx` (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");
}

$input = json_decode(file_get_contents('php://input'), true);

// التحقق من صحة البيانات المدخلة
$place_name = trim($input['place_name'] ?? '');
$latitude = filter_var($input['latitude'] ?? null, FILTER_VALIDATE_FLOAT);
$longitude = filter_var($input['longitude'] ?? null, FILTER_VALIDATE_FLOAT);
$radius = filter_var($input['radius'] ?? 100, FILTER_VALIDATE_INT, ['options' => ['min_range' => 10, 'max_range' => 1000]]); // نصف قطر معقول

if (empty($place_name) || $latitude === false || $longitude === false || $radius === false) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'بيانات غير صالحة. يرجى التحقق من الحقول.']);
    exit;
}

$user_id = $_SESSION['user_id'];

try {
    $stmt = $conn->prepare("INSERT INTO user_places (user_id, place_name, latitude, longitude, radius) VALUES (:user_id, :place_name, :latitude, :longitude, :radius)");
    $stmt->execute([
        'user_id' => $user_id,
        'place_name' => $place_name,
        'latitude' => $latitude,
        'longitude' => $longitude,
        'radius' => $radius
    ]);
    echo json_encode(['status' => 'success', 'message' => 'تم حفظ المكان المفضل بنجاح.']);
} catch (PDOException $e) {
    http_response_code(500);
    error_log("Add user place error: " . $e->getMessage());
    echo json_encode(['status' => 'error', 'message' => 'حدث خطأ أثناء حفظ المكان.']);
}