<?php
if (session_status() == PHP_SESSION_NONE) { session_start(); }
include_once 'db_connect.php'; 

// 1. جلب اسم المدرسة الحالية
$school = $conn->query("SELECT school_name FROM schools LIMIT 1")->fetch_assoc();
$current_school = $school['school_name'] ?? 'المدرسة';

// 🚀 المعالج الذكي (Auto-Fix): يتأكد من إنشاء الجدول ويضيف الأعمدة الجديدة لقيود المدرسين 🚀
$conn->query("CREATE TABLE IF NOT EXISTS schedule_rules (
    id INT AUTO_INCREMENT PRIMARY KEY,
    school_name VARCHAR(255),
    stage_name VARCHAR(100),
    department_name VARCHAR(100),
    section_name VARCHAR(100),
    subject_name VARCHAR(100),
    teacher_name VARCHAR(100),
    weekly_sessions INT,
    duration_minutes INT DEFAULT 45,
    allowed_days VARCHAR(255) DEFAULT '',
    allowed_periods VARCHAR(255) DEFAULT ''
)");

$needed_columns = ['school_name', 'department_name', 'section_name', 'teacher_name', 'allowed_days', 'allowed_periods'];
foreach($needed_columns as $col) {
    $check = $conn->query("SHOW COLUMNS FROM schedule_rules LIKE '$col'");
    if($check && $check->num_rows == 0) {
        $conn->query("ALTER TABLE schedule_rules ADD COLUMN $col VARCHAR(255) NULL DEFAULT ''");
    }
}

// 2. معالجة حفظ قاعدة جديدة (إضافة مادة لصف مع القيود)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_rule'])) {
    
    // استلام قيود الأيام والحصص وتحويلها لنص
    $allowed_days = isset($_POST['allowed_days']) ? implode(',', $_POST['allowed_days']) : '';
    $allowed_periods = isset($_POST['allowed_periods']) ? implode(',', $_POST['allowed_periods']) : '';

    $class_full = $_POST['class_full_name']; 
    $parts = explode(' - ', $class_full);
    
    if(count($parts) >= 3) {
        $stage = $conn->real_escape_string(trim($parts[0]));
        $dept = $conn->real_escape_string(trim($parts[1]));
        $sec = $conn->real_escape_string(trim(end($parts)));
        
        $subject = $conn->real_escape_string($_POST['subject_name']);
        $sessions = (int)$_POST['weekly_sessions'];
        $teacher = $conn->real_escape_string($_POST['hidden_teacher_name'] ?? '');

        if (!empty($subject) && $sessions > 0 && !empty($teacher)) {
            // 🚀 التعديل هنا: إضافة primary_teacher_id لجملة الإدخال لتطابق قاعدة بياناتك 🚀
            $query = "INSERT INTO schedule_rules (school_name, stage_name, department_name, section_name, subject_name, teacher_name, primary_teacher_id, weekly_sessions, allowed_days, allowed_periods) 
                      VALUES ('$current_school', '$stage', '$dept', '$sec', '$subject', '$teacher', '$teacher', $sessions, '$allowed_days', '$allowed_periods')";
                      
            if($conn->query($query)) {
                echo "<script>alert('✅ تم إضافة المادة وتثبيت قيود المدرس بنجاح!'); window.location.href='schedule_settings.php';</script>";
            } else {
                echo "<script>alert('❌ حدث خطأ أثناء الحفظ: " . $conn->error . "');</script>";
            }
        }
    } else {
        echo "<script>alert('❌ خطأ في تحديد المنهج!');</script>";
    }
}

// 3. معالجة الحذف
if (isset($_GET['delete_rule'])) {
    $del_id = (int)$_GET['delete_rule'];
    $conn->query("DELETE FROM schedule_rules WHERE id = $del_id AND school_name = '$current_school'");
    echo "<script>window.location.href='schedule_settings.php';</script>";
}
?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <title>إعدادات النصاب وبناء الجدول - <?php echo htmlspecialchars($current_school); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
    <style>
        body { font-family: 'Segoe UI', Tahoma, sans-serif; background: #0f172a; color: #fff; padding: 20px; margin: 0; }
        .card { background: #1e293b; border-radius: 12px; padding: 25px; box-shadow: 0 4px 15px rgba(0,0,0,0.3); margin-bottom: 25px; border-top: 4px solid #e11d48; }
        h3 { color: #f8fafc; margin-top: 0; border-bottom: 1px solid #334155; padding-bottom: 10px; display: flex; align-items: center; gap: 10px; }
        .form-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 15px; margin-bottom: 20px; }
        .form-group { display: flex; flex-direction: column; gap: 8px; }
        label { color: #cbd5e1; font-size: 0.95rem; font-weight: bold; }
        input, select { padding: 12px; background: #0f172a; color: #fff; border: 1px solid #475569; border-radius: 8px; font-size: 14px; outline: none; }
        input:focus, select:focus { border-color: #e11d48; }
        input[disabled], select[disabled] { opacity: 0.7; cursor: not-allowed; }
        .btn-submit { background: #e11d48; color: white; border: none; padding: 12px; border-radius: 8px; cursor: pointer; font-weight: bold; width: 100%; transition: 0.3s; font-size: 16px; margin-top: 20px;}
        .btn-submit:hover { background: #be123c; }
        .btn-generate { background: #22c55e; color: white; padding: 15px 40px; text-decoration: none; border-radius: 8px; font-weight: bold; display: inline-flex; align-items: center; gap: 10px; font-size: 1.1rem; box-shadow: 0 4px 10px rgba(34,197,94,0.3); }
        .btn-generate:hover { background: #16a34a; transform: translateY(-2px); }
        
        table { width: 100%; border-collapse: collapse; margin-top: 20px; background: #0f172a; border-radius: 8px; overflow: hidden; }
        th, td { padding: 15px; border-bottom: 1px solid #334155; text-align: center; }
        th { background: #334155; color: #cbd5e1; font-weight: bold; }
        .action-btn { color: #ef4444; text-decoration: none; font-weight: bold; margin: 0 10px; }
        .action-btn.edit { color: #3b82f6; }
        .action-btn:hover { text-decoration: underline; }

        /* 🚀 تنسيقات أزرار الأيام والحصص (Checkboxes as Pills) 🚀 */
        .pills-container { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 5px; }
        .pill-checkbox { display: none; }
        .pill-label { background: #0f172a; border: 1px solid #475569; color: #94a3b8; padding: 8px 15px; border-radius: 20px; cursor: pointer; font-size: 13px; font-weight: bold; transition: 0.2s; user-select: none; }
        .pill-checkbox:checked + .pill-label { background: #3b82f6; border-color: #3b82f6; color: #fff; box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4); }
        
        .constraint-badge { background: #334155; color: #cbd5e1; padding: 4px 8px; border-radius: 6px; font-size: 11px; margin: 2px; display: inline-block; }
    </style>
</head>
<body>

    <div class="card">
        <h3><i class="fas fa-book-open"></i> تحديد نصاب المواد وقيود المدرسين</h3>
        <p style="color: #94a3b8; margin-bottom: 20px; font-size: 14px;">اختر المدرس، ليتم جلب مواده تلقائياً، ثم حدد الأيام والحصص التي يداوم فيها (اتركها فارغة إذا كان يداوم طيلة أيام الأسبوع).</p>
        
        <form method="POST">
            <input type="hidden" name="hidden_teacher_name" id="hidden_teacher_name">
            
            <div class="form-grid">
                <!-- 1. اختيار المدرس أولاً -->
                <div class="form-group">
                    <label>المدرس المكلّف:</label>
                    <select name="teacher_id" id="teacher_select" required onchange="fetchTeacherAssignments(this)">
                        <option value="">-- اختر المدرس --</option>
                        <?php
                        $t_query = "SELECT DISTINCT t.id, t.display_name 
                                    FROM teachers t 
                                    JOIN teacher_assignments ta ON t.id = ta.teacher_id 
                                    WHERE t.school_name = '$current_school' 
                                    ORDER BY t.display_name ASC";
                        $t_res = $conn->query($t_query);
                        if ($t_res && $t_res->num_rows > 0) {
                            while ($t = $t_res->fetch_assoc()) {
                                echo "<option value='{$t['id']}' data-name='".htmlspecialchars($t['display_name'])."'>".htmlspecialchars($t['display_name'])."</option>";
                            }
                        }
                        ?>
                    </select>
                </div>

                <!-- 2. المادة -->
                <div class="form-group">
                    <label>اسم المادة:</label>
                    <select name="subject_name" id="subject_select" required disabled style="background-color: #334155;">
                        <option value="">-- يرجى اختيار المدرس --</option>
                    </select>
                </div>

                <!-- 3. المنهج -->
                <div class="form-group">
                    <label>المنهج (الصف والشعبة):</label>
                    <select name="class_full_name" id="class_select" required disabled style="background-color: #334155;">
                        <option value="">-- يرجى اختيار المدرس --</option>
                    </select>
                </div>

                <!-- 4. عدد الحصص -->
                <div class="form-group">
                    <label>عدد الحصص الأسبوعية:</label>
                    <input type="number" name="weekly_sessions" min="1" max="15" value="4" required>
                </div>
            </div>

            <!-- 🚀 5. شروط وأيام عمل المدرس 🚀 -->
            <div style="background: rgba(59, 130, 246, 0.05); border: 1px dashed #3b82f6; padding: 15px; border-radius: 12px; margin-top: 15px;">
                <div style="display: flex; flex-direction: column; gap: 15px;">
                    
                    <div>
                        <label style="color: #60a5fa;"><i class="fas fa-calendar-day"></i> الأيام المتاحة للمدرس (اتركه فارغاً إن كان يداوم كل الأيام):</label>
                        <div class="pills-container">
                            <?php 
                            $days = ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'السبت'];
                            foreach($days as $i => $d): ?>
                                <div>
                                    <input type="checkbox" name="allowed_days[]" value="<?= $d ?>" id="day_<?= $i ?>" class="pill-checkbox">
                                    <label for="day_<?= $i ?>" class="pill-label"><?= $d ?></label>
                                </div>
                            <?php endforeach; ?>
                        </div>
                    </div>

                    <div>
                        <label style="color: #60a5fa;"><i class="fas fa-clock"></i> الحصص المسموحة للمدرس (اتركه فارغاً إن كان متوفراً كل الحصص):</label>
                        <div class="pills-container">
                            <?php for($p = 1; $p <= 7; $p++): ?>
                                <div>
                                    <input type="checkbox" name="allowed_periods[]" value="<?= $p ?>" id="period_<?= $p ?>" class="pill-checkbox">
                                    <label for="period_<?= $p ?>" class="pill-label">الحصة <?= $p ?></label>
                                </div>
                            <?php endfor; ?>
                        </div>
                    </div>

                </div>
            </div>

            <button type="submit" name="add_rule" class="btn-submit"><i class="fas fa-save"></i> اعتماد المادة والقيود</button>
        </form>
    </div>

    <div class="card" style="text-align: center;">
        <h3 style="justify-content: center;"><i class="fas fa-wand-magic-sparkles"></i> تشغيل المولد الذكي للجدول</h3>
        <p style="color: #94a3b8; max-width: 800px; margin: 0 auto 25px auto; line-height: 1.6;">
            بعد الانتهاء من الإدخال، سيقوم النظام بتوليد الجداول مع <strong>مراعاة الأيام والحصص المحددة لكل مدرس بدقة متناهية</strong> ولن يضعه في أوقات غير متوفر فيها.
        </p>
        
        <a href="api/generate_schedule_api.php" class="btn-generate">
            <i class="fas fa-cogs"></i> تشغيل خوارزمية توليد الجداول الآن
        </a>

        <div style="margin-top: 40px; text-align: right;">
            <h3><i class="fas fa-list-ol"></i> المواد والقيود المدخلة حالياً لمدرسة (<?php echo $current_school; ?>)</h3>
            <div style="overflow-x: auto;">
                <table>
                    <thead>
                        <tr>
                            <th>المرحلة والصف والشعبة</th>
                            <th>المادة</th>
                            <th>المدرس المكلّف</th>
                            <th>الحصص</th>
                            <th>أيام الدوام</th>
                            <th>الحصص المحددة</th>
                            <th style="text-align: center;">الإجراءات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        $rules_q = $conn->query("SELECT * FROM schedule_rules WHERE school_name = '$current_school' ORDER BY stage_name, department_name, section_name ASC");
                        if($rules_q && $rules_q->num_rows > 0){
                            while($r = $rules_q->fetch_assoc()){
                                $full_class = $r['stage_name'] . ' - ' . $r['department_name'] . ' - ' . $r['section_name'];
                                
                                // تجهيز طريقة عرض القيود
                                $days_badge = !empty($r['allowed_days']) ? implode(' ', array_map(function($d){ return "<span class='constraint-badge'>$d</span>"; }, explode(',', $r['allowed_days']))) : "<span style='color:#64748b;'>طيلة الأسبوع</span>";
                                
                                $periods_badge = !empty($r['allowed_periods']) ? implode(' ', array_map(function($p){ return "<span class='constraint-badge'>حـ $p</span>"; }, explode(',', $r['allowed_periods']))) : "<span style='color:#64748b;'>كل الحصص</span>";

                                echo "<tr style='border-bottom: 1px solid #334155;'>
                                    <td>".htmlspecialchars($full_class)."</td>
                                    <td><strong style='color:#e11d48;'>".htmlspecialchars($r['subject_name'])."</strong></td>
                                    <td><strong style='color:#3b82f6;'>".htmlspecialchars($r['teacher_name'])."</strong></td>
                                    <td>".htmlspecialchars($r['weekly_sessions'])." حصص</td>
                                    <td>".$days_badge."</td>
                                    <td>".$periods_badge."</td>
                                    <td style='text-align: center;'>
                                        <a href='?delete_rule=".$r['id']."' class='action-btn' onclick='return confirm(\"هل أنت متأكد من الحذف؟\")' title='حذف'><i class='fas fa-trash'></i> حذف</a>
                                    </td>
                                </tr>";
                            }
                        } else {
                            echo "<tr><td colspan='7' style='color:#64748b; padding:30px; text-align:center;'>لم يتم إدخال أي مواد أو مدرسين حتى الآن.</td></tr>";
                        }
                        ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <script>
    function fetchTeacherAssignments(selectElement) {
        const teacherId = selectElement.value;
        const teacherName = selectElement.options[selectElement.selectedIndex].getAttribute('data-name');
        
        document.getElementById('hidden_teacher_name').value = teacherName;
        
        const subjectSelect = document.getElementById('subject_select');
        const classSelect = document.getElementById('class_select');

        if (!teacherId) {
            subjectSelect.innerHTML = '<option value="">-- يرجى اختيار المدرس --</option>';
            subjectSelect.disabled = true;
            classSelect.innerHTML = '<option value="">-- يرجى اختيار المدرس --</option>';
            classSelect.disabled = true;
            return;
        }

        subjectSelect.innerHTML = '<option value="">جاري الجلب...</option>';
        classSelect.innerHTML = '<option value="">جاري الجلب...</option>';

        fetch(`get_teacher_details.php?teacher_id=${teacherId}`)
        .then(res => res.json())
        .then(data => {
            if (data.status === 'success') {
                subjectSelect.disabled = false;
                subjectSelect.style.backgroundColor = '#0f172a';
                classSelect.disabled = false;
                classSelect.style.backgroundColor = '#0f172a';
                
                subjectSelect.innerHTML = '';
                data.subjects.forEach(sub => { subjectSelect.innerHTML += `<option value="${sub}">${sub}</option>`; });

                classSelect.innerHTML = '';
                data.classes.forEach(cls => { classSelect.innerHTML += `<option value="${cls}">${cls}</option>`; });
            } else {
                subjectSelect.innerHTML = '<option value="">لا يوجد مواد مخصصة</option>';
                classSelect.innerHTML = '<option value="">لا يوجد فصول مخصصة</option>';
            }
        })
        .catch(err => { alert('حدث خطأ في الاتصال بالسيرفر'); });
    }
    </script>
</body>
</html>