<?php
if (session_status() === PHP_SESSION_NONE) session_start();

require_once '../config.php';

if (!isLoggedIn() || !isAdmin()) {
    setMessage('برای دسترسی به این صفحه، لطفاً به عنوان مدیر وارد شوید.', 'error');
    redirect('../login.php');
}

// Handle approval/rejection
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['request_id'])) {
    $request_id = (int)$_POST['request_id'];
    $action = $_POST['action'] ?? null;
    $notes = $_POST['notes'] ?? 'بررسی توسط مدیر';

    $stmt = $pdo->prepare("SELECT * FROM payment_notifications WHERE id = ? AND status = 'pending'");
    $stmt->execute([$request_id]);
    $request = $stmt->fetch();

    if ($request && $action) {
        if ($action === 'approve') {
            $pdo->beginTransaction();
            try {
                // 1. Add funds to wallet
                walletDeposit($pdo, $request['representative_id'], $request['amount'], 'deposit_request', $request['id'], 'تایید واریزی شماره ' . $request_id);

                // 2. Update notification status
                $update_stmt = $pdo->prepare("UPDATE payment_notifications SET status = 'approved', reviewed_at = NOW(), reviewer_notes = ? WHERE id = ?");
                $update_stmt->execute([$notes, $request_id]);

                $pdo->commit();
                setMessage('درخواست با موفقیت تایید و مبلغ به کیف پول نماینده اضافه شد.', 'success');
            } catch (Exception $e) {
                $pdo->rollBack();
                setMessage('خطا در تایید درخواست: ' . $e->getMessage(), 'error');
            }
        } elseif ($action === 'reject') {
            try {
                $update_stmt = $pdo->prepare("UPDATE payment_notifications SET status = 'rejected', reviewed_at = NOW(), reviewer_notes = ? WHERE id = ?");
                $update_stmt->execute([$notes, $request_id]);
                setMessage('درخواست با موفقیت رد شد.', 'success');
            } catch (Exception $e) {
                setMessage('خطا در رد کردن درخواست: ' . $e->getMessage(), 'error');
            }
        }
    }
    redirect('payments.php');
    exit;
}


$page_title = 'بررسی پرداخت‌ها';

// Fetch notifications based on status filter
$status_filter = $_GET['status'] ?? 'pending';
$allowed_statuses = ['pending', 'approved', 'rejected', 'all'];
if (!in_array($status_filter, $allowed_statuses)) {
    $status_filter = 'pending';
}

$sql = "SELECT pn.*, r.username FROM payment_notifications pn JOIN representatives r ON pn.representative_id = r.id";
$params = [];
if ($status_filter !== 'all') {
    $sql .= " WHERE pn.status = ?";
    $params[] = $status_filter;
}
$sql .= " ORDER BY pn.created_at DESC";

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$requests = $stmt->fetchAll();

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

<div class="card admin-main-card">
    <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0">لیست درخواست‌های پرداخت</h5>
        <div class="btn-group" role="group">
            <a href="?status=pending" class="btn btn-sm btn-outline-warning <?= $status_filter === 'pending' ? 'active' : '' ?>">در انتظار</a>
            <a href="?status=approved" class="btn btn-sm btn-outline-success <?= $status_filter === 'approved' ? 'active' : '' ?>">تایید شده</a>
            <a href="?status=rejected" class="btn btn-sm btn-outline-danger <?= $status_filter === 'rejected' ? 'active' : '' ?>">رد شده</a>
            <a href="?status=all" class="btn btn-sm btn-outline-secondary <?= $status_filter === 'all' ? 'active' : '' ?>">همه</a>
        </div>
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <table class="table table-hover align-middle">
                <thead>
                    <tr>
                        <th>نماینده</th>
                        <th>مبلغ</th>
                        <th>اطلاعات تراکنش</th>
                        <th>تاریخ ثبت</th>
                        <th>وضعیت</th>
                        <th>رسید</th>
                        <?php if ($status_filter === 'pending'): ?>
                            <th>عملیات</th>
                        <?php else: ?>
                            <th>یادداشت مدیر</th>
                        <?php endif; ?>
                    </tr>
                </thead>
                <tbody>
                    <?php if (empty($requests)): ?>
                        <tr><td colspan="7" class="text-center text-muted">هیچ درخواستی با این وضعیت یافت نشد.</td></tr>
                    <?php endif; ?>
                    <?php foreach ($requests as $req): ?>
                        <tr>
                            <td><?= htmlspecialchars($req['username']) ?></td>
                            <td class="fw-bold"><?= number_format($req['amount']) ?></td>
                            <td><small><?= nl2br(htmlspecialchars($req['transaction_details'])) ?></small></td>
                            <td><small><?= htmlspecialchars($req['created_at']) ?></small></td>
                            <td>
                                <?php 
                                    $status_map = [
                                        'pending' => ['class' => 'warning', 'text' => 'در انتظار'],
                                        'approved' => ['class' => 'success', 'text' => 'تایید شده'],
                                        'rejected' => ['class' => 'danger', 'text' => 'رد شده'],
                                    ];
                                    $status = $status_map[$req['status']] ?? ['class' => 'secondary', 'text' => 'نامشخص'];
                                ?>
                                <span class="badge bg-<?= $status['class'] ?>"><?= $status['text'] ?></span>
                            </td>
                            <td>
                                <?php if ($req['attachment_path']): ?>
                                    <a href="<?= htmlspecialchars($req['attachment_path']) ?>" target="_blank" class="btn btn-sm btn-outline-primary">مشاهده</a>
                                <?php endif; ?>
                            </td>
                            <td>
                                <?php if ($req['status'] === 'pending'): ?>
                                    <form method="POST" action="payments.php" class="d-inline-block">
                                        <input type="hidden" name="request_id" value="<?= $req['id'] ?>">
                                        <input type="hidden" name="action" value="approve">
                                        <button type="submit" class="btn btn-sm btn-success">تایید</button>
                                    </form>
                                    <button type="button" class="btn btn-sm btn-danger" data-bs-toggle="modal" data-bs-target="#rejectModal-<?= $req['id'] ?>">رد</button>
                                <?php else: ?>
                                    <small class="text-muted"><?= htmlspecialchars($req['reviewer_notes'] ?? '-') ?></small>
                                <?php endif; ?>
                            </td>
                        </tr>

                        <!-- Reject Modal -->
                        <div class="modal fade" id="rejectModal-<?= $req['id'] ?>" tabindex="-1" aria-hidden="true">
                            <div class="modal-dialog">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <h5 class="modal-title">رد کردن درخواست</h5>
                                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                                    </div>
                                    <form method="POST" action="payments.php">
                                        <div class="modal-body">
                                            <p>آیا از رد کردن این درخواست مطمئن هستید؟</p>
                                            <input type="hidden" name="request_id" value="<?= $req['id'] ?>">
                                            <input type="hidden" name="action" value="reject">
                                            <div class="mb-3">
                                                <label for="notes-<?= $req['id'] ?>" class="form-label">دلیل رد کردن (اختیاری)</label>
                                                <input type="text" class="form-control" id="notes-<?= $req['id'] ?>" name="notes" placeholder="مثلاً: رسید نامعتبر است">
                                            </div>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">انصراف</button>
                                            <button type="submit" class="btn btn-danger">بله، رد کن</button>
                                        </div>
                                    </form>
                                </div>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

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