<?php
session_start();
require_once 'inc/functions.php';
check404();
securityCheck();
if (!isLoggedIn()) {
    header('Location: index.php');
    exit;
}

$user = getUserById($_SESSION['user_id']);
$isMuted = isMuted($user['id']);

// Определяем текущий канал (общий или торговый)
$channel = isset($_GET['channel']) && $_GET['channel'] == 'trade' ? 'trade' : 'general';
$page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;
$perPage = 10;

// Обработка отправки обычного сообщения
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['message']) && !isset($_POST['sell_item'])) {
    if ($isMuted) {
        $_SESSION['chat_error'] = 'Вы не можете отправлять сообщения (молчанка).';
        header("Location: chat.php?channel=$channel");
        exit;
    }
    $message = trim($_POST['message']);
    $replyTo = isset($_POST['reply_to']) && !empty($_POST['reply_to']) ? (int)$_POST['reply_to'] : null;
    if (!empty($message)) {
        addChatMessageExtended($user['id'], $message, $channel, $replyTo);
    }
    header("Location: chat.php?channel=$channel");
    exit;
}

// Обработка создания торгового предложения (форма продажи)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['sell_item']) && $channel == 'trade') {
    if ($isMuted) {
        $_SESSION['chat_error'] = 'Вы не можете создавать объявления (молчанка).';
        header("Location: chat.php?channel=trade");
        exit;
    }
    $userItemId = (int)$_POST['user_item_id'];
    $price = (int)$_POST['price'];
    $currency = $_POST['currency'] == 'bucks' ? 'bucks' : 'gold';
    if ($price <= 0) {
        $_SESSION['chat_error'] = 'Цена должна быть положительной.';
    } else {
        $result = createMarketOffer($user['id'], $userItemId, $price, $currency);
        if ($result['success']) {
            $_SESSION['chat_success'] = 'Предмет выставлен на продажу!';
        } else {
            $_SESSION['chat_error'] = $result['message'];
        }
    }
    header("Location: chat.php?channel=trade");
    exit;
}

// Обработка покупки предмета
if (isset($_GET['buy']) && $channel == 'trade') {
    $offerId = (int)$_GET['buy'];
    $result = buyMarketOffer($offerId, $user['id']);
    if ($result['success']) {
        $_SESSION['chat_success'] = $result['message'];
    } else {
        $_SESSION['chat_error'] = $result['message'];
    }
    header("Location: chat.php?channel=trade");
    exit;
}

// Удаление сообщения (для модераторов/админов)
if (isset($_GET['delete']) && ($user['role'] == 'admin' || $user['role'] == 'moderator')) {
    $msgId = (int)$_GET['delete'];
    $stmt = $pdo->prepare("DELETE FROM chat_messages WHERE id = ?");
    $stmt->execute([$msgId]);
    header("Location: chat.php?channel=$channel");
    exit;
}

// Получаем сообщения для текущего канала
$messages = getChatMessagesPaginated($channel, $page, $perPage);
$totalMessages = getTotalMessagesInChannel($channel);
$totalPages = ceil($totalMessages / $perPage);

// Для торгового канала получаем список предметов пользователя, которые можно выставить
$userItems = [];
if ($channel == 'trade') {
    $userItems = getUserBagItems($user['id'], 0, 1000); // все не надетые предметы
}

require_once 'inc/header.php';
?>

<!-- Верхняя панель каналов -->
<div class="cntr nshd w90 pt5 small">
    <span class="tdu <?= $channel == 'general' ? 'info' : '' ?>">
        <a href="?channel=general">Общий</a>
    </span>
    | <span class="tdu <?= $channel == 'trade' ? 'info' : '' ?>">
        <a href="?channel=trade">Торговый</a>
    </span>
</div>
<div class="hr"></div>

<!-- Кнопка обновления и список смайлов -->
<span class="w90 bl pt5">
    <span class="nwr">
        <img src="/images/icons/refresh.png" alt="о" height="12" width="12"/>
        <a href="?channel=<?= $channel ?>">Обновить</a>
    </span>
    | <span class="nwr">
        <a href="#" onclick="alert(':) :( :D ;) :P :O B) :* <3')">список смайлов</a>
    </span>
</span>

<!-- Форма отправки обычного сообщения (всегда видна) -->
<div>
    <form method="post" action="">
        <input type="hidden" name="reply_to" id="reply_to" value="">
        <div class="cntr">
            <input class="w90 mt5" type="text" name="message" placeholder="Введите сообщение..." autocomplete="off" required>
        </div>
        <div class="w90">
            <input type="submit" class="submit nshd small" value="в чат">
        </div>
    </form>
</div>

<!-- Если торговый канал, показываем дополнительную форму для продажи предметов -->
<?php if ($channel == 'trade' && !empty($userItems)): ?>
    <div class="hr"></div>
    <div class="cntr">
        <b>Продать предмет</b>
    </div>
    <form method="post" action="" class="w90 cntr">
        <input type="hidden" name="sell_item" value="1">
        <select name="user_item_id" required>
            <option value="">-- Выберите предмет --</option>
            <?php foreach ($userItems as $item): ?>
                <option value="<?= $item['id'] ?>">
                    <?= htmlspecialchars($item['item_name']) ?> 
                    (кач. <?= $item['quality_name'] ?>, бонус +<?= $item['bonus_percent'] ?>%)
                </option>
            <?php endforeach; ?>
        </select>
        <input type="number" name="price" placeholder="Цена" min="1" required>
        <select name="currency">
            <option value="gold">Золото</option>
            <option value="bucks">Баксы</option>
        </select>
        <button type="submit" class="submit nshd small">Выставить на продажу</button>
    </form>
    <div class="hr"></div>
<?php endif; ?>

<!-- Вывод ошибок и успехов -->
<?php if (isset($_SESSION['chat_error'])): ?>
    <div style="color:red; text-align:center;"><?= $_SESSION['chat_error']; unset($_SESSION['chat_error']); ?></div>
<?php endif; ?>
<?php if (isset($_SESSION['chat_success'])): ?>
    <div style="color:green; text-align:center;"><?= $_SESSION['chat_success']; unset($_SESSION['chat_success']); ?></div>
<?php endif; ?>

<!-- Лента сообщений -->
<div>
    <div class="w90 mt5">
        <?php if (empty($messages)): ?>
            <p class="minor">Сообщений пока нет.</p>
        <?php else: ?>
            <?php foreach ($messages as $msg): ?>
                <div class="txtal nshd evnt">
                    <div>
                        <!-- Иконка пользователя -->
                        <img width="12" height="12" src="<?= getUserForumIcon($msg) ?>" alt="*" border="0"/>
                        <!-- Ник с ссылкой на профиль -->
                        <a href="profile.php?id=<?= $msg['user_id'] ?>">
                            <span style="color: <?= getRoleColor($msg['role']) ?>;"><?= htmlspecialchars($msg['username']) ?></span>
                        </a>
                        <!-- Если это ответ, показываем кому -->
                        <?php if ($msg['reply_to'] && $msg['reply_username']): ?>
                            <span class="minor"> → <a href="#msg-<?= $msg['reply_to'] ?>"><?= htmlspecialchars($msg['reply_username']) ?></a></span>
                        <?php endif; ?>
                        :
                        <!-- Текст сообщения (уже со смайликами) -->
                        <span class="white"><?= $msg['message'] ?></span>
                        
                        <!-- Если это торговое сообщение с предметом, показываем кнопку покупки -->
                        <?php if ($channel == 'trade' && $msg['item_id']): 
                            $offer = getChatMessageItem($msg['item_id']);
                            if ($offer && $offer['status'] == 'active' && $offer['user_id'] != $user['id']): ?>
                                <span class="nwr">
                                    <a href="?channel=trade&buy=<?= $offer['id'] ?>" class="btn small" onclick="return confirm('Купить <?= htmlspecialchars($offer['item_name']) ?> за <?= $offer['price'] ?> <?= $offer['currency'] ?>?')">Купить</a>
                                </span>
                            <?php elseif ($offer && $offer['user_id'] == $user['id']): ?>
                                <span class="minor">(ваше объявление)</span>
                            <?php endif; ?>
                        <?php endif; ?>

                        <br />
                        <!-- Дата и ссылка "Ответить" -->
                        <span class="minor small"><?= timeAgo($msg['created_at']) ?></span>
                        <a class="small minor" href="#" onclick="document.getElementById('reply_to').value='<?= $msg['user_id'] ?>'; document.getElementsByName('message')[0].focus(); return false;">[Ответить]</a>
                        
                        <!-- Кнопка удаления для модераторов/админов и автора -->
                        <?php if (canEditMessage($user['id'], $msg['user_id'])): ?>
                            <a class="small minor" href="?channel=<?= $channel ?>&delete=<?= $msg['id'] ?>" 
                               onclick="return confirm('Удалить сообщение?')" style="color:red;">[x]</a>
                        <?php endif; ?>
                    </div>
                </div>
            <?php endforeach; ?>
        <?php endif; ?>
    </div>
</div>

<!-- Пагинация -->
<?php if ($totalPages > 1): ?>
    <div class="cntr pt5">
        <?php for ($i = 1; $i <= $totalPages; $i++): ?>
            <?php if ($i == $page): ?>
                <span class="info"><?= $i ?></span>
            <?php else: ?>
                <a href="?channel=<?= $channel ?>&page=<?= $i ?>"><?= $i ?></a>
            <?php endif; ?>
            <?php if ($i < $totalPages): ?> | <?php endif; ?>
        <?php endfor; ?>
    </div>
<?php endif; ?>

<div class="hr"></div>

<!-- Счетчик игроков в чате -->
<?php
$onlineCount = getTotalOnlineUsers();
?>
<div class="cntr pt5">
    В чате <span class="info"><?= $onlineCount ?></span> <a href="online.php">игроков</a>
</div>

<?php require_once 'inc/foot.php'; ?>