<?php
require 'inc/config.php';

// Проверка авторизации
if (!checkAuth()) {
    header('Location: login.php');
    exit;
}

$base_url = 'https://mozmetro.ru';

function translit($string)
{
    $map = [
        'а' => 'a',
        'б' => 'b',
        'в' => 'v',
        'г' => 'g',
        'д' => 'd',
        'е' => 'e',
        'ё' => 'e',
        'ж' => 'zh',
        'з' => 'z',
        'и' => 'i',
        'й' => 'y',
        'к' => 'k',
        'л' => 'l',
        'м' => 'm',
        'н' => 'n',
        'о' => 'o',
        'п' => 'p',
        'р' => 'r',
        'с' => 's',
        'т' => 't',
        'у' => 'u',
        'ф' => 'f',
        'х' => 'h',
        'ц' => 'ts',
        'ч' => 'ch',
        'ш' => 'sh',
        'щ' => 'sch',
        'ь' => '',
        'ы' => 'y',
        'ъ' => '',
        'э' => 'e',
        'ю' => 'yu',
        'я' => 'ya',
        'А' => 'A',
        'Б' => 'B',
        'В' => 'V',
        'Г' => 'G',
        'Д' => 'D',
        'Е' => 'E',
        'Ё' => 'E',
        'Ж' => 'Zh',
        'З' => 'Z',
        'И' => 'I',
        'Й' => 'Y',
        'К' => 'K',
        'Л' => 'L',
        'М' => 'M',
        'Н' => 'N',
        'О' => 'O',
        'П' => 'P',
        'Р' => 'R',
        'С' => 'S',
        'Т' => 'T',
        'У' => 'U',
        'Ф' => 'F',
        'Х' => 'H',
        'Ц' => 'Ts',
        'Ч' => 'Ch',
        'Ш' => 'Sh',
        'Щ' => 'Sch',
        'Ь' => '',
        'Ы' => 'Y',
        'Ъ' => '',
        'Э' => 'E',
        'Ю' => 'Yu',
        'Я' => 'Ya',
        ' ' => '_',
        '–' => '-',
        '—' => '-',
        '/' => '_',
        '\\' => '_',
        '?' => '',
        '!' => '',
        '.' => '',
        ',' => ''
    ];

    $string = trim($string);
    $result = strtr($string, $map);
    $result = preg_replace('/_{2,}/', '_', $result);
    $result = trim($result, '_');

    return strtolower($result);
}

$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
if ($id <= 0)
    die('Неверный ID станции');

$stmt = $pdo->prepare('SELECT s.*, l.name AS line_name, l.color AS line_color, l.id AS line_id 
                       FROM stations s 
                       JOIN metro_lines l ON s.line_id = l.id 
                       WHERE s.id = ? LIMIT 1');
$stmt->execute([$id]);
$station = $stmt->fetch();
if (!$station)
    die('Станция не найдена');

// Загрузка категорий из БД
$stmt = $pdo->prepare('SELECT category_key, category_name FROM station_categories WHERE station_id = ?');
$stmt->execute([$station['id']]);
$categories = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);

// --- ДОБАВЛЕНИЕ КАТЕГОРИИ ---
if (isset($_POST['add_category'])) {
    $new_category_name = trim($_POST['new_category_name']);
    $new_category_type = $_POST['new_category_type'];

    if (!empty($new_category_name) && !empty($new_category_type)) {
        // Определяем следующий номер для категории
        $max_num = 0;
        foreach ($categories as $key => $name) {
            if (strpos($key, $new_category_type) === 0) {
                preg_match('/\d+$/', $key, $matches);
                $num = isset($matches[0]) ? (int) $matches[0] : 0;
                $max_num = max($max_num, $num);
            }
        }

        $next_num = $max_num + 1;
        $category_key = $new_category_type . $next_num;

        $stmt = $pdo->prepare('INSERT INTO station_categories (station_id, category_key, category_name) VALUES (?, ?, ?)');
        $stmt->execute([$station['id'], $category_key, $new_category_name]);

        header('Location: ' . $_SERVER['REQUEST_URI']);
        exit;
    }
}

// --- УДАЛЕНИЕ КАТЕГОРИИ ---
if (isset($_GET['delete_category'])) {
    $category_key = $_GET['delete_category'];

    // Удаляем изображение если есть
    $q = $pdo->prepare('SELECT path FROM images WHERE station_id = ? AND category = ? LIMIT 1');
    $q->execute([$station['id'], $category_key]);
    if ($r = $q->fetch()) {
        $old = __DIR__ . '/uploads/' . $r['path'];
        if (file_exists($old))
            @unlink($old);
        $pdo->prepare('DELETE FROM images WHERE station_id = ? AND category = ?')->execute([$station['id'], $category_key]);
    }

    // Удаляем категорию
    $pdo->prepare('DELETE FROM station_categories WHERE station_id = ? AND category_key = ?')->execute([$station['id'], $category_key]);

    header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?') . '?id=' . $station['id']);
    exit;
}

// НОВАЯ СТРУКТУРА ПУТЕЙ: /nav/lineX/station_name/
$lineFolder = 'line' . (int) $station['line_id'];
$stationFolder = translit($station['name']);
$webPath = "nav/{$lineFolder}/{$stationFolder}";
$physicalDir = __DIR__ . "/uploads/{$webPath}";

if (!is_dir($physicalDir))
    mkdir($physicalDir, 0777, true);

// Создаем symbolic link если его нет
//$symlinkPath = __DIR__ . "/nav";
//if (!is_dir($symlinkPath) && !is_link($symlinkPath)) {
//    symlink(__DIR__ . "/uploads/nav", $symlinkPath);
//}

// --- ЗАГРУЗКА ИЗОБРАЖЕНИЯ ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !isset($_POST['add_category'])) {
    foreach ($categories as $cat => $label) {
        if (!empty($_FILES[$cat]['tmp_name']) && $_FILES[$cat]['error'] === UPLOAD_ERR_OK) {
            $file = $_FILES[$cat];
            $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)) ?: 'png';
            $filename = "{$cat}.{$ext}";
            $fullPath = $physicalDir . DIRECTORY_SEPARATOR . $filename;

            if (move_uploaded_file($file['tmp_name'], $fullPath)) {
                $relativePath = "{$webPath}/{$filename}";
                $q = $pdo->prepare('SELECT id, path FROM images WHERE station_id = ? AND category = ? LIMIT 1');
                $q->execute([$station['id'], $cat]);
                $exists = $q->fetch();

                if ($exists) {
                    $old = __DIR__ . '/uploads/' . $exists['path'];
                    if (file_exists($old) && $exists['path'] !== $relativePath)
                        @unlink($old);
                    $pdo->prepare('UPDATE images SET path = ? WHERE id = ?')->execute([$relativePath, $exists['id']]);
                } else {
                    $pdo->prepare('INSERT INTO images (station_id, category, path) VALUES (?, ?, ?)')->execute([$station['id'], $cat, $relativePath]);
                }
            }
        }
    }

    header('Location: ' . $_SERVER['REQUEST_URI']);
    exit;
}

// --- УДАЛЕНИЕ ИЗОБРАЖЕНИЯ ---
if (isset($_GET['del'])) {
    $cat = $_GET['del'];
    if (isset($categories[$cat])) {
        $q = $pdo->prepare('SELECT path FROM images WHERE station_id = ? AND category = ? LIMIT 1');
        $q->execute([$station['id'], $cat]);
        if ($r = $q->fetch()) {
            $old = __DIR__ . '/uploads/' . $r['path'];
            if (file_exists($old))
                @unlink($old);
            $pdo->prepare('DELETE FROM images WHERE station_id = ? AND category = ?')->execute([$station['id'], $cat]);
        }
        header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?') . '?id=' . $station['id']);
        exit;
    }
}

// Получение картинок
$q = $pdo->prepare('SELECT category, path FROM images WHERE station_id = ?');
$q->execute([$station['id']]);
$imgs = $q->fetchAll(PDO::FETCH_KEY_PAIR);

// Сортируем категории по типу и номеру
$sorted_categories = [];
$category_types = ['scheme', 'nav', 'entrance'];

foreach ($category_types as $type) {
    $type_categories = [];
    foreach ($categories as $key => $name) {
        if (strpos($key, $type) === 0) {
            preg_match('/\d+$/', $key, $matches);
            $num = isset($matches[0]) ? (int) $matches[0] : 0;
            $type_categories[$num] = ['key' => $key, 'name' => $name];
        }
    }
    ksort($type_categories);
    foreach ($type_categories as $item) {
        $sorted_categories[$item['key']] = $item['name'];
    }
}
?>
<!doctype html>
<html lang="ru">

<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/station.css">
    <title><?= htmlspecialchars($station['line_name']) ?> — <?= htmlspecialchars($station['name']) ?></title>
    <script>
function copyLink(url) {
    // Проверяем поддержку Clipboard API
    if (navigator.clipboard && window.isSecureContext) {
        // Современный способ
        navigator.clipboard.writeText(url)
            .then(() => alert('Ссылка скопирована: ' + url))
            .catch(err => {
                console.error('Ошибка копирования: ', err);
                fallbackCopyTextToClipboard(url);
            });
    } else {
        // Старый способ для браузеров без поддержки
        fallbackCopyTextToClipboard(url);
    }
}

// Резервный метод копирования
function fallbackCopyTextToClipboard(text) {
    const textArea = document.createElement("textarea");
    textArea.value = text;
    
    // Сделаем элемент невидимым
    textArea.style.position = "fixed";
    textArea.style.left = "-999999px";
    textArea.style.top = "-999999px";
    document.body.appendChild(textArea);
    textArea.focus();
    textArea.select();
    
    try {
        document.execCommand('copy');
        alert('Ссылка скопирована: ' + text);
    } catch (err) {
        console.error('Не удалось скопировать текст: ', err);
        alert('Не удалось скопировать ссылку. Скопируйте вручную: ' + text);
    }
    
    document.body.removeChild(textArea);
}
    </script>
</head>

<body>
    <?php if (checkAuth()): ?>
        <div class="user-panel">
            <div class="container">
                <div class="user-info">
                    Вы вошли как: <strong><?= htmlspecialchars(getUsername()) ?></strong>
                    <a href="logout.php" class="btn btn-secondary small">Выйти</a>
                </div>
            </div>
        </div>
    <?php endif; ?>
    <div class="container">
        <div class="back-section">
            <a href="index.php" class="btn btn-secondary">← Назад к списку</a>
        </div>

        <!-- Заголовок с цветом линии -->
        <div class="page-header" style="border-left: 6px solid <?= htmlspecialchars($station['line_color']) ?>">
            <h1>
                <span class="line-color-badge"
                    style="background: <?= htmlspecialchars($station['line_color']) ?>"></span>
                <?= htmlspecialchars($station['line_name']) ?> — <?= htmlspecialchars($station['name']) ?>
            </h1>
        </div>

        <!-- Форма добавления категории -->
        <div class="form-section">
            <h2>Добавить категорию изображений</h2>
            <form method="post" class="add-form">
                <div class="form-group">
                    <select name="new_category_type" class="select-input" required>
                        <option value="">Выберите тип</option>
                        <option value="scheme">Путевая схема</option>
                        <option value="nav">Навигация</option>
                        <option value="entrance">Выход</option>
                    </select>
                </div>
                <div class="form-group">
                    <input type="text" name="new_category_name" placeholder="Название категории" required
                        class="text-input">
                </div>
                <button type="submit" name="add_category" class="btn btn-primary">+ Добавить категорию</button>
            </form>
            <div class="form-help">
                Будет создана категория с автоматическим номером (scheme1, nav1, entrance1 и т.д.)
            </div>
        </div>

        <?php if (empty($sorted_categories)): ?>
            <div class="empty-state">
                <p>Нет добавленных категорий. Добавьте первую категорию используя форму выше.</p>
            </div>
        <?php else: ?>
            <div class="categories-container">
                <?php foreach ($sorted_categories as $cat => $label):
                    $path = $imgs[$cat] ?? null;
                    // ПРЯМОЙ URL к изображению
                    $url_direct = $path ? "{$base_url}/{$path}" : null;
                    ?>
                    <div class="category-full">
                        <div class="category-header">
                            <div class="category-info">
                                <h3 class="category-code"><?= htmlspecialchars($cat) ?></h3>
                                <div class="category-desc"><?= htmlspecialchars($label) ?></div>
                            </div>
                            <button class="btn btn-danger small delete-category-btn"
                                data-category="<?= htmlspecialchars($cat) ?>"
                                data-category-name="<?= htmlspecialchars($label) ?>">
                                Удалить категорию
                            </button>
                        </div>

                        <div class="category-content">
                            <div class="image-section">
                                <?php if ($path): ?>
                                    <div class="image-preview">
                                        <!-- Прямой доступ к изображению -->
                                        <img src="<?= htmlspecialchars($url_direct) ?>" alt="<?= htmlspecialchars($cat) ?>"
                                            loading="lazy">
                                    </div>
                                <?php else: ?>
                                    <div class="no-image">
                                        Нет изображения
                                    </div>
                                <?php endif; ?>
                            </div>

                            <div class="actions-section">
                                <?php if (!$path): ?>
                                    <form method="post" enctype="multipart/form-data" class="upload-form">
                                        <input type="file" name="<?= htmlspecialchars($cat) ?>" accept="image/*" required
                                            class="file-input">
                                        <button type="submit" class="btn btn-success">Загрузить изображение</button>
                                    </form>
                                <?php else: ?>
                                    <form method="post" enctype="multipart/form-data" class="upload-form">
                                        <input type="file" name="<?= htmlspecialchars($cat) ?>" accept="image/*" required
                                            class="file-input">
                                        <button type="submit" class="btn btn-warning">Заменить изображение</button>
                                    </form>

                                    <div class="action-buttons">
                                        <!-- Копируем прямой URL -->
                                        <button type="button" class="btn btn-primary"
                                            onclick="copyLink('<?= htmlspecialchars($url_direct) ?>')">
                                            Скопировать ссылку
                                        </button>
                                        <a href="?id=<?= $station['id'] ?>&del=<?= urlencode($cat) ?>" class="btn btn-danger"
                                            onclick="return confirm('Удалить изображение?')">
                                            Удалить изображение
                                        </a>
                                    </div>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>
        <?php endif; ?>
    </div>

    <script>
        // Обработка удаления категорий
        document.querySelectorAll('.delete-category-btn').forEach(btn => {
            btn.addEventListener('click', function () {
                const categoryName = this.getAttribute('data-category-name');
                const categoryKey = this.getAttribute('data-category');

                if (confirm(`Удалить категорию "${categoryName}"? Все изображения в этой категории будут удалены.`)) {
                    window.location.href = `?id=<?= $station['id'] ?>&delete_category=${encodeURIComponent(categoryKey)}`;
                }
            });
        });
    </script>
</body>

</html>