<?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();

// التحقق من صلاحية التعديل (يمكن استخدام edit_college أو edit_department)
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();
}

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

// 2. جلب بيانات القسم الحالية
$current_dept = [];
try {
    // استخدام اسم الجدول والعمود كما طلبت (departemenets, Departement)
    $stmt = "SELECT * FROM departemenets WHERE Departement_ID = ? LIMIT 1";
    if (method_exists($db, 'select')) {
        $result = $db->select($stmt, [$dept_id]);
    } else {
        $query = $db->prepare($stmt);
        $query->execute([$dept_id]);
        $result = $query->fetchAll(PDO::FETCH_ASSOC);
    }

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

// 3. جلب قائمة الكليات (للقائمة المنسدلة)
$colleges_list = [];
try {
    $colleges_sql = "SELECT College_ID, College FROM colleges ORDER BY College ASC";
    if (method_exists($db, 'select')) {
        $colleges_list = $db->select($colleges_sql);
    } else {
        $q = $db->prepare($colleges_sql);
        $q->execute();
        $colleges_list = $q->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (Exception $e) {
    $errors[] = 'خطأ في جلب قائمة الكليات: ' . $e->getMessage();
}

// تهيئة البيانات للعرض
$data = [
    'college_id' => $_POST['college_id'] ?? $current_dept['College_ID'],
    'department_name' => $_POST['department_name'] ?? $current_dept['Departement']
];

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

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

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

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

    // الحفظ في قاعدة البيانات
    if (empty($errors)) {
        try {
            // جلب اسم الكلية الجديدة
            $coll_res = $db->select("SELECT College FROM colleges WHERE College_ID = ? LIMIT 1", [$data['college_id']]);
            $new_college_name = $coll_res[0]['College'] ?? '';

            // 1. تحديث جدول الأقسام (departemenets)
            $sql = "UPDATE departemenets SET 
                    College_ID = ?, 
                    College = ?, 
                    Departement = ? 
                    WHERE Departement_ID = ?";
            
            $params = [
                $data['college_id'], 
                $new_college_name, 
                $data['department_name'], 
                $dept_id
            ];

            if (method_exists($db, 'update')) {
                $db->update($sql, $params);
            } else {
                $stmt = $db->prepare($sql);
                $stmt->execute($params);
            }

            // 2. تحديث الجداول المرتبطة (الطلاب والأساتذة) للحفاظ على تكامل البيانات
            // تحديث الطلاب (students table uses 'Departement')
            $update_students = "UPDATE students SET 
                                Departement = ?, 
                                College_ID = ?, 
                                College = ? 
                                WHERE Departement_ID = ?";
            $std_params = [$data['department_name'], $data['college_id'], $new_college_name, $dept_id];
            
            // تحديث الأساتذة (faculty table uses 'Department' - assuming standard spelling here per your previous prompts)
            $update_faculty = "UPDATE faculty SET 
                               Department = ?, 
                               College_ID = ?, 
                               College = ? 
                               WHERE Department_ID = ?";
            $fac_params = [$data['department_name'], $data['college_id'], $new_college_name, $dept_id];

            if (method_exists($db, 'update')) {
                $db->update($update_students, $std_params);
                $db->update($update_faculty, $fac_params);
            } else {
                $s_stmt = $db->prepare($update_students);
                $s_stmt->execute($std_params);
                $f_stmt = $db->prepare($update_faculty);
                $f_stmt->execute($fac_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_dept['Departement']); ?></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-6">
                        <label for="college_id" class="form-label">الكلية التابع لها <span class="text-danger">*</span></label>
                        <select class="form-select" id="college_id" name="college_id" required>
                            <option value="" disabled>-- اختر الكلية --</option>
                            <?php foreach ($colleges_list as $college): ?>
                                <option value="<?php echo $college['College_ID']; ?>" 
                                    <?php echo ($data['college_id'] == $college['College_ID']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($college['College']); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="department_name" class="form-label">اسم القسم (Departement) <span class="text-danger">*</span></label>
                        <input type="text" class="form-control" id="department_name" name="department_name" 
                               value="<?php echo htmlspecialchars($data['department_name']); ?>" 
                               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'; ?>