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

require_once '../config.php';

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

$page_title = 'صورتحساب‌ها';
$representative_id = (int)($_SESSION['user_id'] ?? 0);

// Handle Invoice Payment
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['pay_invoice'])) {
    $invoice_id_to_pay = (int)$_POST['invoice_id'];
    if ($invoice_id_to_pay > 0) {
        $payment_successful = payInvoiceFromWallet($pdo, $invoice_id_to_pay, $representative_id);
        if ($payment_successful) {
            setMessage("صورتحساب #{$invoice_id_to_pay} با موفقیت از موجودی کیف پول پرداخت شد.", 'success');
        } else {
            setMessage("موجودی کیف پول برای پرداخت صورتحساب کافی نیست یا خطایی رخ داده است.", 'danger');
        }
        redirect('invoices.php');
    }
}

// Fetch Invoices
$invoices = [];
try {
    $stmt = $pdo->prepare("SELECT * FROM invoices WHERE representative_id = ? ORDER BY created_at DESC");
    $stmt->execute([$representative_id]);
    $invoices = $stmt->fetchAll();
} catch (Exception $e) {
    setMessage('خطا در دریافت لیست صورتحساب‌ها.', 'danger');
}

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

<div class="card">
    <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0"><i class="bi bi-receipt me-2"></i>لیست صورتحساب‌ها</h5>
        <a href="wallet.php" class="btn btn-sm btn-outline-primary">مشاهده کیف پول</a>
    </div>
    <div class="card-body">
        <?php if (empty($invoices)): ?>
            <div class="text-center text-muted py-4">
                <i class="bi bi-inbox fs-2"></i>
                <p class="mt-2">هیچ صورتحسابی برای شما صادر نشده است.</p>
            </div>
        <?php else: ?>
            <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>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($invoices as $invoice): ?>
                            <tr>
                                <td><?= $invoice['id'] ?></td>
                                <td class="fw-bold"><?= number_format($invoice['amount']) ?> تومان</td>
                                <td>
                                    <span class="badge bg-<?= get_invoice_status_class($invoice['status']) ?>">
                                        <?= get_invoice_status_text($invoice['status']) ?>
                                    </span>
                                </td>
                                <td><?= to_jalali($invoice['created_at']) ?></td>
                                <td><?= $invoice['paid_at'] ? to_jalali($invoice['paid_at']) : '-' ?></td>
                                <td>
                                    <?php if ($invoice['status'] === 'unpaid'): ?>
                                        <form method="POST" action="invoices.php" onsubmit="return confirm('آیا از پرداخت این صورتحساب از طریق کیف پول خود اطمینان دارید؟');">
                                            <input type="hidden" name="invoice_id" value="<?= $invoice['id'] ?>">
                                            <button type="submit" name="pay_invoice" class="btn btn-success btn-sm">پرداخت با کیف پول</button>
                                        </form>
                                    <?php else: ?>
                                        <button class="btn btn-secondary btn-sm" disabled>پرداخت شده</button>
                                    <?php endif; ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        <?php endif; ?>
    </div>
</div>

<?php
function get_invoice_status_class($status) {
    switch ($status) {
        case 'paid': return 'success';
        case 'unpaid': return 'warning';
        case 'cancelled': return 'danger';
        default: return 'secondary';
    }
}

function get_invoice_status_text($status) {
    switch ($status) {
        case 'paid': return 'پرداخت شده';
        case 'unpaid': return 'پرداخت نشده';
        case 'cancelled': return 'لغو شده';
        default: return 'نامشخص';
    }
}

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