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

// التحقق من الصلاحية
if (!in_array($_SESSION['role'], ['super_admin', 'hr_manager', 'ceo', 'manager_first', 'manager_youth'])) {
    die("<div class='alert alert-danger'>عذراً، هذه الصفحة للمدراء والموارد البشرية فقط.</div>");
}

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

// =========================================================
// 1. معالجة القرارات (المنطق الذكي الجديد)
// =========================================================
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['decision'])) {
    $leave_id = $_POST['leave_id'];
    $decision = $_POST['decision']; // approve / reject
    $comment = $_POST['comment'] ?? '';
    // الحالة الحالية للطلب القادمة من الفورم (مهمة للتمييز)
    $current_status_snapshot = $_POST['current_status_snapshot']; 
    $leave_type_snapshot = $_POST['leave_type_snapshot'];

    $new_status = '';
    $update_column = ''; 
    $notif_target = '';
    $notif_msg = '';

    // --- (أ) سيناريو الموافقة ---
    if ($decision == 'approve') {
        
        // 1. إذا كان المدير التنفيذي (CEO) هو من يوافق
        if ($current_role == 'ceo') {
            
            // الحالة أ: موافقة مبدئية (الطلب جديد وصل للمدير بصفته مدير مباشر)
            if ($current_status_snapshot == 'pending_manager') {
                $time_based_leaves = ['compensatory', 'morning_late', 'early_leave', 'official_mission'];
                
                if (in_array($leave_type_snapshot, $time_based_leaves)) {
                    // إجازة ساعية/بديلة -> اعتماد فوري
                    $new_status = 'approved';
                    $update_column = 'ceo_comment'; // نستخدم حقل المدير
                    $notif_target = 'owner';
                    $notif_msg = "🎉 وافق المدير التنفيذي على الإذن/الإجازة";
                    
                    // سنقوم بإشعار HR للعلم فقط لاحقاً
                } else {
                    // إجازة أيام -> تذهب للتدقيق (HR)
                    $new_status = 'pending_hr';
                    $update_column = 'manager_comment'; // نعتبر المدير هنا كأنه "مدير مباشر"
                    $notif_target = 'hr_manager';
                    $notif_msg = "📋 طلب موافق عليه مبدئياً من المدير، بانتظار التدقيق والتسجيل";
                }
            } 
            // الحالة ب: موافقة نهائية (الطلب عاد من HR)
            elseif ($current_status_snapshot == 'pending_ceo') {
                $new_status = 'approved';
                $update_column = 'ceo_comment';
                $notif_target = 'owner';
                $notif_msg = "🎉 الاعتماد النهائي للإجازة من المدير التنفيذي";
            }
        }
        
        // 2. إذا كان مدير الموارد البشرية (HR) هو من يوافق
        elseif (in_array($current_role, ['hr_manager', 'super_admin'])) {
            $new_status = 'pending_ceo'; // تعود للمدير للاعتماد النهائي
            $update_column = 'hr_comment';
            $notif_target = 'ceo';
            $notif_msg = "✅ تم تدقيق وتسجيل الإجازة من HR، بانتظار اعتمادك النهائي";
        }
        
        // 3. المدراء الآخرين (عادل / مازن)
        elseif (in_array($current_role, ['manager_first', 'manager_youth'])) {
            $new_status = 'pending_hr';
            $update_column = 'manager_comment';
            $notif_target = 'hr_manager';
            $notif_msg = "✅ إجازة معتمدة من المدير المباشر، بانتظار التدقيق";
        }
    } 
    
    // --- (ب) سيناريو الرفض ---
    else {
        $new_status = 'rejected';
        if ($current_role == 'ceo') $update_column = 'ceo_comment';
        elseif (in_array($current_role, ['hr_manager', 'super_admin'])) $update_column = 'hr_comment';
        else $update_column = 'manager_comment';
        
        $notif_target = 'owner';
        $notif_msg = "❌ تم رفض طلب الإجازة";
    }

    try {
        $sql = "UPDATE leaves SET status = ?, $update_column = ? WHERE id = ?";
        $pdo->prepare($sql)->execute([$new_status, $comment, $leave_id]);

        // إرسال الإشعارات
        if ($notif_target == 'owner') {
            $owner_id = $pdo->query("SELECT user_id FROM leaves WHERE id = $leave_id")->fetchColumn();
            sendNotification($pdo, $owner_id, $notif_msg, "my_leaves.php");
            
            // إذا اعتمد المدير التنفيذي "إذن ساعي"، نرسل نسخة لـ HR للعلم والرزنامة
            if ($new_status == 'approved' && $current_role == 'ceo') {
                sendNotification($pdo, 'hr_manager', "ℹ️ تم اعتماد إذن/إجازة ساعية من المدير (للعلم)", "hr/leaves_panel.php");
            }
        } else {
            sendNotification($pdo, $notif_target, $notif_msg, "hr/leaves_panel.php");
        }

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

// =========================================================
// 2. جلب الطلبات (SQL Logic)
// =========================================================
$sql = "SELECT l.*, u.full_name_ar, u.role, u.staff_category FROM leaves l JOIN users u ON l.user_id = u.id ";

if ($current_role == 'ceo') {
    // المدير التنفيذي يرى:
    // 1. طلبات موظفيه المباشرين (pending_manager)
    // 2. طلبات بانتظار الاعتماد النهائي بعد HR (pending_ceo)
    $sql .= "WHERE l.status IN ('pending_manager', 'pending_ceo')";
    // فلترة إضافية: إذا كان pending_manager يجب أن يكون الموظف تابعاً له
    // (لكن حالياً أي pending_manager يظهر للمدراء، سنقوم بالفلترة أدناه داخل اللوب للعرض فقط أو نعتمد أن النظام يوجه صح)
    // لتبسيط الأمر: سنعرض الكل هنا، والتمييز يكون بالوصف.
    $title = "إجازات بانتظار قرار المدير التنفيذي";

} elseif ($current_role == 'hr_manager' || $current_role == 'super_admin') {
    $sql .= "WHERE l.status = 'pending_hr'";
    $title = "إجازات بانتظار التدقيق والتسجيل (HR)";

} elseif ($current_role == 'manager_first') {
    $sql .= "WHERE l.status = 'pending_manager' AND u.role = 'staff_first'";
    $title = "إجازات موظفي الفريق الأول";

} elseif ($current_role == 'manager_youth') {
    $sql .= "WHERE l.status = 'pending_manager' AND u.role IN ('staff_youth', 'coach')";
    $title = "إجازات موظفي المراحل السنية";

} else {
    $sql .= "WHERE 1=0";
    $title = "لا توجد صلاحية";
}

$sql .= " ORDER BY l.created_at ASC";
$requests = $pdo->query($sql)->fetchAll();

// تصفية إضافية للمدير التنفيذي لضمان عدم رؤية طلبات الفرق الرياضية التي لم يعتمدها مدراؤهم
if ($current_role == 'ceo') {
    $requests = array_filter($requests, function($req) {
        // إذا كانت الحالة pending_manager، يجب أن يكون الموظف ليس رياضياً تابعاً لمدير آخر
        if ($req['status'] == 'pending_manager') {
            return !in_array($req['role'], ['staff_first', 'staff_youth', 'coach']);
        }
        return true;
    });
}

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

<div class="row mb-4">
    <div class="col-12">
        <h3 class="fw-bold text-primary"><i class="bi bi-inbox-fill"></i> <?php echo $title; ?></h3>
    </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>
                    </tr>
                </thead>
                <tbody>
                    <?php if (count($requests) > 0): ?>
                        <?php foreach ($requests as $req): 
                            // توضيح المرحلة للمدير
                            $stage_label = "";
                            if($current_role == 'ceo') {
                                if($req['status'] == 'pending_manager') $stage_label = '<span class="badge bg-warning text-dark mb-1">طلب جديد (موافقة مبدئية)</span>';
                                if($req['status'] == 'pending_ceo') $stage_label = '<span class="badge bg-primary mb-1">مدقق من HR (اعتماد نهائي)</span>';
                            }
                        ?>
                        <tr>
                            <td class="fw-bold text-start ps-3">
                                <?php echo $req['full_name_ar']; ?>
                                <br><small class="text-muted"><?php echo $req['role']; ?></small>
                            </td>
                            <td>
                                <span class="badge bg-primary bg-opacity-10 text-primary">
                                    <?php echo $leave_types[$req['leave_type']] ?? $req['leave_type']; ?>
                                </span>
                            </td>
                            <td class="small">
                                من: <?php echo date('Y-m-d H:i', strtotime($req['start_date'])); ?><br>
                                إلى: <?php echo date('Y-m-d H:i', strtotime($req['end_date'])); ?>
                            </td>
                            <td class="text-start" style="max-width: 250px;">
                                <?php echo $stage_label; ?><br>
                                <small class="d-block text-truncate"><?php echo $req['reason']; ?></small>
                                <?php if($req['attachment_path']): ?>
                                    <a href="../../<?php echo $req['attachment_path']; ?>" target="_blank" class="btn btn-sm btn-light border mt-1 py-0" style="font-size:10px">المرفق 📎</a>
                                <?php endif; ?>
                            </td>
                            <td>
                                <button class="btn btn-sm btn-success" data-bs-toggle="modal" data-bs-target="#actionModal<?php echo $req['id']; ?>">
                                    <i class="bi bi-check-lg"></i> قرار
                                </button>
                                
                                <div class="modal fade" id="actionModal<?php echo $req['id']; ?>" tabindex="-1">
                                    <div class="modal-dialog">
                                        <div class="modal-content">
                                            <form method="POST">
                                                <input type="hidden" name="leave_id" value="<?php echo $req['id']; ?>">
                                                <input type="hidden" name="current_status_snapshot" value="<?php echo $req['status']; ?>">
                                                <input type="hidden" name="leave_type_snapshot" value="<?php echo $req['leave_type']; ?>">
                                                
                                                <div class="modal-header">
                                                    <h5 class="modal-title">اتخاذ قرار: <?php echo $req['full_name_ar']; ?></h5>
                                                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                                                </div>
                                                <div class="modal-body text-start">
                                                    <p><strong>النوع:</strong> <?php echo $leave_types[$req['leave_type']] ?? $req['leave_type']; ?></p>
                                                    <p><strong>السبب:</strong>: <?php echo $req['reason']; ?></p>
                                                    
                                                    <?php if(!empty($req['manager_comment'])): ?>
                                                        <div class="alert alert-warning p-2 small mb-2">
                                                            <strong><i class="bi bi-person-check"></i> المدير المباشر:</strong><br><?php echo $req['manager_comment']; ?>
                                                        </div>
                                                    <?php endif; ?>
                                                    <?php if(!empty($req['hr_comment'])): ?>
                                                        <div class="alert alert-info p-2 small mb-2">
                                                            <strong><i class="bi bi-person-lines-fill"></i> الموارد البشرية:</strong><br><?php echo $req['hr_comment']; ?>
                                                        </div>
                                                    <?php endif; ?>

                                                    <div class="mb-3 mt-3">
                                                        <label>ملاحظاتك:</label>
                                                        <textarea name="comment" class="form-control" placeholder="سبب الموافقة أو الرفض..."></textarea>
                                                    </div>
                                                </div>
                                                <div class="modal-footer justify-content-center">
                                                    <button type="submit" name="decision" value="approve" class="btn btn-success px-4">✅ موافقة</button>
                                                    <button type="submit" name="decision" value="reject" class="btn btn-danger px-4">❌ رفض</button>
                                                </div>
                                            </form>
                                        </div>
                                    </div>
                                </div>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr><td colspan="5" class="py-5 text-muted">لا توجد طلبات معلقة في صندوقك.</td></tr>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

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