<?php
// grades.php - صفحة إدارة التقديرات (محدثة مع التقدير بالعربية)
require 'db.php';
require 'helpers.php';
require_committee();

// تفعيل وضع التصحيح الآمن
if (isset($_GET['debug']) && $_GET['debug'] == 1 && ($_SESSION['user_role'] ?? '') === 'admin') {
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
} else {
    ini_set('display_errors', 0);
    error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
}

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$committeeId   = (int)($_SESSION['committee_id'] ?? 0);
$committeeName = (string)($_SESSION['committee_name'] ?? '');
$isAdmin       = ($_SESSION['user_role'] ?? '') === 'admin';

$mysqli1->set_charset('utf8mb4');

/* ===== دوال التحقق من صحة المدخلات ===== */
function validateInt($value, $default = null) {
    if ($value === null || $value === '') return $default;
    if (is_string($value) && !ctype_digit($value) && !is_numeric($value)) {
        return $default;
    }
    return filter_var($value, FILTER_VALIDATE_INT) !== false ? (int)$value : $default;
}

function validateFloat($value, $default = null, $min = 0, $max = 100) {
    if ($value === null || $value === '') return $default;
    $value = filter_var($value, FILTER_VALIDATE_FLOAT);
    if ($value === false) return $default;
    $value = max($min, min($max, $value));
    return round($value, 2);
}

function validateGrade($grade, $default = '') {
    if (empty($grade)) return $default;
    $grade = trim(strtoupper($grade));
    $grade = preg_replace('/[^A-Z+]/', '', $grade);
    $allowed_grades = ['A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F', 'I', 'W','N'];
    return in_array($grade, $allowed_grades) ? $grade : $default;
}

function validateGradeAr($gradeAr, $default = '') {
    if (empty($gradeAr)) return $default;
    $gradeAr = trim($gradeAr);
    $gradeAr = preg_replace('/[^\p{Arabic}\s0-9\+\(\)\-]/u', '', $gradeAr);
    return mb_substr($gradeAr, 0, 20, 'UTF-8') ?: $default;
}

/* ===== دوال مساعدة ===== */
function getGradesStatistics() {
    global $mysqli1;
    
    try {
        $stats = [
            'total' => 0,
            'used_in_students' => 0,
            'max_weight' => 0,
            'min_weight' => 0
        ];
        
        $totalStmt = $mysqli1->prepare("SELECT COUNT(*) as count FROM tblgrade");
        if ($totalStmt) {
            $totalStmt->execute();
            $result = $totalStmt->get_result();
            $stats['total'] = (int)$result->fetch_assoc()['count'];
            $totalStmt->close();
        }
        
        $usedStmt = $mysqli1->prepare("
            SELECT COUNT(DISTINCT grade_id) as count 
            FROM studentsubjects 
            WHERE grade_id IS NOT NULL AND deleted_at IS NULL
        ");
        if ($usedStmt) {
            $usedStmt->execute();
            $result = $usedStmt->get_result();
            $stats['used_in_students'] = (int)$result->fetch_assoc()['count'];
            $usedStmt->close();
        }
        
        $weightStmt = $mysqli1->prepare("SELECT MAX(weight) as max_weight, MIN(weight) as min_weight FROM tblgrade");
        if ($weightStmt) {
            $weightStmt->execute();
            $result = $weightStmt->get_result();
            $row = $result->fetch_assoc();
            $stats['max_weight'] = (float)($row['max_weight'] ?? 0);
            $stats['min_weight'] = (float)($row['min_weight'] ?? 0);
            $weightStmt->close();
        }
        
        return $stats;
    } catch (Exception $e) {
        error_log("خطأ في جلب إحصائيات التقديرات: " . $e->getMessage());
        return null;
    }
}

$csrf_token = csrf_token();

/* ===== معالجة الإجراءات ===== */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    
    if (!verify_csrf($_POST['csrf'] ?? '')) {
        $_SESSION['error_message'] = 'رمز الجلسة غير صالح.';
        header('Location: grades.php');
        exit;
    }
    
    // إضافة تقدير جديد
    if ($_POST['action'] === 'add' && $isAdmin) {
        try {
            $grade = validateGrade($_POST['grade'] ?? '');
            $grade_ar = validateGradeAr($_POST['grade_ar'] ?? '');
            $xmin = isset($_POST['xmin']) && $_POST['xmin'] !== '' ? validateFloat($_POST['xmin'], 0, 0, 100) : null;
            $xmax = isset($_POST['xmax']) && $_POST['xmax'] !== '' ? validateFloat($_POST['xmax'], 0, 0, 100) : null;
            $weight = validateFloat($_POST['weight'] ?? 0, 0, 0, 4);
            
            $errors = [];
            
            if (empty($grade)) {
                $errors[] = 'رمز التقدير مطلوب';
            }
            
            // التحقق من النطاق فقط إذا تم إدخال كلا القيمتين
            if ($xmin !== null && $xmax !== null) {
                if ($xmin >= $xmax) {
                    $errors[] = 'الحد الأدنى يجب أن يكون أصغر من الحد الأعلى';
                }
            }
            
            if (!empty($errors)) {
                $_SESSION['error_message'] = implode('<br>', $errors);
                header('Location: grades.php');
                exit;
            }
            
            // التحقق من عدم وجود التقدير
            $check_stmt = $mysqli1->prepare("SELECT id FROM tblgrade WHERE grade = ?");
            if ($check_stmt) {
                $check_stmt->bind_param("s", $grade);
                $check_stmt->execute();
                if ($check_stmt->get_result()->num_rows > 0) {
                    $_SESSION['error_message'] = 'هذا التقدير موجود مسبقاً';
                    header('Location: grades.php');
                    exit;
                }
                $check_stmt->close();
            }
            
            // التحقق من عدم تداخل النطاقات (فقط إذا تم إدخال كلا القيمتين)
            if ($xmin !== null && $xmax !== null) {
                $check_range = $mysqli1->prepare("
                    SELECT id FROM tblgrade 
                    WHERE (xmin <= ? AND xmax >= ?) OR (xmin <= ? AND xmax >= ?)
                ");
                if ($check_range) {
                    $check_range->bind_param("dddd", $xmin, $xmin, $xmax, $xmax);
                    $check_range->execute();
                    if ($check_range->get_result()->num_rows > 0) {
                        $_SESSION['error_message'] = 'هناك تداخل في نطاق الدرجات مع تقدير موجود';
                        header('Location: grades.php');
                        exit;
                    }
                    $check_range->close();
                }
            }
            
            // إضافة التقدير
            $insert_stmt = $mysqli1->prepare("
                INSERT INTO tblgrade (grade, garde_ar, xmin, xmax, weight) 
                VALUES (?, ?, ?, ?, ?)
            ");
            if ($insert_stmt) {
                $insert_stmt->bind_param("ssddd", $grade, $grade_ar, $xmin, $xmax, $weight);
                
                if ($insert_stmt->execute()) {
                    $_SESSION['success_message'] = 'تم إضافة التقدير بنجاح';
                    error_log("Admin added new grade: $grade ($grade_ar)");
                }
                $insert_stmt->close();
            }
            
        } catch (Exception $e) {
            error_log("خطأ في إضافة تقدير: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في النظام: ' . ($isAdmin ? $e->getMessage() : '');
        }
        
        header('Location: grades.php');
        exit;
    }
    
    // تحديث تقدير
    elseif ($_POST['action'] === 'edit' && $isAdmin) {
        try {
            $id = validateInt($_POST['id'] ?? 0);
            $grade = validateGrade($_POST['grade'] ?? '');
            $grade_ar = validateGradeAr($_POST['grade_ar'] ?? '');
            $xmin = isset($_POST['xmin']) && $_POST['xmin'] !== '' ? validateFloat($_POST['xmin'], 0, 0, 100) : null;
            $xmax = isset($_POST['xmax']) && $_POST['xmax'] !== '' ? validateFloat($_POST['xmax'], 0, 0, 100) : null;
            $weight = validateFloat($_POST['weight'] ?? 0, 0, 0, 4);
            
            $errors = [];
            
            if ($id <= 0) {
                $errors[] = 'معرف التقدير غير صالح';
            }
            
            if (empty($grade)) {
                $errors[] = 'رمز التقدير مطلوب';
            }
            
            // التحقق من النطاق فقط إذا تم إدخال كلا القيمتين
            if ($xmin !== null && $xmax !== null) {
                if ($xmin >= $xmax) {
                    $errors[] = 'الحد الأدنى يجب أن يكون أصغر من الحد الأعلى';
                }
            }
            
            if (!empty($errors)) {
                $_SESSION['error_message'] = implode('<br>', $errors);
                header('Location: grades.php');
                exit;
            }
            
            // التحقق من وجود التقدير
            $check_exists = $mysqli1->prepare("SELECT id FROM tblgrade WHERE id = ?");
            if ($check_exists) {
                $check_exists->bind_param("i", $id);
                $check_exists->execute();
                if ($check_exists->get_result()->num_rows === 0) {
                    $_SESSION['error_message'] = 'التقدير غير موجود';
                    header('Location: grades.php');
                    exit;
                }
                $check_exists->close();
            }
            
            // التحقق من عدم وجود تقدير آخر بنفس الرمز
            $check_stmt = $mysqli1->prepare("SELECT id FROM tblgrade WHERE grade = ? AND id != ?");
            if ($check_stmt) {
                $check_stmt->bind_param("si", $grade, $id);
                $check_stmt->execute();
                if ($check_stmt->get_result()->num_rows > 0) {
                    $_SESSION['error_message'] = 'هذا التقدير موجود مسبقاً';
                    header('Location: grades.php');
                    exit;
                }
                $check_stmt->close();
            }
            
            // التحقق من عدم تداخل النطاقات (فقط إذا تم إدخال كلا القيمتين)
            if ($xmin !== null && $xmax !== null) {
                $check_range = $mysqli1->prepare("
                    SELECT id FROM tblgrade 
                    WHERE id != ? AND ((xmin <= ? AND xmax >= ?) OR (xmin <= ? AND xmax >= ?))
                ");
                if ($check_range) {
                    $check_range->bind_param("idddd", $id, $xmin, $xmin, $xmax, $xmax);
                    $check_range->execute();
                    if ($check_range->get_result()->num_rows > 0) {
                        $_SESSION['error_message'] = 'هناك تداخل في نطاق الدرجات مع تقدير آخر';
                        header('Location: grades.php');
                        exit;
                    }
                    $check_range->close();
                }
            }
            
            // تحديث التقدير
            $update_stmt = $mysqli1->prepare("
                UPDATE tblgrade 
                SET grade = ?, garde_ar = ?, xmin = ?, xmax = ?, weight = ? 
                WHERE id = ?
            ");
            if ($update_stmt) {
                $update_stmt->bind_param("ssdddi", $grade, $grade_ar, $xmin, $xmax, $weight, $id);
                
                if ($update_stmt->execute()) {
                    $_SESSION['success_message'] = 'تم تحديث التقدير بنجاح';
                    error_log("Admin updated grade ID: $id");
                }
                $update_stmt->close();
            }
            
        } catch (Exception $e) {
            error_log("خطأ في تحديث تقدير: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في النظام: ' . ($isAdmin ? $e->getMessage() : '');
        }
        
        header('Location: grades.php');
        exit;
    }
    
    // حذف تقدير
    elseif ($_POST['action'] === 'delete' && $isAdmin) {
        try {
            $id = validateInt($_POST['id'] ?? 0);
            
            if ($id <= 0) {
                $_SESSION['error_message'] = 'معرف التقدير غير صالح';
                header('Location: grades.php');
                exit;
            }
            
            $check_stmt = $mysqli1->prepare("
                SELECT COUNT(*) as count 
                FROM studentsubjects 
                WHERE grade_id = ? AND deleted_at IS NULL
            ");
            if ($check_stmt) {
                $check_stmt->bind_param("i", $id);
                $check_stmt->execute();
                $result = $check_stmt->get_result();
                $count = (int)$result->fetch_assoc()['count'];
                $check_stmt->close();
                
                if ($count > 0) {
                    $_SESSION['error_message'] = "لا يمكن حذف هذا التقدير لأنه مستخدم في {$count} مادة";
                } else {
                    $delete_stmt = $mysqli1->prepare("DELETE FROM tblgrade WHERE id = ?");
                    if ($delete_stmt) {
                        $delete_stmt->bind_param("i", $id);
                        
                        if ($delete_stmt->execute()) {
                            $_SESSION['success_message'] = 'تم حذف التقدير بنجاح';
                            error_log("Admin deleted grade ID: $id");
                        }
                        $delete_stmt->close();
                    }
                }
            }
            
        } catch (Exception $e) {
            error_log("خطأ في حذف تقدير: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ في النظام';
        }
        
        header('Location: grades.php');
        exit;
    }
}

/* ===== جلب جميع التقديرات ===== */
$grades = [];
$selectStmt = $mysqli1->prepare("SELECT id, grade, garde_ar, xmin, xmax, weight FROM tblgrade ORDER BY xmax DESC");
if ($selectStmt) {
    $selectStmt->execute();
    $result = $selectStmt->get_result();
    $grades = $result->fetch_all(MYSQLI_ASSOC);
    $selectStmt->close();
}

$statistics = getGradesStatistics();

$page_title = 'إدارة التقديرات';
include 'header.php';
?>

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= htmlspecialchars($page_title, ENT_QUOTES, 'UTF-8') ?> - <?= htmlspecialchars($committeeName, ENT_QUOTES, 'UTF-8') ?></title>
    
    <!-- Bootstrap 5 RTL -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css">
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <!-- DataTables -->
    <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/dataTables.bootstrap5.min.css">
    
    <!-- SweetAlert2 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
    
    <!-- Google Fonts: Cairo -->
    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
    
    <style>
        :root {
            --primary-color: #1a5d1a;
            --secondary-color: #2e8b57;
            --success-color: #10b981;
            --warning-color: #f59e0b;
            --danger-color: #ef4444;
            --info-color: #3b82f6;
        }

        body {
            font-family: 'Cairo', sans-serif;
            background-color: #f3f4f6;
        }

        .content-wrapper {
            padding: 20px;
        }

        .page-header {
            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
            color: white;
            padding: 25px;
            border-radius: 16px;
            margin-bottom: 25px;
        }

        .stats-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 20px;
            margin-bottom: 25px;
        }

        .stat-card {
            background: white;
            border-radius: 16px;
            padding: 20px;
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);
            border: 1px solid #e2e8f0;
        }

        .grade-badge {
            display: inline-block;
            padding: 8px 16px;
            border-radius: 50px;
            font-weight: 700;
            font-size: 1.1rem;
            min-width: 80px;
            text-align: center;
        }

        .grade-a { background: #d1fae5; color: #065f46; }
        .grade-b { background: #dbeafe; color: #1e40af; }
        .grade-c { background: #fef9c3; color: #854d0e; }
        .grade-d { background: #fed7aa; color: #92400e; }
        .grade-f { background: #fee2e2; color: #991b1b; }
        .grade-i { background: #e2e8f0; color: #475569; }
        .grade-w { background: #f1f5f9; color: #334155; }

        .table th {
            background-color: #f8fafc;
            font-weight: 700;
            text-align: center !important;
        }

        .action-buttons {
            display: flex;
            gap: 5px;
        }

        .modal-content {
            border-radius: 16px;
        }

        .modal-header {
            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
            color: white;
        }

        .required::after {
            content: " *";
            color: var(--danger-color);
        }

        @media (max-width: 768px) {
            .action-buttons {
                flex-direction: column;
            }
        }
    </style>
</head>
<body dir="rtl">
    <?php include 'navbar.php'; ?>
    
    <div class="content-wrapper">
        <div class="container-fluid">
            
            <!-- Page Header -->
            <div class="page-header">
                <div class="d-flex align-items-center justify-content-between">
                    <div>
                        <h1><i class="fas fa-star ms-2"></i> إدارة التقديرات</h1>
                        <p>إدارة وتعديل نظام التقديرات الدراسية - <?= htmlspecialchars($committeeName, ENT_QUOTES, 'UTF-8') ?></p>
                    </div>
                    <div>
                        <a href="admin_dashboard.php" class="btn btn-light">
                            <i class="fas fa-arrow-right ms-2"></i>
                            العودة
                        </a>
                    </div>
                </div>
            </div>
            
            <!-- Alert Messages -->
            <?php if (isset($_SESSION['success_message'])): ?>
                <div class="alert alert-success alert-dismissible fade show">
                    <i class="fas fa-check-circle"></i>
                    <?= htmlspecialchars($_SESSION['success_message'], ENT_QUOTES, 'UTF-8') ?>
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                </div>
                <?php unset($_SESSION['success_message']); ?>
            <?php endif; ?>

            <?php if (isset($_SESSION['error_message'])): ?>
                <div class="alert alert-danger alert-dismissible fade show">
                    <i class="fas fa-exclamation-circle"></i>
                    <?= htmlspecialchars($_SESSION['error_message'], ENT_QUOTES, 'UTF-8') ?>
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                </div>
                <?php unset($_SESSION['error_message']); ?>
            <?php endif; ?>
            
            <!-- Statistics Cards -->
            <?php if ($statistics && $isAdmin): ?>
            <div class="stats-grid">
                <div class="stat-card">
                    <div class="d-flex align-items-center">
                        <div class="stat-icon bg-primary bg-opacity-10 p-3 rounded-3">
                            <i class="fas fa-list fa-2x text-primary"></i>
                        </div>
                        <div class="me-3">
                            <div class="stat-label">إجمالي التقديرات</div>
                            <div class="stat-value h3"><?= (int)$statistics['total'] ?></div>
                        </div>
                    </div>
                </div>
                
                <div class="stat-card">
                    <div class="d-flex align-items-center">
                        <div class="stat-icon bg-success bg-opacity-10 p-3 rounded-3">
                            <i class="fas fa-check-circle fa-2x text-success"></i>
                        </div>
                        <div class="me-3">
                            <div class="stat-label">مستخدمة في مواد</div>
                            <div class="stat-value h3"><?= (int)$statistics['used_in_students'] ?></div>
                        </div>
                    </div>
                </div>
                
                <div class="stat-card">
                    <div class="d-flex align-items-center">
                        <div class="stat-icon bg-warning bg-opacity-10 p-3 rounded-3">
                            <i class="fas fa-weight-hanging fa-2x text-warning"></i>
                        </div>
                        <div class="me-3">
                            <div class="stat-label">أعلى وزن</div>
                            <div class="stat-value h3"><?= number_format($statistics['max_weight'], 2) ?></div>
                        </div>
                    </div>
                </div>
                
                <div class="stat-card">
                    <div class="d-flex align-items-center">
                        <div class="stat-icon bg-info bg-opacity-10 p-3 rounded-3">
                            <i class="fas fa-balance-scale fa-2x text-info"></i>
                        </div>
                        <div class="me-3">
                            <div class="stat-label">أقل وزن</div>
                            <div class="stat-value h3"><?= number_format($statistics['min_weight'], 2) ?></div>
                        </div>
                    </div>
                </div>
            </div>
            <?php endif; ?>
            
            <!-- Grades Card -->
            <div class="card">
                <div class="card-header bg-white d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">
                        <i class="fas fa-list ms-2"></i>
                        قائمة التقديرات
                    </h5>
                    <?php if ($isAdmin): ?>
                    <button class="btn btn-success" data-bs-toggle="modal" data-bs-target="#addGradeModal">
                        <i class="fas fa-plus-circle ms-2"></i>
                        إضافة تقدير جديد
                    </button>
                    <?php endif; ?>
                </div>
                
                <div class="card-body" >
                    <div class="table-responsive">
                        <table class="table table-hover" id="gradesTable">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>التقدير</th>
                                    <th>التقدير (عربي)</th>
                                    <th>الحد الأدنى</th>
                                    <th>الحد الأعلى</th>
                                    <th>الوزن (نقطة)</th>
                                    <?php if ($isAdmin): ?>
                                    <th>الإجراءات</th>
                                    <?php endif; ?>
                                </tr>
                            </thead>
                            <tbody   class="text-center">
                                <?php foreach ($grades as $index => $grade): ?>
                                    <tr>
                                        <td><?= $index + 1 ?></td>
                                        <td>
                                            <span class="grade-badge 
                                                <?php
                                                    if ($grade['grade'] == 'F') echo 'grade-f';
                                                    elseif ($grade['grade'] == 'I') echo 'grade-i';
                                                    elseif ($grade['grade'] == 'W') echo 'grade-w';
                                                    elseif (strpos($grade['grade'], 'A') === 0) echo 'grade-a';
                                                    elseif (strpos($grade['grade'], 'B') === 0) echo 'grade-b';
                                                    elseif (strpos($grade['grade'], 'C') === 0) echo 'grade-c';
                                                    elseif (strpos($grade['grade'], 'D') === 0) echo 'grade-d';
                                                ?>
                                            ">
                                                <?= htmlspecialchars($grade['grade'], ENT_QUOTES, 'UTF-8') ?>
                                            </span>
                                        </td>
                                        <td><?= !empty($grade['garde_ar']) ? htmlspecialchars($grade['garde_ar'], ENT_QUOTES, 'UTF-8') : '<span class="text-muted">-</span>' ?></td>
                                        <td><?= $grade['xmin'] !== null ? number_format($grade['xmin'], 2) : '<span class="text-muted">-</span>' ?></td>
                                        <td><?= $grade['xmax'] !== null ? number_format($grade['xmax'], 2) : '<span class="text-muted">-</span>' ?></td>
                                        <td><?= number_format($grade['weight'], 2) ?></td>
                                        <?php if ($isAdmin): ?>
                                        <td>
                                            <div class="action-buttons">
                                                <button class="btn btn-info btn-sm" 
                                                        onclick='editGrade(<?= json_encode($grade, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP) ?>)'
                                                        title="تعديل">
                                                    <i class="fas fa-edit"></i>
                                                </button>
                                                <button class="btn btn-danger btn-sm" 
                                                        onclick="deleteGrade(<?= (int)$grade['id'] ?>, '<?= htmlspecialchars($grade['grade'], ENT_QUOTES, 'UTF-8') ?>')"
                                                        title="حذف">
                                                    <i class="fas fa-trash"></i>
                                                </button>
                                            </div>
                                        </td>
                                        <?php endif; ?>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <?php if ($isAdmin): ?>
    <!-- Add Grade Modal -->
    <div class="modal fade" id="addGradeModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">
                        <i class="fas fa-plus-circle ms-2"></i>
                        إضافة تقدير جديد
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form method="post" action="grades.php" id="addForm" novalidate>
                    <input type="hidden" name="csrf" value="<?= htmlspecialchars($csrf_token, ENT_QUOTES, 'UTF-8') ?>">
                    <input type="hidden" name="action" value="add">
                    
                    <div class="modal-body">
                        <div class="mb-3">
                            <label class="form-label required">رمز التقدير</label>
                            <select class="form-control" name="grade" required>
                                <option value="">اختر التقدير</option>
                                <option value="A">A</option>
                                <option value="B+">B+</option>
                                <option value="B">B</option>
                                <option value="C+">C+</option>
                                <option value="C">C</option>
                                <option value="D+">D+</option>
                                <option value="D">D</option>
                                <option value="F">F</option>
                                <option value="I">I</option>
                                <option value="W">W</option>
                                <option value="N">N</option>
                            </select>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">التقدير (عربي)</label>
                            <input type="text" class="form-control" name="grade_ar" 
                                   placeholder="مثال: ممتاز, جيد جداً, ب+ , ج+" 
                                   maxlength="20">
                            <small class="text-muted">اختياري - الاسم العربي للتقدير (يمكن استخدام +)</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">الحد الأدنى</label>
                            <input type="number" class="form-control" name="xmin" step="0.01" min="0" max="100" placeholder="اختياري - اترك فارغاً إذا لم يكن محدداً">
                            <small class="text-muted">اختياري - يمكن تركه فارغاً</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">الحد الأعلى</label>
                            <input type="number" class="form-control" name="xmax" step="0.01" min="0" max="100" placeholder="اختياري - اترك فارغاً إذا لم يكن محدداً">
                            <small class="text-muted">اختياري - يمكن تركه فارغاً</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label required">الوزن (نقطة)</label>
                            <input type="number" class="form-control" name="weight" step="0.01" min="0" max="4" required>
                            <small class="text-muted">يمكن أن يكون صفراً في بعض الحالات</small>
                        </div>
                    </div>
                    
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                        <button type="submit" class="btn btn-success">حفظ</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <!-- Edit Grade Modal -->
    <div class="modal fade" id="editGradeModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">
                        <i class="fas fa-edit ms-2"></i>
                        تعديل التقدير
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form method="post" action="grades.php" id="editForm" novalidate>
                    <input type="hidden" name="csrf" value="<?= htmlspecialchars($csrf_token, ENT_QUOTES, 'UTF-8') ?>">
                    <input type="hidden" name="action" value="edit">
                    <input type="hidden" name="id" id="edit_id">
                    
                    <div class="modal-body">
                        <div class="mb-3">
                            <label class="form-label required">رمز التقدير</label>
                            <select class="form-control" name="grade" id="edit_grade" required>
                                <option value="">اختر التقدير</option>
                                <option value="A">A</option>
                                <option value="B+">B+</option>
                                <option value="B">B</option>
                                <option value="C+">C+</option>
                                <option value="C">C</option>
                                <option value="D+">D+</option>
                                <option value="D">D</option>
                                <option value="F">F</option>
                                <option value="I">I</option>
                                <option value="W">W</option>
                                 <option value="N">N</option>
                            </select>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">التقدير (عربي)</label>
                            <input type="text" class="form-control" name="grade_ar" id="edit_grade_ar" 
                                   maxlength="20" placeholder="مثال: ب+ , ج+">
                            <small class="text-muted">اختياري - الاسم العربي للتقدير (يمكن استخدام +)</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">الحد الأدنى</label>
                            <input type="number" class="form-control" name="xmin" id="edit_xmin" step="0.01" min="0" max="100" placeholder="اختياري - اترك فارغاً إذا لم يكن محدداً">
                            <small class="text-muted">اختياري - يمكن تركه فارغاً</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label">الحد الأعلى</label>
                            <input type="number" class="form-control" name="xmax" id="edit_xmax" step="0.01" min="0" max="100" placeholder="اختياري - اترك فارغاً إذا لم يكن محدداً">
                            <small class="text-muted">اختياري - يمكن تركه فارغاً</small>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label required">الوزن (نقطة)</label>
                            <input type="number" class="form-control" name="weight" id="edit_weight" step="0.01" min="0" max="4" required>
                            <small class="text-muted">يمكن أن يكون صفراً في بعض الحالات</small>
                        </div>
                    </div>
                    
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                        <button type="submit" class="btn btn-primary">تحديث</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    <!-- Delete Grade Modal -->
    <div class="modal fade" id="deleteGradeModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header bg-danger text-white">
                    <h5 class="modal-title">
                        <i class="fas fa-exclamation-triangle ms-2"></i>
                        تأكيد الحذف
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                </div>
                <form method="post" action="grades.php" id="deleteForm">
                    <input type="hidden" name="csrf" value="<?= htmlspecialchars($csrf_token, ENT_QUOTES, 'UTF-8') ?>">
                    <input type="hidden" name="action" value="delete">
                    <input type="hidden" name="id" id="delete_id">
                    
                    <div class="modal-body">
                        <p>هل أنت متأكد من حذف التقدير: <strong id="delete_grade"></strong>؟</p>
                        <p class="text-danger mb-0">
                            <i class="fas fa-info-circle ms-2"></i>
                            هذا الإجراء لا يمكن التراجع عنه.
                        </p>
                    </div>
                    
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
                        <button type="submit" class="btn btn-danger">تأكيد الحذف</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    <?php endif; ?>
    
    <!-- Scripts -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/dataTables.bootstrap5.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    
    <script>
        $(document).ready(function() {
            $('#gradesTable').DataTable({
                language: {
                    url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/ar.json'
                },
                pageLength: 25,
                order: [[3, 'desc']]
            });
        });
        
        <?php if ($isAdmin): ?>
        function editGrade(grade) {
            document.getElementById('edit_id').value = grade.id;
            document.getElementById('edit_grade').value = grade.grade;
            document.getElementById('edit_grade_ar').value = grade.garde_ar || '';
            document.getElementById('edit_xmin').value = grade.xmin !== null ? grade.xmin : '';
            document.getElementById('edit_xmax').value = grade.xmax !== null ? grade.xmax : '';
            document.getElementById('edit_weight').value = grade.weight;
            
            var editModal = new bootstrap.Modal(document.getElementById('editGradeModal'));
            editModal.show();
        }
        
        function deleteGrade(id, grade) {
            document.getElementById('delete_id').value = id;
            document.getElementById('delete_grade').textContent = grade;
            
            var deleteModal = new bootstrap.Modal(document.getElementById('deleteGradeModal'));
            deleteModal.show();
        }
        
        // Form validation
        function validateGradeForm(formId) {
            const form = document.getElementById(formId);
            if (!form) return true;
            
            const xmin = parseFloat(form.xmin?.value) || 0;
            const xmax = parseFloat(form.xmax?.value) || 0;
            
            // التحقق فقط إذا تم إدخال كلا القيمتين
            if (form.xmin?.value && form.xmax?.value && xmin >= xmax) {
                Swal.fire({
                    icon: 'error',
                    title: 'خطأ',
                    text: 'الحد الأدنى يجب أن يكون أصغر من الحد الأعلى'
                });
                return false;
            }
            
            return true;
        }
        
        document.getElementById('addForm')?.addEventListener('submit', function(e) {
            if (!validateGradeForm('addForm')) {
                e.preventDefault();
            }
        });
        
        document.getElementById('editForm')?.addEventListener('submit', function(e) {
            if (!validateGradeForm('editForm')) {
                e.preventDefault();
            }
        });
        <?php endif; ?>
    </script>
    
    <?php include 'footer.php'; ?>
</body>
</html>