<?php

declare(strict_types=1);
require_once __DIR__ . '/../app/config/bootstrap.php';
require_once __DIR__ . '/../app/core/Auth.php';
require_once __DIR__ . '/../app/core/AdminLayout.php';
require_once __DIR__ . '/../app/models/BankCard.php';
require_once __DIR__ . '/../app/core/Csrf.php';

Auth::requireAdmin();
$model = new BankCard();
$message = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && Csrf::validate($_POST['_csrf'] ?? null)) {
    $action = (string)($_POST['action'] ?? 'create');
    if ($action === 'delete') {
        $id = (int)($_POST['id'] ?? 0);
        if ($id > 0 && $model->delete($id)) {
            $message = 'کارت حذف شد.';
        } else {
            $error = 'حذف انجام نشد.';
        }
    } else {
        $data = [
            'bank_name' => trim((string)($_POST['bank_name'] ?? '')),
            'card_number_masked' => trim((string)($_POST['card_number_masked'] ?? '')),
            'card_holder' => trim((string)($_POST['card_holder'] ?? '')),
            'iban' => trim((string)($_POST['iban'] ?? '')),
            'sort_order' => (int)($_POST['sort_order'] ?? 0),
            'is_active' => isset($_POST['is_active']),
        ];
        if ($data['bank_name'] === '' || $data['card_number_masked'] === '' || $data['card_holder'] === '') {
            $error = 'نام بانک، شماره کارت و صاحب کارت الزامی است.';
        } elseif ($action === 'update') {
            $id = (int)($_POST['id'] ?? 0);
            if ($id > 0 && $model->update($id, $data)) {
                $message = 'کارت به‌روز شد.';
            } else {
                $error = 'ذخیره نشد.';
            }
        } else {
            if ($model->create($data)) {
                $message = 'کارت جدید ثبت شد.';
            } else {
                $error = 'ثبت انجام نشد.';
            }
        }
    }
}

$cards = $model->all();
$editId = isset($_GET['edit']) ? (int)$_GET['edit'] : 0;
$edit = $editId > 0 ? $model->find($editId) : null;
?>
<!doctype html>
<html lang="fa" dir="rtl">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="<?= htmlspecialchars(assetPath('/assets/css/admin.css')) ?>">
    <title>کارت‌های بانکی</title>
</head>

<body>
    <div class="admin-wrap">
        <?php renderAdminSidebar('bank_cards'); ?>
        <main class="content">
            <h1>مدیریت کارت‌های پرداخت کارت‌به‌کارت</h1>
            <p>شماره کارت را می‌توانید هر زمان ویرایش کنید. در صفحه تسویه، کارت‌های فعال به مشتری نمایش داده می‌شوند.</p>
            <?php if ($message): ?><p class="admin-flash ok"><?= htmlspecialchars($message) ?></p><?php endif; ?>
            <?php if ($error): ?><p class="admin-flash err"><?= htmlspecialchars($error) ?></p><?php endif; ?>

            <h2><?= $edit ? 'ویرایش کارت' : 'افزودن کارت' ?></h2>
            <form method="post" class="admin-form">
                <input type="hidden" name="_csrf" value="<?= htmlspecialchars(Csrf::token()) ?>">
                <input type="hidden" name="action" value="<?= $edit ? 'update' : 'create' ?>">
                <?php if ($edit): ?><input type="hidden" name="id" value="<?= (int)$edit['id'] ?>"><?php endif; ?>

                <label>نام بانک</label>
                <input name="bank_name" required value="<?= htmlspecialchars((string)($edit['bank_name'] ?? '')) ?>">

                <label>شماره کارت (برای نمایش؛ می‌توانید ماسک کنید مثلا 6037-****-****-1234)</label>
                <input name="card_number_masked" required value="<?= htmlspecialchars((string)($edit['card_number_masked'] ?? '')) ?>">

                <label>نام صاحب کارت</label>
                <input name="card_holder" required value="<?= htmlspecialchars((string)($edit['card_holder'] ?? '')) ?>">

                <label>شبا (اختیاری)</label>
                <input name="iban" value="<?= htmlspecialchars((string)($edit['iban'] ?? '')) ?>">

                <label>ترتیب نمایش</label>
                <input name="sort_order" type="number" value="<?= (int)($edit['sort_order'] ?? 0) ?>">

                <label><input type="checkbox" name="is_active" value="1" <?= !isset($edit['is_active']) || !empty($edit['is_active']) ? 'checked' : '' ?>> فعال در صفحه پرداخت</label>

                <button type="submit"><?= $edit ? 'ذخیره' : 'ثبت' ?></button>
                <?php if ($edit): ?>
                    <a href="<?= htmlspecialchars(appPath('/admin/bank-cards.php')) ?>">انصراف</a>
                <?php endif; ?>
            </form>

            <h2>فهرست</h2>
            <table class="admin-table">
                <thead>
                    <tr>
                        <th>#</th>
                        <th>بانک</th>
                        <th>کارت</th>
                        <th>صاحب</th>
                        <th>فعال</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($cards as $c): ?>
                        <tr>
                            <td><?= (int)$c['id'] ?></td>
                            <td><?= htmlspecialchars((string)$c['bank_name']) ?></td>
                            <td><code><?= htmlspecialchars((string)$c['card_number_masked']) ?></code></td>
                            <td><?= htmlspecialchars((string)$c['card_holder']) ?></td>
                            <td><?= !empty($c['is_active']) ? 'بله' : 'خیر' ?></td>
                            <td>
                                <a href="<?= htmlspecialchars(appPath('/admin/bank-cards.php?edit=' . (int)$c['id'])) ?>">ویرایش</a>
                                <form method="post" class="inline-form" onsubmit="return confirm('حذف؟');">
                                    <input type="hidden" name="_csrf" value="<?= htmlspecialchars(Csrf::token()) ?>">
                                    <input type="hidden" name="action" value="delete">
                                    <input type="hidden" name="id" value="<?= (int)$c['id'] ?>">
                                    <button type="submit" class="btn-sm danger">حذف</button>
                                </form>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </main>
    </div>
    <script src="<?= htmlspecialchars(assetPath('/assets/js/admin.js')) ?>" defer></script>
</body>

</html>
<?php Performance::finish('admin.bank-cards'); ?>