<?php
require_once '../config.php';

if (!isAdmin()) {
    redirect('../login.php');
}

$page_title = 'مدیریت درخواست‌های واریز';

// عملیات تایید یا رد
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $request_id = (int)($_POST['request_id'] ?? 0);
    $admin_note = trim($_POST['admin_note'] ?? '');
    
    try {
        $pdo->beginTransaction();
        
        $stmt = $pdo->prepare("SELECT pr.*, r.username FROM payment_requests pr JOIN representatives r ON pr.representative_id = r.id WHERE pr.id = ? FOR UPDATE");
        $stmt->execute([$request_id]);
        $request = $stmt->fetch();
        
        if ($request && $request['status'] === 'pending') {
            if ($_POST['action'] === 'approve') {
                // افزایش موجودی کیف پول
                $stmt = $pdo->prepare("UPDATE representatives SET wallet_balance = wallet_balance + ? WHERE id = ?");
                $stmt->execute([$request['amount'], $request['representative_id']]);
                
                // ثبت تراکنش
                $stmt = $pdo->prepare("INSERT INTO wallet_transactions (representative_id, amount, type, description) VALUES (?, ?, 'deposit', ?)");
                $stmt->execute([
                    $request['representative_id'], 
                    $request['amount'], 
                    "واریز تایید شده (درخواست #" . $request['id'] . ")" . ($admin_note ? " - " . $admin_note : "")
                ]);
                
                // به‌روزرسانی وضعیت درخواست
                $stmt = $pdo->prepare("UPDATE payment_requests SET status = 'approved', admin_note = ? WHERE id = ?");
                $stmt->execute([$admin_note ?: 'تایید شد', $request_id]);
                
                setMessage("درخواست واریز نماینده {$request['username']} تایید و کیف پول شارژ شد.");
            } elseif ($_POST['action'] === 'reject') {
                $stmt = $pdo->prepare("UPDATE payment_requests SET status = 'rejected', admin_note = ? WHERE id = ?");
                $stmt->execute([$admin_note ?: 'رد شد', $request_id]);
                
                setMessage("درخواست واریز نماینده {$request['username']} رد شد.", 'warning');
            }
        }
        
        $pdo->commit();
    } catch (Exception $e) {
        $pdo->rollBack();
        setMessage('خطا در پردازش درخواست: ' . $e->getMessage(), 'error');
    }
    redirect('payment_requests.php');
}

// دریافت لیست درخواست‌ها
$status_filter = $_GET['status'] ?? 'pending';
$sql = "SELECT pr.*, r.username, r.full_name FROM payment_requests pr JOIN representatives r ON pr.representative_id = r.id";
if ($status_filter !== 'all') {
    $sql .= " WHERE pr.status = " . $pdo->quote($status_filter);
}
$sql .= " ORDER BY pr.created_at DESC";

$requests = $pdo->query($sql)->fetchAll();

require_once '../includes/header.php';
?>

<div class="row mb-4">
    <div class="col-12">
        <div class="card">
            <div class="card-header d-flex justify-content-between align-items-center">
                <h5 class="mb-0"><i class="bi bi-cash-stack"></i> مدیریت واریزی‌های نمایندگان</h5>
                <div class="btn-group btn-group-sm">
                    <a href="?status=pending" class="btn btn-outline-warning <?= $status_filter === 'pending' ? 'active' : '' ?>">در انتظار</a>
                    <a href="?status=approved" class="btn btn-outline-success <?= $status_filter === 'approved' ? 'active' : '' ?>">تایید شده</a>
                    <a href="?status=rejected" class="btn btn-outline-danger <?= $status_filter === 'rejected' ? 'active' : '' ?>">رد شده</a>
                    <a href="?status=all" class="btn btn-outline-secondary <?= $status_filter === 'all' ? 'active' : '' ?>">همه</a>
                </div>
            </div>
            <div class="card-body p-0">
                <?php if (empty($requests)): ?>
                    <div class="p-5 text-center text-muted">هیچ درخواستی در این بخش یافت نشد.</div>
                <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-hover align-middle mb-0">
                            <thead>
                                <tr>
                                    <th>#</th>
                                    <th>نماینده</th>
                                    <th>مبلغ (تومان)</th>
                                    <th>تاریخ ثبت</th>
                                    <th>توضیحات نماینده</th>
                                    <th>فیش</th>
                                    <th>وضعیت</th>
                                    <th>عملیات</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($requests as $req): ?>
                                    <tr>
                                        <td><?= $req['id'] ?></td>
                                        <td>
                                            <div class="fw-bold"><?= htmlspecialchars($req['full_name'] ?: $req['username']) ?></div>
                                            <small class="text-muted"><?= htmlspecialchars($req['username']) ?></small>
                                        </td>
                                        <td class="fw-bold text-success"><?= number_format($req['amount']) ?></td>
                                        <td><?= date('Y/m/d H:i', strtotime($req['created_at'])) ?></td>
                                        <td class="small" style="max-width: 200px;"><?= htmlspecialchars($req['description'] ?: '-') ?></td>
                                        <td>
                                            <?php if ($req['receipt_image']): ?>
                                                <a href="../uploads/receipts/<?= htmlspecialchars($req['receipt_image']) ?>" target="_blank" class="btn btn-sm btn-soft-info">
                                                    <i class="bi bi-image"></i> مشاهده فیش
                                                </a>
                                            <?php else: ?>
                                                <span class="text-muted small">بدون تصویر</span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($req['status'] === 'pending'): ?>
                                                <span class="badge bg-warning text-dark">در انتظار</span>
                                            <?php elseif ($req['status'] === 'approved'): ?>
                                                <span class="badge bg-success">تایید شده</span>
                                            <?php else: ?>
                                                <span class="badge bg-danger">رد شده</span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($req['status'] === 'pending'): ?>
                                                <button type="button" class="btn btn-sm btn-success" onclick="processRequest(<?= $req['id'] ?>, 'approve', '<?= number_format($req['amount']) ?>')">تایید</button>
                                                <button type="button" class="btn btn-sm btn-danger" onclick="processRequest(<?= $req['id'] ?>, 'reject', '<?= number_format($req['amount']) ?>')">رد</button>
                                            <?php else: ?>
                                                <small class="text-muted"><?= htmlspecialchars($req['admin_note'] ?: '-') ?></small>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>

<!-- Modal پردازش درخواست -->
<div class="modal fade" id="processModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="modalTitle">پردازش درخواست واریز</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <form method="POST">
                <div class="modal-body">
                    <input type="hidden" name="request_id" id="modal_request_id">
                    <input type="hidden" name="action" id="modal_action">
                    
                    <p id="modalMessage"></p>
                    
                    <div class="mb-0">
                        <label class="form-label">توضیحات ادمین (اختیاری)</label>
                        <textarea name="admin_note" class="form-control" rows="3" placeholder="توضیحاتی که نماینده خواهد دید..."></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">انصراف</button>
                    <button type="submit" id="submitBtn" class="btn">تایید نهایی</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
function processRequest(id, action, amount) {
    const modal = new bootstrap.Modal(document.getElementById('processModal'));
    document.getElementById('modal_request_id').value = id;
    document.getElementById('modal_action').value = action;
    
    if (action === 'approve') {
        document.getElementById('modalTitle').innerHTML = '<i class="bi bi-check-circle text-success"></i> تایید واریزی';
        document.getElementById('modalMessage').innerHTML = `آیا از تایید مبلغ <strong>${amount} تومان</strong> و شارژ کیف پول نماینده اطمینان دارید؟`;
        document.getElementById('submitBtn').className = 'btn btn-success';
        document.getElementById('submitBtn').innerText = 'تایید و شارژ کیف پول';
    } else {
        document.getElementById('modalTitle').innerHTML = '<i class="bi bi-x-circle text-danger"></i> رد درخواست';
        document.getElementById('modalMessage').innerHTML = `آیا از رد درخواست واریز مبلغ <strong>${amount} تومان</strong> اطمینان دارید؟`;
        document.getElementById('submitBtn').className = 'btn btn-danger';
        document.getElementById('submitBtn').innerText = 'رد درخواست';
    }
    
    modal.show();
}
</script>

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