<?php
// pages/manage_requests.php
require_once __DIR__ . '/../includes/header.php';
require_once __DIR__ . '/../includes/mail_function.php';

// ========================================================
// 1. التحقق من الصلاحية
// ========================================================
// ملاحظة: قمت بإضافة purchasing و hr_manager لأنهم عادة يحتاجون رؤية هذه الصفحة
// يمكنك إزالتهم إذا أردت الحصر فقط على السوبر أدمن والمدير التنفيذي
$allowed_roles = ['super_admin', 'ceo', 'purchasing', 'hr_manager']; 

if (!in_array($_SESSION['role'], $allowed_roles)) {
    echo "<div class='container mt-5'><div class='alert alert-danger text-center'>عذراً، ليس لديك صلاحية للدخول إلى هذه الصفحة.</div></div>";
    require_once __DIR__ . '/../includes/footer.php';
    exit;
}

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

// ========================================================
// 2. معالجة القرارات (موافقة / رفض) - (نفس المنطق الخاص بك)
// ========================================================
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['decision'])) {
    $req_id = $_POST['request_id'];
    $decision = $_POST['decision'];
    $comment = $_POST['comment'] ?? '';

    try {
        if ($decision == 'approve') {
            // أ) حساب إجمالي المبلغ من البنود
            $stmt_sum = $pdo->prepare("SELECT SUM(estimated_price) FROM request_items WHERE request_id = ?");
            $stmt_sum->execute([$req_id]);
            $total_amount = $stmt_sum->fetchColumn() ?: 0;

            // تحديث المبلغ في الجدول الرئيسي
            $pdo->prepare("UPDATE requests SET total_amount = ? WHERE id = ?")->execute([$total_amount, $req_id]);

            // ب) التحقق من الشرط المالي (> 1000)
            if ($total_amount > 1000) {
                // مسار الدورة المستندية المالية
                $new_status = 'approved'; 
                $payment_status = 'waiting_supplier'; // تحويل للمشتريات
                
                $stmt = $pdo->prepare("UPDATE requests SET status = ?, payment_status = ?, manager_approval_at = NOW(), manager_notes = ? WHERE id = ?");
                $stmt->execute([$new_status, $payment_status, $comment, $req_id]);
                
                $msg = "✅ تم اعتماد الطلب. نظراً لأن المبلغ ($total_amount) يتجاوز 1000 درهم، تم تحويله لمسؤول المشتريات.";
            } else {
                // المسار المباشر
                $new_status = 'approved'; 
                $stmt = $pdo->prepare("UPDATE requests SET status = ?, manager_approval_at = NOW(), manager_notes = ? WHERE id = ?");
                $stmt->execute([$new_status, $comment, $req_id]);
                
                $msg = "✅ تم اعتماد الطلب بنجاح.";
            }

        } elseif ($decision == 'reject') {
            $stmt = $pdo->prepare("UPDATE requests SET status = 'rejected', manager_approval_at = NOW(), manager_notes = ? WHERE id = ?");
            $stmt->execute([$comment, $req_id]);
            $msg = "❌ تم رفض الطلب.";
        }
    } catch (PDOException $e) {
        $msg = "خطأ في النظام: " . $e->getMessage();
    }
}

// ========================================================
// 3. معالجة الحذف (للسوبر أدمن فقط)
// ========================================================
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == 'delete_request') {
    if ($_SESSION['role'] == 'super_admin') {
        $del_id = $_POST['request_id'];
        try {
            // حذف المرفقات أولاً
            $stmt_files = $pdo->prepare("SELECT file_path FROM attachments WHERE request_id = ?");
            $stmt_files->execute([$del_id]);
            foreach ($stmt_files->fetchAll() as $file) {
                $path = __DIR__ . '/../' . $file['file_path'];
                if (file_exists($path)) unlink($path);
            }
            // حذف الطلب
            $pdo->prepare("DELETE FROM requests WHERE id = ?")->execute([$del_id]);
            $msg = "🗑️ تم حذف الطلب بنجاح.";
        } catch (PDOException $e) {
            $msg = "خطأ أثناء الحذف: " . $e->getMessage();
        }
    }
}

// ========================================================
// 4. جلب الطلبات (تم تحسين الاستعلام لإصلاح مشاكل العرض)
// ========================================================
$requests = [];
try {
    // بناء جملة الاستعلام الأساسية مع جلب الأسماء والأقسام بشكل ذكي
    $base_sql = "SELECT r.*, 
                 u.username, 
                 u.full_name_ar,
                 -- دالة COALESCE تأخذ أول قيمة غير فارغة (اسم القسم الإداري أو اسم الفريق الرياضي)
                 COALESCE(d.name, r.admin_department_name, r.sports_team_name, 'غير محدد') as dept_display_name
                 FROM requests r 
                 LEFT JOIN users u ON r.user_id = u.id 
                 LEFT JOIN employee_details ed ON u.id = ed.user_id
                 LEFT JOIN departments d ON ed.department_id = d.id";

    if ($_SESSION['role'] == 'super_admin') {
        // السوبر أدمن يرى كل شيء
        $sql = $base_sql . " ORDER BY r.created_at DESC";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $requests = $stmt->fetchAll();

    } elseif ($_SESSION['role'] == 'ceo') {
        // المدير التنفيذي يرى الطلبات المعلقة الخاصة به أو المعلقة بشكل عام
        $sql = $base_sql . " WHERE r.status IN ('pending', 'pending_ceo', 'ready_for_ceo') ORDER BY r.created_at DESC";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $requests = $stmt->fetchAll();
        
    } else {
        // (اختياري) أدوار أخرى ترى كل الطلبات لكن بدون أزرار تحكم
        $sql = $base_sql . " ORDER BY r.created_at DESC";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $requests = $stmt->fetchAll();
    }

} catch (PDOException $e) {
    echo "<div class='container mt-3'><div class='alert alert-danger'>خطأ في جلب البيانات: " . $e->getMessage() . "</div></div>";
}
?>

<div class="container-fluid mt-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h3 class="text-primary fw-bold"><i class="bi bi-ui-checks"></i> إدارة الطلبات الواردة</h3>
        <a href="manage_requests.php" class="btn btn-outline-secondary btn-sm"><i class="bi bi-arrow-clockwise"></i> تحديث</a>
    </div>
    
    <?php if ($msg): ?>
        <div class="alert alert-info alert-dismissible fade show shadow-sm">
            <?php echo $msg; ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    <?php endif; ?>

    <div class="card shadow border-0">
        <div class="card-body p-0">
            <div class="table-responsive">
                <table class="table table-hover table-striped align-middle text-center mb-0">
                    <thead class="table-dark">
                        <tr>
                            <th>#</th>
                            <th>مقدم الطلب</th>
                            <th>القسم / الجهة</th>
                            <th>العنوان</th>
                            <th>الحالة</th>
                            <th>التاريخ</th>
                            <th>إجراءات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if (count($requests) > 0): ?>
                            <?php foreach ($requests as $req): 
                                // تجهيز البيانات للعرض
                                $display_name = !empty($req['full_name_ar']) ? $req['full_name_ar'] : $req['username'];
                                $display_title = !empty($req['subject']) ? $req['subject'] : '<span class="text-muted fst-italic">بدون عنوان</span>';
                                
                                // منطق تلوين وتسمية الحالات (تم توسيعه ليشمل حالتك)
                                $status_badge = '';
                                switch($req['status']) {
                                    case 'pending': $status_badge = '<span class="badge bg-warning text-dark">⏳ قيد الانتظار</span>'; break;
                                    case 'pending_ceo': 
                                    case 'ready_for_ceo': // الحالة التي ظهرت في الصورة
                                        $status_badge = '<span class="badge bg-info text-dark">📋 بانتظار المدير التنفيذي</span>'; break;
                                    case 'approved': $status_badge = '<span class="badge bg-success">✔ معتمد</span>'; break;
                                    case 'rejected': $status_badge = '<span class="badge bg-danger">❌ مرفوض</span>'; break;
                                    case 'completed': $status_badge = '<span class="badge bg-dark">🏁 مكتمل</span>'; break;
                                    default: $status_badge = '<span class="badge bg-secondary">'.$req['status'].'</span>';
                                }
                            ?>
                            <tr>
                                <td class="fw-bold"><?php echo $req['id']; ?></td>
                                <td><?php echo htmlspecialchars($display_name); ?></td>
                                <td>
                                    <span class="badge bg-light text-secondary border">
                                        <?php echo htmlspecialchars($req['dept_display_name']); ?>
                                    </span>
                                </td>
                                <td class="text-start"><?php echo $display_title; ?></td>
                                <td>
                                    <?php echo $status_badge; ?>
                                </td>
                                <td><?php echo date('Y-m-d', strtotime($req['created_at'])); ?></td>
                                <td>
                                    <div class="btn-group" role="group">
                                        <a href="view_request.php?id=<?php echo $req['id']; ?>" class="btn btn-sm btn-primary">
                                            <i class="bi bi-eye"></i> تفاصيل
                                        </a>
                                        
                                        <?php if (in_array($req['status'], ['pending', 'pending_ceo', 'ready_for_ceo']) && $_SESSION['role'] == 'ceo'): ?>
                                        <button type="button" class="btn btn-sm btn-success" data-bs-toggle="modal" data-bs-target="#decisionModal<?php echo $req['id']; ?>">
                                            <i class="bi bi-check-circle"></i> قرار
                                        </button>
                                        <?php endif; ?>

                                        <?php if ($_SESSION['role'] == 'super_admin'): ?>
                                        <form method="POST" class="d-inline" onsubmit="return confirm('⚠️ حذف نهائي؟ لا يمكن التراجع عن هذا الإجراء.');">
                                            <input type="hidden" name="action" value="delete_request">
                                            <input type="hidden" name="request_id" value="<?php echo $req['id']; ?>">
                                            <button type="submit" class="btn btn-sm btn-outline-danger" title="حذف">
                                                <i class="bi bi-trash-fill"></i>
                                            </button>
                                        </form>
                                        <?php endif; ?>
                                    </div>

                                    <div class="modal fade" id="decisionModal<?php echo $req['id']; ?>" tabindex="-1">
                                        <div class="modal-dialog">
                                            <div class="modal-content">
                                                <form method="POST">
                                                    <div class="modal-header bg-light">
                                                        <h5 class="modal-title">اتخاذ قرار للطلب #<?php echo $req['id']; ?></h5>
                                                        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                                                    </div>
                                                    <div class="modal-body text-start">
                                                        <input type="hidden" name="request_id" value="<?php echo $req['id']; ?>">
                                                        <div class="mb-3">
                                                            <label class="form-label fw-bold">ملاحظات إدارية:</label>
                                                            <textarea name="comment" class="form-control" rows="3" placeholder="اكتب سبب الرفض أو ملاحظات الاعتماد..."></textarea>
                                                        </div>
                                                        <div class="alert alert-warning small">
                                                            <i class="bi bi-info-circle"></i> تنبيه: سيتم حساب إجمالي المبلغ تلقائياً. إذا تجاوز 1000 درهم سيتحول للمشتريات.
                                                        </div>
                                                    </div>
                                                    <div class="modal-footer justify-content-center">
                                                        <button type="submit" name="decision" value="approve" class="btn btn-success px-4"><i class="bi bi-check-lg"></i> موافقة</button>
                                                        <button type="submit" name="decision" value="reject" class="btn btn-danger px-4"><i class="bi bi-x-lg"></i> رفض</button>
                                                    </div>
                                                </form>
                                            </div>
                                        </div>
                                    </div>
                                    </td>
                            </tr>
                            <?php endforeach; ?>
                        <?php else: ?>
                            <tr><td colspan="7" class="text-center py-5 text-muted">لا توجد طلبات للعرض حالياً.</td></tr>
                        <?php endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

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