<?php
declare(strict_types=1);

/**
 * /admin/board/index.php
 * Адмінка дошки оголошень: налаштування ціни + список на модерації
 */

require_once dirname(__DIR__, 2) . '/includes/start.php';
require_once dirname(__DIR__, 2) . '/functional/board/_lib.php';

$pdo = brd_db();
$me  = brd_require_admin();

if (!brd_ready($pdo)) {
    http_response_code(500);
    echo 'Board module tables were not found. Run SQL migration first.';
    exit;
}

$settings = brd_load_settings($pdo);
[$flashType, $flashText] = brd_flash_get('admin_board');

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        if (!brd_csrf_check($_POST['csrf'] ?? null)) {
            throw new RuntimeException(brd_t('Помилка безпеки. Оновіть сторінку.', 'Ошибка безопасности. Обновите страницу.', 'Security error. Refresh the page.'));
        }

        $payload = [
            'board_enabled' => (isset($_POST['board_enabled']) && (string)$_POST['board_enabled'] === '1') ? '1' : '0',
            'board_publish_price' => (string)max(0, (int)($_POST['board_publish_price'] ?? 0)),
            'board_items_per_page' => (string)max(1, min(60, (int)($_POST['board_items_per_page'] ?? 12))),
            'board_default_country' => strtoupper(substr((string)($_POST['board_default_country'] ?? 'UA'), 0, 2)),
            'board_require_moderation' => '1',
        ];
        brd_save_settings($pdo, $payload);
        brd_flash_set('admin_board', 'success', brd_t('Налаштування збережено.', 'Настройки сохранены.', 'Settings saved.'));
        brd_redirect('/admin/board/index.php');
    } catch (Throwable $e) {
        $flashType = 'danger';
        $flashText = $e->getMessage();
    }
}

$statusFilter = brd_trimmed($_GET['status'] ?? 'pending');
$allowed = ['pending', 'approved', 'rejected', 'archived', 'draft', 'deleted', 'all'];
if (!in_array($statusFilter, $allowed, true)) {
    $statusFilter = 'pending';
}

$params = [];
$where = [];
if ($statusFilter !== 'all') {
    $where[] = 'a.status = ?';
    $params[] = $statusFilter;
}
$whereSql = $where ? ('WHERE ' . implode(' AND ', $where)) : '';

$sql = "
    SELECT
        a.*,
        u.username,
        u.full_name,
        " . (brd_lang() === 'ru' ? 'c.name_ru' : (brd_lang() === 'en' ? 'c.name_en' : 'c.name_uk')) . " AS category_name
    FROM board_ads a
    INNER JOIN users u ON u.id = a.user_id
    LEFT JOIN board_categories c ON c.id = a.category_id
    {$whereSql}
    ORDER BY
        CASE WHEN a.status = 'pending' THEN 0 ELSE 1 END,
        a.updated_at DESC,
        a.id DESC
    LIMIT 200
";

$rows = [];
try {
    $st = $pdo->prepare($sql);
    $st->execute($params);
    $rows = $st->fetchAll(PDO::FETCH_ASSOC) ?: [];
} catch (Throwable $e) {
    $rows = [];
}

$title = brd_t('Адмінка: дошка оголошень', 'Админка: доска объявлений', 'Admin: classifieds board');
$meta_desc = $title;

require dirname(__DIR__, 2) . '/includes/header.php';
?>
<div class="container my-4">
    <div class="row g-4">
        <div class="col-lg-4">
            <div class="card card-app p-3 mb-3">
                <div class="fw-semibold fs-5 mb-3"><?= brd_h(brd_t('Налаштування', 'Настройки', 'Settings')) ?></div>

                <?php if ($flashType !== '' && $flashText !== ''): ?>
                    <div class="alert alert-<?= brd_h($flashType) ?>"><?= brd_h($flashText) ?></div>
                <?php endif; ?>

                <form method="post">
                    <input type="hidden" name="csrf" value="<?= brd_h(brd_csrf_token()) ?>">

                    <div class="form-check form-switch mb-3">
                        <input class="form-check-input" type="checkbox" id="board_enabled" name="board_enabled" value="1" <?= (($settings['board_enabled'] ?? '1') === '1' ? 'checked' : '') ?>>
                        <label class="form-check-label" for="board_enabled"><?= brd_h(brd_t('Увімкнути розділ', 'Включить раздел', 'Enable module')) ?></label>
                    </div>

                    <div class="mb-3">
                        <label class="form-label"><?= brd_h(brd_t('Вартість публікації (VM Coins)', 'Стоимость публикации (VM Coins)', 'Publish price (VM Coins)')) ?></label>
                        <input type="number" min="0" step="1" name="board_publish_price" class="form-control" value="<?= brd_h((string)($settings['board_publish_price'] ?? '25')) ?>">
                    </div>

                    <div class="mb-3">
                        <label class="form-label"><?= brd_h(brd_t('Оголошень на сторінку', 'Объявлений на страницу', 'Items per page')) ?></label>
                        <input type="number" min="1" max="60" step="1" name="board_items_per_page" class="form-control" value="<?= brd_h((string)($settings['board_items_per_page'] ?? '12')) ?>">
                    </div>

                    <div class="mb-3">
                        <label class="form-label"><?= brd_h(brd_t('Країна за замовчуванням', 'Страна по умолчанию', 'Default country')) ?></label>
                        <input type="text" maxlength="2" name="board_default_country" class="form-control text-uppercase" value="<?= brd_h((string)($settings['board_default_country'] ?? 'UA')) ?>">
                    </div>

                    <button class="btn btn-primary"><?= brd_h(brd_t('Зберегти', 'Сохранить', 'Save')) ?></button>
                </form>
            </div>
        </div>

        <div class="col-lg-8">
            <div class="card card-app p-3">
                <div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-3">
                    <div class="fw-semibold fs-5"><?= brd_h(brd_t('Модерація оголошень', 'Модерация объявлений', 'Ads moderation')) ?></div>

                    <form method="get" class="d-flex gap-2">
                        <select name="status" class="form-select">
                            <?php foreach ($allowed as $st): ?>
                                <option value="<?= brd_h($st) ?>" <?= ($statusFilter === $st ? 'selected' : '') ?>>
                                    <?= brd_h($st === 'all' ? brd_t('Усі', 'Все', 'All') : brd_status_label($st)) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                        <button class="btn btn-outline-secondary"><?= brd_h(brd_t('Показати', 'Показать', 'Show')) ?></button>
                    </form>
                </div>

                <?php if (!$rows): ?>
                    <div class="alert alert-light border mb-0">
                        <?= brd_h(brd_t('Оголошень за цим фільтром немає.', 'Объявлений по этому фильтру нет.', 'There are no ads for this filter.')) ?>
                    </div>
                <?php else: ?>
                    <div class="table-responsive">
                        <table class="table align-middle">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th><?= brd_h(brd_t('Оголошення', 'Объявление', 'Ad')) ?></th>
                                    <th><?= brd_h(brd_t('Автор', 'Автор', 'Author')) ?></th>
                                    <th><?= brd_h(brd_t('Статус', 'Статус', 'Status')) ?></th>
                                    <th><?= brd_h(brd_t('Дії', 'Действия', 'Actions')) ?></th>
                                </tr>
                            </thead>
                            <tbody>
                            <?php foreach ($rows as $row): ?>
                                <tr>
                                    <td><?= (int)$row['id'] ?></td>
                                    <td>
                                        <div class="fw-semibold"><?= brd_h((string)$row['title']) ?></div>
                                        <div class="small text-muted">
                                            <?= brd_h((string)($row['category_name'] ?? '')) ?>
                                            ·
                                            <?= brd_h(trim((string)($row['region_name'] ?? '') . ((string)($row['city_name'] ?? '') !== '' ? ', ' . (string)$row['city_name'] : ''))) ?>
                                        </div>
                                    </td>
                                    <td><?= brd_h(trim((string)($row['full_name'] ?? '') ?: (string)($row['username'] ?? ''))) ?></td>
                                    <td><span class="badge bg-<?= brd_h(brd_status_badge_class((string)$row['status'])) ?>"><?= brd_h(brd_status_label((string)$row['status'])) ?></span></td>
                                    <td>
                                        <a class="btn btn-sm btn-outline-primary" href="/admin/board/view.php?id=<?= (int)$row['id'] ?>">
                                            <?= brd_h(brd_t('Відкрити', 'Открыть', 'Open')) ?>
                                        </a>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>
        </div>
    </div>
</div>
<?php require dirname(__DIR__, 2) . '/includes/footer.php'; ?>
