<?php
ob_start(); // 🛡️ تفعيل درع الحماية
header('Content-Type: application/json; charset=utf-8');
error_reporting(0);
ini_set('display_errors', 0);

// 🚀 دالة سحرية لضمان إرسال JSON نقي
function sendJsonResponse($status, $message, $extra = []) {
    $garbage = ob_get_clean(); 
    $response = ['status' => $status, 'message' => $message];
    
    if (!empty($garbage)) {
        $response['message'] .= " (ملاحظة تقنية: " . strip_tags($garbage) . ")";
    }
    if (!empty($extra)) {
        $response = array_merge($response, $extra);
    }
    echo json_encode($response);
    exit;
}

try {
    require_once 'db_connect.php';

    if (!isset($conn)) {
        sendJsonResponse('error', 'ملف الاتصال بقاعدة البيانات غير موجود.');
    }

    // 🛡️ توحيد التشفير بين السيرفر وقاعدة البيانات لمنع الأخطاء المستقبلية
    $conn->set_charset("utf8mb4");

    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        sendJsonResponse('error', 'طريقة إرسال البيانات يجب أن تكون POST.');
    }

    if (session_status() === PHP_SESSION_NONE) { session_start(); }

    // 🔥 اللمسة السحرية: نأخذ الاسم من الجلسة أولاً لنحفظه بصيغته الأصلية ليظهر في أرشيف المدرس
    $teacher_name = $_SESSION['teacher_name'] ?? $_SESSION['admin_user'] ?? $_POST['teacher_name'] ?? 'مدرس غير معروف';
    $teacher_name = $conn->real_escape_string(trim($teacher_name));

    $action = $_POST['action'] ?? 'save';
    $db_id = isset($_POST['db_id']) ? (int)$_POST['db_id'] : 0;

    // 🛡️ استخدام CONVERT لتخطي خطأ اختلاف التشفير (Illegal mix of collations)
    $school_name = 'المدرسة العامة';
    if ($teacher_name !== 'مدرس غير معروف') {
        $school_q = $conn->query("SELECT school_name FROM teachers WHERE CONVERT(teacher_name USING utf8mb4) = CONVERT('$teacher_name' USING utf8mb4) LIMIT 1");
        if ($school_q && $school_q->num_rows > 0) {
            $school_row = $school_q->fetch_assoc();
            $school_name = $conn->real_escape_string($school_row['school_name'] ?? 'المدرسة العامة');
        }
    }

    // 1. أمر الحذف
    if ($action === 'delete') {
        if ($db_id > 0) {
            $sql = "DELETE FROM schedules_archive WHERE id = $db_id";
            if ($conn->query($sql) === TRUE) {
                sendJsonResponse('success', 'تم الحذف من قاعدة البيانات بنجاح.');
            } else {
                sendJsonResponse('error', 'حدث خطأ أثناء الحذف: ' . $conn->error);
            }
        } else {
            sendJsonResponse('error', 'رقم الجدول مفقود.');
        }
    }

    // تجهيز بيانات الحفظ
    $title = $conn->real_escape_string($_POST['title'] ?? '');
    $table_html = $conn->real_escape_string($_POST['table_html'] ?? ''); 
    $stage = $conn->real_escape_string($_POST['stage'] ?? '');
    $dept = $conn->real_escape_string($_POST['dept'] ?? '');
    $branch = $conn->real_escape_string($_POST['branch'] ?? '');
    $student = $conn->real_escape_string($_POST['student'] ?? 'all');

    if (empty($title) || empty($table_html)) {
        sendJsonResponse('error', 'البيانات فارغة! يرجى كتابة عنوان للجدول.');
    }

    // 2. أمر التحديث
    if ($action === 'update' && $db_id > 0) {
        $sql = "UPDATE schedules_archive SET 
                schedule_title = '$title', table_html = '$table_html', 
                target_stage = '$stage', target_dept = '$dept', 
                target_branch = '$branch', target_student = '$student',
                teacher_name = '$teacher_name', school_name = '$school_name'
                WHERE id = $db_id";
        
        if ($conn->query($sql) === TRUE) {
            sendJsonResponse('success', 'تم تحديث الجدول بنجاح.');
        } else {
            sendJsonResponse('error', 'خطأ في قاعدة البيانات أثناء التحديث: ' . $conn->error);
        }
    } 
    // 3. أمر الإضافة الجديدة
    else {
        $sql = "INSERT INTO schedules_archive (teacher_name, schedule_title, table_html, target_stage, target_dept, target_branch, target_student, school_name) 
                VALUES ('$teacher_name', '$title', '$table_html', '$stage', '$dept', '$branch', '$student', '$school_name')";

        if ($conn->query($sql) === TRUE) {
            $new_id = $conn->insert_id;
            sendJsonResponse('success', 'تم النشر والحفظ بنجاح!', ['db_id' => $new_id]);
        } else {
            sendJsonResponse('error', 'خطأ في قاعدة البيانات أثناء الحفظ: ' . $conn->error);
        }
    }

} catch (Exception $e) {
    sendJsonResponse('error', 'خطأ برمجي في السيرفر: ' . $e->getMessage());
} catch (Error $e) {
    sendJsonResponse('error', 'انهيار في السيرفر: ' . $e->getMessage());
}
?>