<?php
declare(strict_types=1);

require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/conexao.php';
require_once __DIR__ . '/telecom_helpers.php';

telecomExigirAcesso();

if (!$mysqli instanceof mysqli) {
    http_response_code(500);
    exit('Banco indisponível.');
}

$mysqli->set_charset('utf8mb4');

try {
    telecomGarantirEstrutura($mysqli);
} catch (Throwable $excecao) {
    http_response_code(500);
    exit(telecomE($excecao->getMessage()));
}

$tipo = strtoupper(trim((string) ($_GET['tipo'] ?? '')));
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) ?: 0;

if (!in_array($tipo, ['CHIP', 'SMARTPHONE'], true) || $id <= 0) {
    http_response_code(422);
    exit('<div class="flash error">Item inválido.</div>');
}

$stmt = $mysqli->prepare("
    SELECT
        acao,
        status_anterior,
        status_novo,
        responsavel_anterior,
        responsavel_novo,
        setor_anterior,
        setor_novo,
        detalhes,
        usuario,
        criado_em
    FROM telecom_movimentacoes
    WHERE tipo_item = ?
      AND item_id = ?
    ORDER BY criado_em DESC, id DESC
    LIMIT 100
");

if (!$stmt) {
    http_response_code(500);
    exit('<div class="flash error">Não foi possível carregar o histórico.</div>');
}

$stmt->bind_param('si', $tipo, $id);
$stmt->execute();

$resultado = $stmt->get_result();
$linhas = [];

while ($linha = $resultado->fetch_assoc()) {
    $linhas[] = $linha;
}

$stmt->close();

if (!$linhas): ?>
    <div class="empty">
        <i class="bi bi-clock-history"></i>
        <strong>Nenhuma movimentação registrada</strong>
        <span>As próximas alterações aparecerão aqui.</span>
    </div>
<?php else: ?>
    <div class="history-list">
        <?php foreach ($linhas as $linha): ?>
            <article class="history-item">
                <span class="history-icon">
                    <i class="bi bi-arrow-left-right"></i>
                </span>

                <span>
                    <strong>
                        <?= telecomE(
                            ucwords(
                                strtolower(
                                    str_replace(
                                        '_',
                                        ' ',
                                        (string) $linha['acao']
                                    )
                                )
                            )
                        ) ?>
                    </strong>

                    <span>
                        Responsável:
                        <?= telecomE(
                            $linha['responsavel_anterior']
                                ?: 'sem responsável'
                        ) ?>
                        →
                        <?= telecomE(
                            $linha['responsavel_novo']
                                ?: 'sem responsável'
                        ) ?>
                    </span>

                    <span>
                        Setor:
                        <?= telecomE(
                            $linha['setor_anterior']
                                ?: 'sem setor'
                        ) ?>
                        →
                        <?= telecomE(
                            $linha['setor_novo']
                                ?: 'sem setor'
                        ) ?>
                    </span>

                    <?php if (!empty($linha['detalhes'])): ?>
                        <span><?= telecomE($linha['detalhes']) ?></span>
                    <?php endif; ?>

                    <span>
                        Registrado por
                        <strong><?= telecomE($linha['usuario']) ?></strong>
                    </span>
                </span>

                <time class="history-time">
                    <?= telecomE(telecomData($linha['criado_em'])) ?>
                </time>
            </article>
        <?php endforeach; ?>
    </div>
<?php endif;
