<?php
ini_set('display_errors', 0);
error_reporting(E_ALL);
session_start();
header('Content-Type: application/json; charset=utf-8');

if (!file_exists('db_connect.php')) {
    echo json_encode(['status' => 'error', 'message' => 'ملف الاتصال غير موجود!']);
    exit;
}
require_once 'db_connect.php'; 

try {
    $action = isset($_POST['action']) ? $_POST['action'] : 'get_reports';

    // 🚀 [جديد] قسم تعديل حالة الطالب إلى مجاز مع كتابة العذر 🚀
    if ($action === 'update_status') {
        $record_id = (int)$_POST['record_id'];
        $excuse    = $conn->real_escape_string($_POST['excuse']);
        
        // 🚀 تم إزالة محاولة إدخال نص في حقل الوقت لحل الخطأ 🚀
        // سيتم تغيير الحالة إلى مجاز (excused) بنجاح تام
        $update_sql = "UPDATE `attendance` SET status = 'excused' WHERE id = $record_id";
        
        if ($conn->query($update_sql)) {
            echo json_encode(['status' => 'success', 'message' => 'تم تغيير الحالة إلى مجاز بنجاح']);
        } else {
            throw new Exception('فشل تحديث الحالة: ' . $conn->error);
        }
        exit;
    }

    // 📊 قسم جلب التقارير (الأساسي) 📊
    $date_from = isset($_POST['date_from']) ? $conn->real_escape_string($_POST['date_from']) : '';
    $date_to   = isset($_POST['date_to']) ? $conn->real_escape_string($_POST['date_to']) : '';
    $stage     = isset($_POST['stage']) ? $conn->real_escape_string($_POST['stage']) : '';
    $status    = isset($_POST['status']) ? $conn->real_escape_string($_POST['status']) : '';

    // 🚀 أضفنا الربط مع جدول المدرسين (teachers t) لجلب الاسم الحقيقي (t.display_name) 🚀
    $sql = "SELECT a.id as record_id, a.attendance_date, a.status, a.arrival_time, a.teacher_name as raw_teacher, 
                   s.student_name, s.stage, s.department,
                   t.display_name as real_teacher_name
            FROM `attendance` a
            LEFT JOIN `students` s ON a.student_id = s.student_id 
            LEFT JOIN `teachers` t ON a.teacher_name = t.teacher_name
            WHERE 1=1"; 

    if (!empty($date_from)) $sql .= " AND a.attendance_date >= '$date_from'";
    if (!empty($date_to))   $sql .= " AND a.attendance_date <= '$date_to'";
    if (!empty($stage))     $sql .= " AND s.stage LIKE '%$stage%'";
    
    if (!empty($status)) {
        if ($status === 'غائب') $sql .= " AND a.status = 'absent'";
        elseif ($status === 'حاضر') $sql .= " AND a.status = 'present'";
        elseif ($status === 'مجاز') $sql .= " AND a.status = 'excused'";
    }

    $sql .= " ORDER BY a.attendance_date DESC LIMIT 500";
    $result = $conn->query($sql);

    if (!$result) throw new Exception('خطأ في قاعدة البيانات: ' . $conn->error);

    $data = [];
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            
            // ترجمة الحالات للواجهة
            $ui_status = 'غير محدد';
            if ($row['status'] == 'present') $ui_status = 'حاضر';
            if ($row['status'] == 'absent') $ui_status = 'غائب';
            if ($row['status'] == 'excused') $ui_status = 'مجاز';
            
            // 🚀 الملاحظات الذكية (استخدام الاسم الحقيقي للمدرس بدلاً من الكود) 🚀
            $final_teacher_name = !empty($row['real_teacher_name']) ? $row['real_teacher_name'] : $row['raw_teacher'];
            
            $smart_notes = '';
            if (!empty($final_teacher_name) && $final_teacher_name !== 'NULL') {
                $smart_notes .= "بواسطة: " . $final_teacher_name . " ";
            }
            if (!empty($row['arrival_time']) && $row['arrival_time'] !== 'NULL' && $row['arrival_time'] !== '00:00:00') {
                $smart_notes .= "<span style='color:#f59e0b; font-weight:bold;'>(وقت: " . $row['arrival_time'] . ")</span>";
            }
            
            if (empty(trim(strip_tags($smart_notes)))) $smart_notes = '-';

            $data[] = [
                'record_id'    => $row['record_id'],
                'student_name' => $row['student_name'] ?? 'طالب غير معروف',
                'stage'        => $row['stage'] ?? '-',
                'department'   => $row['department'] ?? '-',
                'date'         => $row['attendance_date'] ?? '-',
                'status'       => $ui_status,
                'notes'        => trim($smart_notes)
            ];
        }
    }

    echo json_encode(['status' => 'success', 'data' => $data]);

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

if(isset($conn)) $conn->close();
?>