<?php
// pages/my_leaves.php
require_once __DIR__ . '/../includes/header.php';
require_once __DIR__ . '/../includes/functions.php';

$user_id = $_SESSION['id'];
$user_role = $_SESSION['role'];
$msg = "";

// 1. معالجة الطلب
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == 'new_leave') {
    $type = $_POST['leave_type'];
    
    // دمج التاريخ والوقت
    $s_date = $_POST['start_date'];
    $s_time = !empty($_POST['start_time']) ? $_POST['start_time'] : '00:00:00';
    $start_datetime = $s_date . ' ' . $s_time;

    $e_date = $_POST['end_date'];
    $e_time = !empty($_POST['end_time']) ? $_POST['end_time'] : '23:59:59';
    $end_datetime = $e_date . ' ' . $e_time;

    $reason = trim($_POST['reason']);
    
    // --- (تعديل جوهري: تحديد المسار) ---
    $initial_status = 'pending_manager'; // الافتراضي: يذهب للمدير المباشر

    // قائمة الموظفين التابعين للمدير التنفيذي مباشرة
    $ceo_direct_reports = ['legal_officer', 'media_manager', 'maintenance_head', 'admin_staff', 'purchasing'];
    
    if (in_array($user_role, $ceo_direct_reports)) {
        // هؤلاء يذهبون للمدير التنفيذي أولاً (بصفته مدير مباشر)
        $initial_status = 'pending_manager'; 
    } elseif ($user_role == 'hr_manager') {
        // مدير الموارد البشرية يذهب للمدير التنفيذي أيضاً
        $initial_status = 'pending_manager'; 
    } elseif ($user_role == 'ceo') {
        // المدير التنفيذي (إجازته ذاتية أو لمجلس الإدارة - سنعتبرها معتمدة للأرشفة)
        $initial_status = 'approved'; 
    } else {
        // الموظفون الرياضيون يذهبون لمدراء فرقهم
        $initial_status = 'pending_manager'; 
    }

    // رفع المرفق
    $attachment = null;
    if (isset($_FILES['attachment']) && $_FILES['attachment']['error'] == 0) {
        $allowed = ['pdf', 'jpg', 'png', 'jpeg'];
        $ext = strtolower(pathinfo($_FILES['attachment']['name'], PATHINFO_EXTENSION));
        if (in_array($ext, $allowed)) {
            $new_name = "leave_" . $user_id . "_" . time() . "." . $ext;
            $upload_dir = __DIR__ . '/../assets/uploads/documents/'; 
            if (!is_dir($upload_dir)) mkdir($upload_dir, 0777, true);
            move_uploaded_file($_FILES['attachment']['tmp_name'], $upload_dir . $new_name);
            $attachment = 'assets/uploads/documents/' . $new_name;
        }
    }

    try {
        $sql = "INSERT INTO leaves (user_id, leave_type, start_date, end_date, reason, attachment_path, status) VALUES (?, ?, ?, ?, ?, ?, ?)";
        $pdo->prepare($sql)->execute([$user_id, $type, $start_datetime, $end_datetime, $reason, $attachment, $initial_status]);
        $new_id = $pdo->lastInsertId();

        // الإشعارات الذكية
        if (in_array($user_role, $ceo_direct_reports) || $user_role == 'hr_manager') {
            // إشعار للمدير التنفيذي
            sendNotification($pdo, 'ceo', "📝 طلب إجازة جديد من موظف مباشر #$new_id", "hr/leaves_panel.php");
        } elseif ($initial_status == 'pending_manager') {
            // إشعار لمدراء الفرق
            $target_role = ($user_role == 'staff_first') ? 'manager_first' : 'manager_youth';
            sendNotification($pdo, $target_role, "📝 طلب إجازة من موظف #$new_id", "hr/leaves_panel.php");
        }

        $msg = "<div class='alert alert-success'>تم تقديم الطلب بنجاح!</div>";
    } catch (PDOException $e) {
        $msg = "<div class='alert alert-danger'>خطأ: " . $e->getMessage() . "</div>";
    }
}

// 2. جلب الإجازات
$leaves = $pdo->prepare("SELECT * FROM leaves WHERE user_id = ? ORDER BY created_at DESC");
$leaves->execute([$user_id]);
$my_leaves = $leaves->fetchAll();

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

<div class="row mb-4">
    <div class="col-md-8">
        <h3 class="fw-bold text-success"><i class="bi bi-calendar2-check"></i> طلبات الإجازات والمغادرات</h3>
    </div>
    <div class="col-md-4 text-end">
        <button class="btn btn-success shadow" data-bs-toggle="modal" data-bs-target="#newLeaveModal">
            <i class="bi bi-plus-lg"></i> طلب إجازة جديد
        </button>
    </div>
</div>

<?php echo $msg; ?>

<div class="card shadow-sm border-0">
    <div class="card-body p-0">
        <div class="table-responsive">
            <table class="table table-hover align-middle mb-0 text-center">
                <thead class="table-light">
                    <tr>
                        <th>النوع</th>
                        <th>من</th>
                        <th>إلى</th>
                        <th>الحالة</th>
                        <th>المرفق</th>
                        <th>تاريخ الطلب</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($my_leaves) > 0): ?>
                        <?php foreach ($my_leaves as $leave): 
                            $status_badge = match($leave['status']) {
                                'pending_manager' => '<span class="badge bg-warning text-dark">اعتماد المدير المباشر</span>',
                                'pending_hr' => '<span class="badge bg-info text-dark">التدقيق والتسجيل (HR)</span>',
                                'pending_ceo' => '<span class="badge bg-primary">الاعتماد النهائي (المدير)</span>',
                                'approved' => '<span class="badge bg-success">تم الاعتماد</span>',
                                'rejected' => '<span class="badge bg-danger">مرفوض</span>',
                                default => '<span class="badge bg-secondary">'.$leave['status'].'</span>'
                            };
                            $is_time_based = in_array($leave['leave_type'], ['morning_late', 'early_leave', 'official_mission', 'compensatory']);
                            $fmt = $is_time_based ? 'Y-m-d H:i' : 'Y-m-d';
                        ?>
                        <tr>
                            <td class="fw-bold"><?php echo $leave_types[$leave['leave_type']] ?? $leave['leave_type']; ?></td>
                            <td style="direction: ltr;"><?php echo date($fmt, strtotime($leave['start_date'])); ?></td>
                            <td style="direction: ltr;"><?php echo date($fmt, strtotime($leave['end_date'])); ?></td>
                            <td><?php echo $status_badge; ?></td>
                            <td>
                                <?php if($leave['attachment_path']): ?>
                                    <a href="../<?php echo $leave['attachment_path']; ?>" target="_blank" class="text-primary"><i class="bi bi-paperclip"></i></a>
                                <?php else: ?>
                                    <span class="text-muted">-</span>
                                <?php endif; ?>
                            </td>
                            <td class="text-muted small"><?php echo date('Y-m-d', strtotime($leave['created_at'])); ?></td>
                        </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr><td colspan="6" class="py-4 text-muted">لا يوجد سجل إجازات سابق.</td></tr>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<div class="modal fade" id="newLeaveModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <form method="POST" enctype="multipart/form-data">
                <input type="hidden" name="action" value="new_leave">
                <div class="modal-header bg-success text-white"><h5 class="modal-title">طلب إجازة / مغادرة</h5><button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button></div>
                <div class="modal-body">
                    <div class="mb-3">
                        <label class="form-label fw-bold">نوع الإجازة</label>
                        <select name="leave_type" id="leaveTypeSelect" class="form-select" required onchange="toggleTimeInputs()">
                            <option value="" selected disabled>-- اختر النوع --</option>
                            <optgroup label="إجازات بالأيام (تحتاج تدقيق HR)">
                                <option value="annual">إجازة سنوية</option>
                                <option value="sick">إجازة مرضية</option>
                                <option value="emergency">إجازة طارئة</option>
                                <option value="marriage">إجازة زواج</option>
                                <option value="bereavement">إجازة وفاة</option>
                                <option value="unpaid">بدون راتب</option>
                            </optgroup>
                            <optgroup label="إجازات/أذونات ساعية (اعتماد مباشر)">
                                <option value="compensatory">إجازة بديلة (يوم ونصف / نصف يوم)</option>
                                <option value="official_mission">مهمة عمل رسمية</option>
                                <option value="morning_late">تأخير صباحي</option>
                                <option value="early_leave">مغادرة مبكرة</option>
                            </optgroup>
                        </select>
                    </div>
                    <div class="row g-2 mb-3">
                        <div class="col-6">
                            <label class="form-label">من تاريخ</label>
                            <input type="date" name="start_date" class="form-control" required>
                            <div class="time-input-group mt-1" style="display:none;"><label class="small text-muted">الساعة</label><input type="time" name="start_time" class="form-control"></div>
                        </div>
                        <div class="col-6">
                            <label class="form-label">إلى تاريخ</label>
                            <input type="date" name="end_date" class="form-control" required>
                            <div class="time-input-group mt-1" style="display:none;"><label class="small text-muted">الساعة</label><input type="time" name="end_time" class="form-control"></div>
                        </div>
                    </div>
                    <div class="mb-3"><label class="form-label">السبب</label><textarea name="reason" class="form-control" rows="2" required placeholder="يرجى ذكر السبب بوضوح..."></textarea></div>
                    <div class="mb-3"><label class="form-label">مرفق (تقرير طبي / إثبات مهمة)</label><input type="file" name="attachment" class="form-control"></div>
                </div>
                <div class="modal-footer"><button type="submit" class="btn btn-success w-100">إرسال الطلب</button></div>
            </form>
        </div>
    </div>
</div>

<script>
function toggleTimeInputs() {
    const select = document.getElementById('leaveTypeSelect');
    const type = select.value;
    const timeGroups = document.querySelectorAll('.time-input-group');
    const timeInputs = document.querySelectorAll('input[type="time"]');
    const timeBasedTypes = ['official_mission', 'morning_late', 'early_leave', 'compensatory'];

    if (timeBasedTypes.includes(type)) {
        timeGroups.forEach(el => el.style.display = 'block');
        timeInputs.forEach(el => el.required = true);
    } else {
        timeGroups.forEach(el => el.style.display = 'none');
        timeInputs.forEach(el => { el.required = false; el.value = ''; });
    }
}
</script>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>