<?php
session_start();
require_once 'inc/functions.php';
check404();
securityCheck();

$userId = $_SESSION['user_id'] ?? 0;
if (!$userId) {
    header('Location: login.php');
    exit;
}

// --- ОБРАБОТКА ДЕЙСТВИЙ (ДО ВЫВОДА) ---
$action = $_GET['action'] ?? 'list';
$error = null;

// 1. Создание нового тикета
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['create'])) {
    $subject = $_POST['subject'] ?? '';
    $message = trim($_POST['message'] ?? '');
    $result = createTicket($userId, $subject, $message);
    if ($result['success']) {
        header('Location: support.php?action=view&id=' . $result['ticket_id']);
        exit;
    } else {
        $error = $result['message'];
    }
}

// 2. Ответ в тикете
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reply'])) {
    $ticketId = (int)($_POST['ticket_id'] ?? 0);
    $message = trim($_POST['message'] ?? '');
    $ticketData = getTicketById($ticketId, $userId);
    if ($ticketData && isset($ticketData['ticket']['status']) && $ticketData['ticket']['status'] === 'open') {
        $result = addTicketMessage($ticketId, $userId, $message, false);
        if ($result['success']) {
            header('Location: support.php?action=view&id=' . $ticketId);
            exit;
        } else {
            $error = $result['message'];
        }
    } else {
        $error = 'Тикет не найден или закрыт.';
    }
}

// 3. Закрытие тикета
if (isset($_GET['close']) && isset($_GET['id'])) {
    $ticketId = (int)$_GET['id'];
    $result = closeTicket($ticketId, $userId);
    if ($result['success']) {
        header('Location: support.php?action=view&id=' . $ticketId);
        exit;
    } else {
        $error = $result['message'];
    }
}

// --- ПОСЛЕ ОБРАБОТКИ ПОДКЛЮЧАЕМ ШАПКУ И ВЫВОДИМ СТРАНИЦУ ---
require_once 'inc/header.php';
?>

<span class="ttl"><b>Служба поддержки</b></span>
<div class="clb"></div>
<div class="hr"></div>

<?php if ($action === 'list'): ?>
    <div style="text-align:center; margin-bottom:10px;">
        <a href="support.php?action=new" class="btn">✉️ Создать обращение</a>
    </div>

    <?php
    $tickets = getTicketsByUser($userId);
    if (empty($tickets)): ?>
        <div class="cntr minor">У вас пока нет обращений.</div>
    <?php else: ?>
        <ul class="rating-list" style="list-style:none; padding:0;">
            <?php foreach ($tickets as $t): 
                $status = isset($t['status']) ? $t['status'] : 'unknown';
                $statusText = $status === 'open' ? 'Открыт' : ($status === 'closed' ? 'Закрыт' : 'Неизвестно');
                $statusColor = $status === 'open' ? 'green' : 'gray';
                
                $hasNew = false;
                if ($status === 'open') {
                    $lastRead = $t['user_last_read_at'] ?? null;
                    global $pdo;
                    $stmt = $pdo->prepare("SELECT COUNT(*) FROM support_messages WHERE ticket_id = ? AND is_staff = 1 AND created_at > IFNULL(?, '1970-01-01')");
                    $stmt->execute([$t['id'], $lastRead]);
                    $hasNew = $stmt->fetchColumn() > 0;
                }
            ?>
                <li style="margin-bottom:10px; padding:8px; background:<?= $hasNew ? '#111121' : '#111121' ?>;">
                    <div style="display:flex; justify-content:space-between;">
                        <div>
                            <strong><a href="support.php?action=view&id=<?= $t['id'] ?>">#<?= $t['id'] ?>: <?= htmlspecialchars($t['subject'] ?? 'Без темы') ?></a></strong>
                            <?php if ($hasNew): ?>
                                <span style="color:red; font-weight:bold;">+1</span>
                            <?php endif; ?>
                        </div>
                        <div>
                            <span style="color:<?= $statusColor ?>;"><?= $statusText ?></span>
                            <span class="small"><?= isset($t['updated_at']) ? date('d.m.Y H:i', strtotime($t['updated_at'])) : '' ?></span>
                        </div>
                    </div>
                </li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>

<?php elseif ($action === 'new'): ?>
    <h3>Новое обращение</h3>
    <?php if (isset($error)): ?><div class="error"><?= htmlspecialchars($error) ?></div><?php endif; ?>
    <form method="post">
        <label>Тема:</label><br>
        <select name="subject">
            <option value="Ошибки">Ошибки</option>
            <option value="Предложения">Предложения</option>
            <option value="Платежи">Платежи</option>
            <option value="Общие вопросы">Общие вопросы</option>
        </select><br><br>
        <label>Сообщение:</label><br>
        <textarea name="message" rows="5" style="width:100%;" required></textarea><br>
        <button type="submit" name="create" class="btn">Отправить</button>
        <a href="support.php" class="btn">Отмена</a>
    </form>

<?php elseif ($action === 'view' && isset($_GET['id'])): 
    $ticketId = (int)$_GET['id'];
    $ticketData = getTicketById($ticketId, $userId);
    if (!$ticketData):
        echo '<div class="error">Тикет не найден.</div>';
    else:
        $ticket = $ticketData['ticket'];
        $messages = $ticketData['messages'];

        if (function_exists('markTicketAsReadByUser')) {
            markTicketAsReadByUser($ticketId, $userId);
        }
?>
        <div style="margin-bottom:10px;">
            <a href="support.php" class="btn">← Назад к списку</a>
            <?php if (isset($ticket['status']) && $ticket['status'] === 'open'): ?>
                <a href="support.php?close=1&id=<?= $ticketId ?>" class="btn" onclick="return confirm('Закрыть тикет?')">🔒 Закрыть тикет</a>
            <?php else: ?>
                <span class="btn disabled">Тикет закрыт</span>
            <?php endif; ?>
        </div>

        <div style="background:#111121; padding:10px;">
            <strong>Тема:</strong> <?= htmlspecialchars($ticket['subject'] ?? '') ?><br>
            <strong>Статус:</strong> <?= (isset($ticket['status']) && $ticket['status']=='open') ? 'Открыт' : 'Закрыт' ?><br>
            <strong>Создан:</strong> <?= isset($ticket['created_at']) ? date('d.m.Y H:i', strtotime($ticket['created_at'])) : '' ?>
        </div>

        <div style="margin-top:20px;">
            <?php foreach ($messages as $msg): 
                $isStaff = $msg['is_staff'] ?? 0;
                $bg = $isStaff ? '#111121' : '#111121';
            ?>
                <div style="background:<?= $bg ?>; padding:10px; margin-bottom:5px; border:1px solid #111121;">
                    <div style="display:flex; justify-content:space-between;">
                        <span><strong><?= $isStaff ? 'Служба поддержки' : htmlspecialchars($msg['username'] ?? 'Пользователь') ?></strong></span>
                        <span class="small"><?= isset($msg['created_at']) ? date('d.m.Y H:i', strtotime($msg['created_at'])) : '' ?></span>
                    </div>
                    <div style="margin-top:5px; white-space:pre-wrap;"><?= htmlspecialchars($msg['message'] ?? '') ?></div>
                </div>
            <?php endforeach; ?>
        </div>

        <?php if (isset($ticket['status']) && $ticket['status'] === 'open'): ?>
            <form method="post" style="margin-top:20px;">
                <input type="hidden" name="ticket_id" value="<?= $ticketId ?>">
                <label>Ваш ответ:</label><br>
                <textarea name="message" rows="3" style="width:100%;" required></textarea><br>
                <button type="submit" name="reply" class="btn">Отправить</button>
            </form>
        <?php endif; ?>

    <?php endif; ?>

<?php endif; ?>

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