<?php
// تفعيل عرض الأخطاء للتطوير
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$pageTitle = 'تعديل بيانات الكلية';
include '../../includes/header.php';

// التحقق من الجلسة والصلاحيات
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

checkLogin();

// التحقق من صلاحية التعديل
if (!hasPermission('edit_college')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لتعديل بيانات الكليات.';
    header('Location: index.php');
    exit();
}

$db = getDB();
$errors = [];
$success_msg = '';

// 1. التحقق من وجود المعرف (ID) في الرابط
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    $_SESSION['error_message'] = 'رقم الكلية غير صحيح.';
    header('Location: index.php');
    exit();
}

$college_id = (int)$_GET['id'];

// 2. جلب بيانات الكلية الحالية
$current_college = [];
try {
    $stmt = "SELECT * FROM colleges WHERE College_ID = ? LIMIT 1";
    if (method_exists($db, 'select')) {
        $result = $db->select($stmt, [$college_id]);
    } else {
        $query = $db->prepare($stmt);
        $query->execute([$college_id]);
        $result = $query->fetchAll(PDO::FETCH_ASSOC);
    }

    if (empty($result)) {
        $_SESSION['error_message'] = 'الكلية غير موجودة.';
        header('Location: index.php');
        exit();
    }
    $current_college = $result[0];
} catch (Exception $e) {
    $errors[] = 'خطأ في جلب البيانات: ' . $e->getMessage();
}

// القيم الافتراضية (إما من البوست عند الخطأ أو من قاعدة البيانات)
$data = [
    'college_name' => $_POST['college_name'] ?? $current_college['College']
];

// 3. معالجة طلب التعديل (POST)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    // تنظيف المدخلات
    $data['college_name'] = trim($_POST['college_name'] ?? '');

    // التحقق من صحة البيانات
    if (empty($data['college_name'])) {
        $errors[] = 'يرجى إدخال اسم الكلية.';
    }

    // التحقق من تكرار الاسم (يجب ألا يكون مسجلاً لكلية أخرى غير الحالية)
    if (!empty($data['college_name'])) {
        $check_sql = "SELECT College_ID FROM colleges WHERE College = ? AND College_ID != ?";
        
        if (method_exists($db, 'select')) {
            $existing = $db->select($check_sql, [$data['college_name'], $college_id]);
        } else {
            $stmt = $db->prepare($check_sql);
            $stmt->execute([$data['college_name'], $college_id]);
            $existing = $stmt->fetchAll();
        }

        if (!empty($existing)) {
            $errors[] = 'اسم الكلية مسجل بالفعل لكلية أخرى.';
        }
    }

    // الحفظ في قاعدة البيانات
    if (empty($errors)) {
        try {
            // تحديث اسم الكلية في جدول الكليات
            $sql = "UPDATE colleges SET College = ? WHERE College_ID = ?";
            
            // تحديث اسم الكلية في الجداول المرتبطة (إذا لم تكن تستخدم العلاقات والمفاتيح الأجنبية للتحديث التلقائي)
            // هذا إجراء احترازي للحفاظ على تكامل البيانات في جدول الطلاب والأقسام
            $update_depts = "UPDATE departemenets SET College = ? WHERE College_ID = ?";
            $update_students = "UPDATE students SET College = ? WHERE College_ID = ?";

            $params = [$data['college_name'], $college_id];

            // تنفيذ التحديثات
            if (method_exists($db, 'update')) {
                $db->update($sql, $params);
                // تحديث الأسماء في الجداول الأخرى
                $db->update($update_depts, $params);
                $db->update($update_students, $params);
            } else {
                // Fallback implementation
                $stmt = $db->prepare($sql);
                $stmt->execute($params);
                
                $stmt_d = $db->prepare($update_depts);
                $stmt_d->execute($params);
                
                $stmt_s = $db->prepare($update_students);
                $stmt_s->execute($params);
            }

            $_SESSION['success_message'] = 'تم تعديل بيانات الكلية بنجاح!';
            header('Location: index.php');
            exit();

        } catch (Exception $e) {
            error_log($e->getMessage());
            $errors[] = 'حدث خطأ أثناء التحديث: ' . $e->getMessage();
        }
    }
}
?>

<div class="content-area">
    <div class="page-header mb-4">
        <h2 class="page-title">تعديل بيانات الكلية</h2>
        <nav aria-label="breadcrumb">
            <ol class="breadcrumb">
                <li class="breadcrumb-item"><a href="../../index.php">الرئيسية</a></li>
                <li class="breadcrumb-item"><a href="index.php">الكليات</a></li>
                <li class="breadcrumb-item active" aria-current="page">تعديل كلية</li>
            </ol>
        </nav>
    </div>

    <div class="card shadow-sm">
        <div class="card-header bg-warning text-dark">
            <h5 class="mb-0"><i class="fas fa-edit me-2"></i>تعديل: <?php echo htmlspecialchars($current_college['College']); ?></h5>
        </div>
        <div class="card-body p-4">
            
            <?php if (!empty($errors)): ?>
                <div class="alert alert-danger">
                    <ul class="mb-0">
                        <?php foreach ($errors as $error): ?>
                            <li><?php echo htmlspecialchars($error); ?></li>
                        <?php endforeach; ?>
                    </ul>
                </div>
            <?php endif; ?>

            <form method="POST" action="">
                <div class="row g-3">
                    
                    <div class="col-md-12">
                        <label for="college_name" class="form-label">اسم الكلية <span class="text-danger">*</span></label>
                        <input type="text" class="form-control" id="college_name" name="college_name" 
                               value="<?php echo htmlspecialchars($data['college_name']); ?>" 
                               placeholder="أدخل اسم الكلية الجديد" required>
                    </div>

                    <div class="col-12">
                        <div class="alert alert-info py-2 small">
                            <i class="fas fa-info-circle me-1"></i>
                            تغيير اسم الكلية سيؤدي إلى تحديث اسمها في جميع سجلات الأقسام والطلاب المرتبطة بها تلقائياً.
                        </div>
                    </div>

                </div>

                <div class="mt-4 d-flex justify-content-end gap-2">
                    <a href="index.php" class="btn btn-secondary">إلغاء</a>
                    <button type="submit" class="btn btn-warning px-4"><i class="fas fa-save me-2"></i>حفظ التعديلات</button>
                </div>
            </form>
        </div>
    </div>
</div>

<?php include '../../includes/footer.php'; ?>