<?php
// api/get_leaves.php
session_start(); // ضروري لجلب صلاحية المستخدم الحالي
require_once __DIR__ . '/../includes/db.php';

header('Content-Type: application/json');

// التحقق من وجود مستخدم مسجل
if (!isset($_SESSION['role'])) {
    echo json_encode([]);
    exit;
}

$current_role = $_SESSION['role'];
$current_id = $_SESSION['id'];

// 1. القائمة السوداء: المشتريات والموظفين العاديين لا يرون شيئاً
if (in_array($current_role, ['purchasing', 'requester', 'staff_first', 'staff_youth', 'coach', 'admin_staff'])) {
    echo json_encode([]);
    exit;
}

// 2. بناء الاستعلام الأساسي
$sql = "SELECT l.*, u.full_name_ar, u.role, u.staff_category 
        FROM leaves l 
        JOIN users u ON l.user_id = u.id 
        WHERE l.status = 'approved'";

// 3. تطبيق الفلترة الذكية حسب المدير
if ($current_role == 'manager_first') {
    // مدير الفريق الأول يرى فقط موظفي الفريق الأول
    $sql .= " AND u.role = 'staff_first'";
} 
elseif ($current_role == 'manager_youth') {
    // مدير المراحل يرى موظفي المراحل والمدربين
    $sql .= " AND u.role IN ('staff_youth', 'coach')";
} 
elseif ($current_role == 'maintenance_head') { // عمر بن علوي
    // يرى العمال وموظفي الصيانة (سنفترض أنهم تحت مسمى admin_staff أو فئة workers إذا أضفتها)
    // هنا سنعتمد على الفئة staff_category إذا كانت 'maintenance' أو مسميات محددة
    // أو يمكن ربطهم عبر جدول الأقسام (departments) لاحقاً ليكون أدق
    $sql .= " AND u.staff_category = 'maintenance'"; // تأكد من إضافة هذه الفئة للموظفين المعنيين
}
// أما (super_admin, ceo, hr_manager) فيرون الكل (لا يوجد شرط إضافي)

$stmt = $pdo->prepare($sql);
$stmt->execute();
$leaves = $stmt->fetchAll(PDO::FETCH_ASSOC);

$events = [];

// مصفوفة الألوان
$colors = [
    'annual' => '#28a745',       // أخضر
    'sick' => '#dc3545',         // أحمر
    'emergency' => '#fd7e14',    // برتقالي
    'official_mission' => '#007bff', // أزرق
    'morning_late' => '#6f42c1', // بنفسجي
    'early_leave' => '#e83e8c',  // وردي
    'compensatory' => '#17a2b8', // سماوي
    'unpaid' => '#6c757d',       // رمادي
    'marriage' => '#e83e8c',
    'bereavement' => '#343a40'
];

$titles = [
    'annual' => 'إجازة سنوية', 'sick' => 'مرضية', 'emergency' => 'طارئة',
    'official_mission' => 'مهمة عمل', 'compensatory' => 'إجازة بديلة',
    'morning_late' => 'تأخير', 'early_leave' => 'مغادرة',
    'marriage' => 'زواج', 'bereavement' => 'وفاة', 'unpaid' => 'بدون راتب'
];

foreach ($leaves as $leave) {
    $color = $colors[$leave['leave_type']] ?? '#333333';
    $type_ar = $titles[$leave['leave_type']] ?? $leave['leave_type'];

    // إذا كانت إجازة "ساعية" (تأخير/مغادرة) نعرض الوقت
    $is_time_based = in_array($leave['leave_type'], ['morning_late', 'early_leave', 'official_mission', 'compensatory']);
    
    $events[] = [
        'id' => $leave['id'],
        'title' => $leave['full_name_ar'] . " (" . $type_ar . ")",
        'start' => $leave['start_date'],
        'end' => $leave['end_date'],
        'backgroundColor' => $color,
        'borderColor' => $color,
        'allDay' => !$is_time_based, // إذا لم تكن ساعية، تظهر كيوم كامل
        'extendedProps' => [
            'type' => $type_ar,
            'reason' => $leave['reason'],
            'employee' => $leave['full_name_ar']
        ]
    ];
}

echo json_encode($events);
?>