<?php
require_once __DIR__ . '/../connect.php';

// Allow any authenticated user to report errors, but validate input
$error   = filterRequest("error");
$userId  = filterRequest("userId");
$userType = filterRequest("userType");
$phone   = filterRequest("phone");
$device  = filterRequest("device");
$details = filterRequest("details");

// Sanitize log input to prevent log injection
$safeError   = str_replace(["\r", "\n"], ' ', substr($error ?? '', 0, 500));
$safeUserId  = str_replace(["\r", "\n"], ' ', substr($userId ?? '', 0, 50));
$safeUserType = str_replace(["\r", "\n"], ' ', substr($userType ?? '', 0, 50));
$safeDevice  = str_replace(["\r", "\n"], ' ', substr($device ?? '', 0, 200));
$safeDetails = str_replace(["\r", "\n"], ' ', substr($details ?? '', 0, 1000));

$logMsg = "[$safeUserType ID: $safeUserId] Error: $safeError | Where: $safeDevice | Details: $safeDetails";
appLog($logMsg, "APP_ERROR");

// جملة SQL لإدخال البيانات، مع إضافة الحقل الجديد
// لاحظ أننا لا نرسل حقل 'status' لأنه سيأخذ القيمة الافتراضية 'new' تلقائياً في قاعدة البيانات
$sql = "INSERT INTO `error` (`error`, `userId`, `userType`, `phone`, `device`, `details`) 
        VALUES (:error, :userId, :userType, :phone, :device, :details)";

$stmt = $con->prepare($sql);

// ربط المتغيرات بالقيم
$stmt->bindParam(':error', $error);
$stmt->bindParam(':userId', $userId);
$stmt->bindParam(':userType', $userType);
$stmt->bindParam(':phone', $phone);
$stmt->bindParam(':device', $device);
$stmt->bindParam(':details', $details); // <-- ربط المتغير الجديد

$stmt->execute();

if ($stmt->rowCount() > 0) {
    // طباعة رسالة نجاح مع تفاصيل الخطأ لسهولة التتبع في الكونسول
    jsonSuccess($error);
} else {
    // طباعة رسالة فشل
    jsonError("Failed to save error data");
}
?>
