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

$moduleId = 'complex-map-home';
$module = cms_module($moduleId);
if (!$module) {
    $module = [
        'id' => $moduleId,
        'type' => 'complex_map',
        'name' => 'Карта комплекса и адрес',
        'anchor' => 'location',
        'eyebrow' => 'Территория комплекса',
        'title' => '',
        'text' => 'Посмотрите карту территории комплекса, чтобы заранее сориентироваться по расположению домиков, зон отдыха и инфраструктуры.',
        'map_image' => '/uploads/maps/feyaframe-map.png',
        'address' => 'Краснодар',
        'address_label' => 'Краснодар',
        'route_note' => '',
        'map_lat' => '',
        'map_lon' => '',
        'map_zoom' => 16,
    ];
}

function ensure_complex_map_module_on_home(string $moduleId): void
{
    $page = cms_page('home');
    $modules = $page['modules'] ?? [];
    if (!in_array($moduleId, $modules, true)) {
        $pos = array_search('faq-home', $modules, true);
        if ($pos === false) {
            $pos = array_search('reviews-home', $modules, true);
        }
        if ($pos === false) {
            $modules[] = $moduleId;
        } else {
            array_splice($modules, $pos + 1, 0, [$moduleId]);
        }
        $page['modules'] = array_values($modules);
        cms_save_page('home', $page);
    }
}

$notice = '';
if (request_method() === 'POST') {
    if (!verify_csrf($_POST['csrf_token'] ?? null)) {
        $notice = '<div class="notice notice--error">Ошибка безопасности. Обновите страницу и попробуйте снова.</div>';
    } else {
        $module['id'] = $moduleId;
        $module['type'] = 'complex_map';
        $module['name'] = post_text('name', 'Карта комплекса и адрес');
        $module['anchor'] = post_text('anchor', 'location');
        $module['eyebrow'] = post_text('eyebrow', 'Территория комплекса');
        $module['title'] = post_text('title', '');
        $module['text'] = post_text('text');
        $module['map_image'] = post_text('map_image');
        $uploaded = admin_upload_image_file($_FILES['map_image_file'] ?? [], 'maps');
        if ($uploaded) {
            $module['map_image'] = $uploaded;
        }
        $module['address'] = post_text('address');
        $module['address_label'] = post_text('address_label', $module['address'] ?? '');
        $module['route_note'] = post_text('route_note');
        $module['map_lat'] = str_replace(',', '.', post_text('map_lat'));
        $module['map_lon'] = str_replace(',', '.', post_text('map_lon'));
        $module['map_zoom'] = max(3, min(20, (int)post_text('map_zoom', '16')));
        cms_save_module($moduleId, $module);
        ensure_complex_map_module_on_home($moduleId);

        $settings = cms_settings();
        $settings['contacts']['address'] = $module['address_label'] ?: $module['address'];
        cms_save_settings($settings);

        $notice = '<div class="notice">Карта комплекса и адрес сохранены.</div>';
    }
}

ob_start();
echo $notice;
?>
<div class="grid grid-2">
  <form class="panel grid" method="post" enctype="multipart/form-data">
    <input type="hidden" name="csrf_token" value="<?= e(csrf_token()) ?>">
    <div class="admin-page-head admin-page-head--compact">
      <div>
        <div class="badge">Location studio</div>
        <h2 style="margin:10px 0 6px">Карта комплекса и адрес</h2>
        <p class="muted">Здесь можно заменить изображение карты комплекса, адрес и координаты для кнопки маршрута. На сайте карта выводится отдельным блоком, а компактный адрес — в блоке контактов.</p>
      </div>
    </div>

    <div class="grid grid-2">
      <label><span>Внутреннее имя</span><input name="name" value="<?= e($module['name'] ?? '') ?>"></label>
      <label><span>Якорь блока</span><input name="anchor" value="<?= e($module['anchor'] ?? 'location') ?>"></label>
    </div>
    <div class="grid grid-2">
      <label><span>Надзаголовок</span><input name="eyebrow" value="<?= e($module['eyebrow'] ?? '') ?>"></label>
      <label><span>Заголовок</span><input name="title" value="<?= e($module['title'] ?? '') ?>"></label>
    </div>
    <label><span>Текст над картой</span><textarea name="text" rows="4"><?= e($module['text'] ?? '') ?></textarea></label>

    <section class="panel grid" style="margin:0;background:#fffaf1">
      <div class="badge">Карта комплекса</div>
      <label><span>Загрузить новую карту комплекса</span><input type="file" name="map_image_file" accept=".png,.jpg,.jpeg,.webp,.gif,.svg"></label>
      <label><span>Или указать путь / URL картинки</span><input name="map_image" value="<?= e($module['map_image'] ?? '') ?>" placeholder="/uploads/maps/feyaframe-map.png"></label>
      <p class="muted" style="margin:0">На сайте картинка открывается по клику в увеличенном просмотре.</p>
    </section>

    <section class="panel grid" style="margin:0;background:#fffaf1">
      <div class="badge">Адрес и маршрут</div>
      <label><span>Адрес для маршрута</span><input name="address" value="<?= e($module['address'] ?? '') ?>" placeholder="Краснодар"></label>
      <label><span>Текстовый адрес под картой</span><input name="address_label" value="<?= e($module['address_label'] ?? '') ?>"></label>
      <label><span>Подсказка / описание маршрута</span><textarea name="route_note" rows="3"><?= e($module['route_note'] ?? '') ?></textarea></label>
      <div class="grid grid-3">
        <label><span>Широта</span><input name="map_lat" value="<?= e($module['map_lat'] ?? '') ?>" placeholder="например 59.8996"></label>
        <label><span>Долгота</span><input name="map_lon" value="<?= e($module['map_lon'] ?? '') ?>" placeholder="например 29.0857"></label>
        <label><span>Масштаб</span><input type="number" min="3" max="20" name="map_zoom" value="<?= e((string)($module['map_zoom'] ?? 16)) ?>"></label>
      </div>
      <p class="muted" style="margin:0">Если координаты пустые, кнопка маршрута будет открывать поиск по адресу. Если заполнить широту и долготу, маршрут будет открываться точно по этим координатам.</p>
    </section>

    <div class="module-actions">
      <button class="button" type="submit">Сохранить карту и адрес</button>
      <a class="button button--ghost" target="_blank" rel="noopener" href="/#<?= e($module['anchor'] ?? 'location') ?>">Открыть блок на сайте</a>
    </div>
  </form>

  <aside class="panel grid">
    <div class="badge">Предпросмотр карты комплекса</div>
    <?php if (!empty($module['map_image'])): ?>
      <img src="<?= e($module['map_image']) ?>" alt="Карта комплекса" style="width:100%;border-radius:24px;border:1px solid #e4d8c3;box-shadow:0 16px 40px rgba(30,22,12,.08)">
    <?php else: ?>
      <div class="notice">Карта комплекса пока не выбрана.</div>
    <?php endif; ?>
    <div class="card">
      <div class="muted" style="margin-bottom:6px">Текущий адрес</div>
      <strong><?= e($module['address_label'] ?? $module['address'] ?? '') ?></strong>
    </div>
  </aside>
</div>
<?php
admin_layout('Карта и адрес', ob_get_clean(), 'location');
