<?php
// إخفاء الأخطاء النصية لضمان إرجاع JSON نظيف
error_reporting(0);
ini_set('display_errors', 0);
header('Content-Type: application/json; charset=utf-8');

session_start();
require_once 'db_connect.php';

$response = ['status' => 'error', 'message' => 'حدث خطأ مجهول.'];

// التأكد من أن المستخدم مدرس (أو لديه صلاحية)
if (!isset($_SESSION['loggedin']) || ($_SESSION['role'] !== 'teacher' && $_SESSION['role'] !== 'admin')) {
    echo json_encode(['status' => 'error', 'message' => 'غير مصرح لك بعرض هذه البيانات.']);
    exit;
}

try {
    // 1. تحديد هوية المدرس والمدرسة
    $teacher_id = $_SESSION['teacher_id'] ?? 0;
    // إذا كان المدرس مسجلاً بـ teacher_name (مثال TCH-xxx)
    $teacher_slug = $_SESSION['teacher_name'] ?? ''; 
    $school_name = isset($_SESSION['school_name']) ? $conn->real_escape_string($_SESSION['school_name']) : '';

    if (empty($school_name)) {
        throw new Exception('لم يتم تحديد المدرسة في الجلسة.');
    }

    // 2. استقبال الفلاتر من واجهة المدرس
    $search_query = isset($_POST['search']) ? $conn->real_escape_string($_POST['search']) : '';
    $stage_filter = isset($_POST['stage']) ? $conn->real_escape_string($_POST['stage']) : '';
    $dept_filter = isset($_POST['dept']) ? $conn->real_escape_string($_POST['dept']) : '';
    $section_filter = isset($_POST['section']) ? $conn->real_escape_string($_POST['section']) : '';

    // 3. 🧠 المنطق الذكي لجلب الطلاب 🧠
    // يجب أن نجلب الطلاب الذين ينتمون إلى (المدرسة + المرحلة + القسم + الشعبة) التي تم تعيين هذا المدرس لها في جدول teacher_assignments
    
    // استعلام لمعرفة التوزيعات الخاصة بهذا المدرس
    $assignments_sql = "SELECT stage, department, section FROM teacher_assignments WHERE school_name = '$school_name' AND (teacher_id = '$teacher_id' OR teacher_name = '$teacher_slug')";
    $assign_res = $conn->query($assignments_sql);
    
    $allowed_stages = [];
    $allowed_sections = [];
    $conditions = [];

    if ($assign_res && $assign_res->num_rows > 0) {
        // المدرس لديه توزيعات (Classes) محددة من قبل الإدارة
        while ($row = $assign_res->fetch_assoc()) {
            $stg = $conn->real_escape_string($row['stage']);
            $dept = $conn->real_escape_string($row['department']);
            $sec = $conn->real_escape_string($row['section']);
            
            if (!empty($stg) && !in_array($stg, $allowed_stages)) { $allowed_stages[] = $stg; }
            if (!empty($sec) && $sec !== 'الكل' && !in_array($sec, $allowed_sections)) { $allowed_sections[] = $sec; }

            // بناء شرط معقد: (المرحلة X والقسم Y والشعبة Z) أو (المرحلة A ...)
            // نراعي أن قسم "عام" أو شعبة "الكل" تعني جلب الجميع في تلك المرحلة
            $cond = "(stage = '$stg'";
            
            // إضافة شرط القسم إذا لم يكن "عام"
            if (!empty($dept) && $dept !== 'عام' && $dept !== 'بدون قسم (عام)') {
                $cond .= " AND department = '$dept'";
            }
            
            // إضافة شرط الشعبة إذا لم يكن "الكل"
            if (!empty($sec) && $sec !== 'الكل' && $sec !== 'بدون شعبة (الكل)' && $sec !== '!') {
                $cond .= " AND branch = '$sec'";
            }
            
            $cond .= ")";
            $conditions[] = $cond;
        }
        
        $assignment_filter = "(" . implode(" OR ", $conditions) . ")";
        
    } else {
        // إذا لم يجد الإدارة قامت بتوزيع المدرس في جدول teacher_assignments، 
        // سنعتمد على حقل teacher_name القديم داخل جدول students كحالة احتياطية (Fallback)
        // هذا يفيد المدرسين المستقلين الذين يضيفون طلابهم يدوياً
        $safe_slug = $conn->real_escape_string($teacher_slug);
        $assignment_filter = "teacher_name = '$safe_slug'";
    }

    // 4. بناء الاستعلام النهائي لجلب الطلاب
    $sql = "SELECT student_id, student_name, stage, department, branch, phone, parent_phone 
            FROM students 
            WHERE school_name = '$school_name' AND ($assignment_filter OR teacher_name = '" . $conn->real_escape_string($teacher_slug) . "') AND (is_suspended = 0 OR is_suspended IS NULL)";

    // تطبيق فلاتر البحث الخاصة بالمدرس
    if (!empty($search_query)) {
        $sql .= " AND student_name LIKE '%$search_query%'";
    }
    if (!empty($stage_filter)) {
        $sql .= " AND stage = '$stage_filter'";
    }
    if (!empty($dept_filter)) {
        $sql .= " AND department = '$dept_filter'";
    }
    if (!empty($section_filter)) {
        $sql .= " AND branch = '$section_filter'";
    }

    $sql .= " ORDER BY student_name ASC";
    
    $result = $conn->query($sql);
    $html = '';
    $counter = 0;

    if ($result && $result->num_rows > 0) {
        while ($std = $result->fetch_assoc()) {
            $counter++;
            $std_id = htmlspecialchars($std['student_id']);
            $std_name = htmlspecialchars($std['student_name']);
            $stage_dept = htmlspecialchars($std['stage']) . (!empty($std['department']) && $std['department'] !== 'عام' && $std['department'] !== 'بدون قسم (عام)' ? ' - ' . htmlspecialchars($std['department']) : '');
            $branch = htmlspecialchars($std['branch'] ?? 'عام');
            
            // بيانات للواتساب
            $target_phone = !empty($std['parent_phone']) ? $std['parent_phone'] : $std['phone'];
            $clean_phone = preg_replace('/[^0-9]/', '', $target_phone);

            // تم إزالة style="color: var(--text-light);" واستخدام ألوان واضحة #1e293b
            $html .= '<tr style="border-bottom: 1px solid #e2e8f0; transition: 0.2s; background: #fff;" onmouseover="this.style.backgroundColor=\'#f8fafc\'" onmouseout="this.style.backgroundColor=\'#fff\'">';
            
            // Checkbox لتحديد الطالب للواتساب/الصلاحيات
            $html .= '<td style="padding: 15px; text-align: center;">
                        <input type="checkbox" class="wa-checkbox" value="' . $clean_phone . '" data-name="' . $std_name . '" onchange="if(typeof updateSelectedCount === \'function\') updateSelectedCount()" style="cursor: pointer; width: 16px; height: 16px; accent-color: var(--primary);">
                      </td>';
            
            $html .= '<td style="padding: 15px; font-weight: bold; color: #1e293b; font-size: 1.05rem;">' . $std_name . '</td>';
            $html .= '<td style="padding: 15px; font-family: monospace; color: #64748b;">' . $std_id . '</td>';
            $html .= '<td style="padding: 15px; color: #475569; font-weight: 600;">' . $stage_dept . '</td>';
            
            $branch_badge = ($branch !== 'عام' && $branch !== 'الكل' && $branch !== 'بدون شعبة (الكل)') ? '<span style="background: #e2e8f0; color: #334155; padding: 4px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: bold;">شعبة ' . $branch . '</span>' : '<span style="color: #94a3b8;">-</span>';
            $html .= '<td style="padding: 15px;">' . $branch_badge . '</td>';
            
            // إرجاع الأزرار الخمسة الأصلية
            $html .= '<td style="padding: 15px; text-align: center; white-space: nowrap;">
                        <button onclick="resetStudentPassword(\''.$std_id.'\')" class="btn-action" style="background: transparent; color: #8b5cf6; border: none; padding: 5px; font-size: 16px; margin: 0 3px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.transform=\'scale(1.2)\'" onmouseout="this.style.transform=\'scale(1)\'" title="إعادة تعيين كلمة المرور"><i class="fas fa-key"></i></button>
                        
                        <button onclick="openEditStudentModal(\''.$std_id.'\')" class="btn-action" style="background: transparent; color: #3b82f6; border: none; padding: 5px; font-size: 16px; margin: 0 3px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.transform=\'scale(1.2)\'" onmouseout="this.style.transform=\'scale(1)\'" title="تعديل بيانات الطالب"><i class="fas fa-edit"></i></button>
                        
                        <button onclick="toggleStudentStatus(\''.$std_id.'\', 1)" class="btn-action" style="background: transparent; color: #f59e0b; border: none; padding: 5px; font-size: 16px; margin: 0 3px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.transform=\'scale(1.2)\'" onmouseout="this.style.transform=\'scale(1)\'" title="تجميد/تعليق الحساب"><i class="fas fa-pause-circle"></i></button>
                        
                        <button onclick="toggleStudentStatus(\''.$std_id.'\', 2)" class="btn-action" style="background: transparent; color: #ef4444; border: none; padding: 5px; font-size: 16px; margin: 0 3px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.transform=\'scale(1.2)\'" onmouseout="this.style.transform=\'scale(1)\'" title="قفل الحساب نهائياً"><i class="fas fa-lock"></i></button>
                        
                        <button onclick="deleteStudent(\''.$std_id.'\')" class="btn-action" style="background: transparent; color: #dc2626; border: none; padding: 5px; font-size: 16px; margin: 0 3px; cursor: pointer; transition: 0.2s;" onmouseover="this.style.transform=\'scale(1.2)\'" onmouseout="this.style.transform=\'scale(1)\'" title="حذف الطالب"><i class="fas fa-user-times"></i></button>
                      </td>';
                      
            $html .= '</tr>';
        }
    } else {
        $html = '<tr><td colspan="6" style="text-align: center; padding: 40px; color: #64748b; font-weight: bold; font-size: 1.1rem;">
                    <i class="fas fa-folder-open fa-3x mb-3" style="opacity: 0.5; color: #94a3b8;"></i><br>
                    لم يتم العثور على طلاب مطابقين.<br>
                    <small style="color: #94a3b8; font-weight: normal; margin-top: 10px; display: block;">تأكد من اختيار فلاتر صحيحة، أو راجع الإدارة لتتأكد من جداول التوزيعات.</small>
                 </td></tr>';
    }

    $response = [
        'status' => 'success',
        'html' => $html,
        'count' => $counter,
        'stages' => $allowed_stages, 
        'sections' => $allowed_sections 
    ];

} catch (Exception $e) {
    $response = ['status' => 'error', 'message' => $e->getMessage()];
}

echo json_encode($response, JSON_UNESCAPED_UNICODE);
exit;
?>