<?php
declare(strict_types=1);
require_once __DIR__ . '/bootstrap.php';
admin_require_login();

$collectionsMap = [
    'houses' => cms_collection('houses'),
    'faq' => cms_collection('faq'),
    'reviews' => cms_collection('reviews'),
    'rates' => cms_collection('rates'),
    'gallery' => cms_collection('gallery'),
];
$leadsData = cms_leads();
$leads = array_values(array_filter($leadsData['items'] ?? [], static fn($item) => empty($item['is_hidden'])));
$online = online_visitors();
$itemsCount = 0;
foreach ($collectionsMap as $collection) { $itemsCount += count($collection['items'] ?? []); }
$confirmed = array_values(array_filter($leads, static fn($item) => in_array((string)($item['status'] ?? ''), ['confirmed','done'], true)));
$potential = 0.0;
$confirmedRevenue = 0.0;
foreach ($leads as $lead) {
    $sum = (float)preg_replace('/[^\d.]+/', '', (string)($lead['estimated_total'] ?? '0'));
    $potential += $sum;
    if (in_array((string)($lead['status'] ?? ''), ['confirmed','done'], true)) $confirmedRevenue += $sum;
}
$conversion = count($leads) ? round(count($confirmed) / count($leads) * 100) : 0;
$health = cms_admin_health();
ob_start();
?>
<div class="grid grid-4">
  <div class="card"><div class="badge">Сущности</div><h2><?= $itemsCount ?></h2><p>Домики, отзывы, FAQ, тарифы и фото.</p></div>
  <div class="card"><div class="badge">CRM</div><h2><?= count($leads) ?></h2><p>Активных заявок в системе.</p></div>
  <div class="card"><div class="badge">Онлайн</div><h2><?= count($online) ?></h2><p>Пользователей сейчас на сайте.</p></div>
  <div class="card"><div class="badge">Конверсия</div><h2><?= $conversion ?>%</h2><p>Заявки → подтверждённые / завершённые.</p></div>
</div>

<div class="grid grid-3" style="margin-top:18px">
  <div class="panel grid">
    <div class="badge">Revenue dashboard</div>
    <div class="stats-mini">
      <div><strong><?= number_format($potential, 0, ',', ' ') ?> ₽</strong><span>потенциальная выручка</span></div>
      <div><strong><?= number_format($confirmedRevenue, 0, ',', ' ') ?> ₽</strong><span>подтверждено / завершено</span></div>
      <div><strong><?= count($confirmed) ?></strong><span>успешных заявок</span></div>
    </div>
    <div class="module-actions"><a class="button" href="/admin/revenue.php">Открыть финансы</a><a class="button button--ghost" href="/admin/leads.php">Открыть CRM</a></div>
  </div>
  <div class="panel grid">
    <div class="badge">Быстрые действия</div>
    <div class="module-actions">
      <a class="button" href="/admin/header.php">Настроить шапку</a>
      <a class="button button--ghost" href="/admin/booking-form.php">Форма бронирования</a>
      <a class="button button--ghost" href="/admin/animals.php">Про животных</a>
      <a class="button button--ghost" href="/admin/houses.php">Домики</a>
      <a class="button button--ghost" href="/admin/activity.php">Онлайн-активность</a>
    </div>
    <p class="admin-helper-text">В CMS вынесены самые частые сценарии: тексты, карточки, бронирование, животные, CRM и медиа.</p>
  </div>
  <div class="panel grid">
    <div class="badge">SEO</div>
    <p>В настройках теперь управляются OpenGraph, базовый URL сайта, дополнительные SEO-поля и индексация. После сохранения автоматически обновляются <code>sitemap.xml</code> и <code>robots.txt</code>.</p>
    <div class="module-actions"><a class="button button--ghost" href="/admin/settings.php">Открыть SEO-настройки</a></div>
  </div>
</div>

<div class="grid grid-2" style="margin-top:18px">
  <section class="panel grid">
    <div class="admin-page-head admin-page-head--compact">
      <div>
        <div class="badge">Состояние CMS</div>
        <h2 style="margin:10px 0 6px">Технический обзор</h2>
        <p class="muted" style="margin:0">Быстрый контроль данных, бэкапов и папок хранения.</p>
      </div>
    </div>
    <div class="stats-mini">
      <div><strong><?= (int)$health['page_count'] ?></strong><span>страниц JSON</span></div>
      <div><strong><?= (int)$health['module_count'] ?></strong><span>модулей</span></div>
      <div><strong><?= (int)$health['backup_count'] ?></strong><span>резервных копий</span></div>
      <div><strong><?= e(format_bytes((int)$health['upload_bytes'])) ?></strong><span>медиатека</span></div>
    </div>
    <div class="admin-health-grid">
      <?php foreach ($health['checks'] as $check): ?>
        <div class="admin-health-item <?= $check['status'] === 'ok' ? 'is-ok' : 'is-warn' ?>">
          <strong><?= e($check['label']) ?></strong>
          <span><?= $check['exists'] ? 'есть' : 'нет' ?> · <?= $check['writable'] ? 'доступно для записи' : 'нет прав на запись' ?></span>
          <code><?= e(str_replace(ROOT_DIR . '/', '', $check['path'])) ?></code>
        </div>
      <?php endforeach; ?>
    </div>
  </section>

  <section class="panel grid">
    <div class="admin-page-head admin-page-head--compact">
      <div>
        <div class="badge">Что улучшено</div>
        <h2 style="margin:10px 0 6px">Последние доработки CMS</h2>
      </div>
    </div>
    <div class="admin-checklist">
      <div>Добавлен отдельный раздел <strong>«Про животных»</strong> с редактированием кнопки и модального окна.</div>
      <div>Исправлено сохранение дополнительных SEO-полей в настройках.</div>
      <div>Медиатека теперь видит вложенные папки <code>/uploads/*</code>, а не только корень.</div>
      <div>Загрузка favicon теперь поддерживает <code>.ico</code>, как и заявлено в форме.</div>
      <div>Боковое меню перегруппировано по логике: контент, продажи, внешний вид, система.</div>
    </div>
    <div class="module-actions">
      <a class="button button--ghost" href="/admin/backups.php">Посмотреть бэкапы</a>
      <a class="button button--ghost" href="/admin/media.php">Открыть медиатеку</a>
    </div>
  </section>
</div>
<?php
admin_layout('Дашборд', ob_get_clean(), 'dashboard');
