<?php
declare(strict_types=1);

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

if (compEhCynthia()) {
    http_response_code(403);
    exit('Acesso negado.');
}

compGarantirEstrutura($mysqli);

$id = filter_input(
    INPUT_GET,
    'termo_id',
    FILTER_VALIDATE_INT
) ?: 0;

$stmt = $mysqli->prepare("
    SELECT
        t.*,
        c.codigo_interno
    FROM ti_computador_termos AS t
    INNER JOIN ti_computadores AS c
        ON c.id = t.computador_id
    WHERE t.id = ?
    LIMIT 1
");

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

$termo = $stmt->get_result()->fetch_assoc();
$stmt->close();

if (!$termo) {
    http_response_code(404);
    exit('Termo não encontrado.');
}

$equipamento = json_decode(
    (string) $termo['equipamento_json'],
    true
);

if (!is_array($equipamento)) {
    $equipamento = [];
}

$csrf = compCsrf();
$flash = compConsumirFlash();
$imprimir = isset($_GET['print']);

function trValor(
    array $dados,
    string $chave,
    string $padrao = 'Não informado'
): string {
    $valor = trim((string) ($dados[$chave] ?? ''));

    return $valor !== '' ? $valor : $padrao;
}

$modeloCompleto = trim(
    implode(
        ' ',
        array_filter([
            trValor($equipamento, 'fabricante', ''),
            trValor($equipamento, 'modelo', '')
        ])
    )
);

if ($modeloCompleto === '') {
    $modeloCompleto = trValor(
        $equipamento,
        'tipo',
        'Computador'
    );
}

$identificacao = trim(
    implode(
        ' • ',
        array_filter([
            trValor($equipamento, 'patrimonio', '') !== ''
                ? 'Patrimônio ' . trValor(
                    $equipamento,
                    'patrimonio',
                    ''
                )
                : '',
            trValor($equipamento, 'numero_serie', '') !== ''
                ? 'Série ' . trValor(
                    $equipamento,
                    'numero_serie',
                    ''
                )
                : '',
            trValor($equipamento, 'nome_maquina', '') !== ''
                ? 'Host ' . trValor(
                    $equipamento,
                    'nome_maquina',
                    ''
                )
                : ''
        ])
    )
);

if ($identificacao === '') {
    $identificacao = (string) $termo['codigo_interno'];
}

$destino = trim(
    implode(
        ' • ',
        array_filter([
            $termo['setor_nome'] ?? '',
            $termo['ambiente_nome'] ?? '',
            $termo['localizacao_texto'] ?? ''
        ])
    )
);

if ($destino === '') {
    $destino = 'Local não informado';
}

$acessorios = trim((string) ($termo['acessorios'] ?? ''));
?>
<!doctype html>
<html lang="pt-BR">
<head>
    <meta charset="utf-8">

    <meta
        name="viewport"
        content="width=device-width,initial-scale=1"
    >

    <title>
        <?= compE($termo['numero_termo']) ?>
        | Termo de Responsabilidade
    </title>

    <link
        href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
        rel="stylesheet"
    >

    <style>
        @page {
            size: A4 portrait;
            margin: 7mm;
        }

        * {
            box-sizing: border-box;
        }

        html,
        body {
            margin: 0;
            padding: 0;
        }

        body {
            padding: 16px;
            color: #172438;
            background: #edf3f8;
            font-family: Arial, Helvetica, sans-serif;
        }

        .toolbar {
            width: min(196mm, 100%);
            display: flex;
            justify-content: flex-end;
            gap: 8px;
            flex-wrap: wrap;
            margin: 0 auto 12px;
        }

        .btn {
            min-height: 40px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 7px;
            padding: 0 13px;
            border: 0;
            border-radius: 11px;
            color: #fff;
            background: #08396f;
            text-decoration: none;
            font-size: 12px;
            font-weight: 800;
            cursor: pointer;
        }

        .btn.green {
            background: #087f5b;
        }

        .btn.gray {
            color: #172438;
            background: #fff;
        }

        .sheet {
            width: min(196mm, 100%);
            margin: auto;
            padding: 8mm;
            border: 1px solid #d5e0e9;
            background: #fff;
            box-shadow: 0 22px 65px rgba(8, 57, 111, .15);
        }

        .head {
            display: grid;
            grid-template-columns: 20mm minmax(0, 1fr) auto;
            align-items: center;
            gap: 5mm;
            padding-bottom: 4mm;
            border-bottom: 1.5px solid #08396f;
        }

        .logo {
            width: 18mm;
            height: 18mm;
            object-fit: contain;
        }

        .brand h1 {
            margin: 0;
            color: #08396f;
            font-size: 15pt;
            line-height: 1;
            text-transform: uppercase;
        }

        .brand p {
            margin: 1.4mm 0 0;
            color: #62738a;
            font-size: 7pt;
        }

        .term-no {
            text-align: right;
        }

        .term-no strong {
            display: block;
            color: #08396f;
            font-size: 8.5pt;
        }

        .term-no span {
            display: block;
            margin-top: 1mm;
            color: #62738a;
            font-size: 6.4pt;
        }

        .title {
            margin: 5mm 0 4mm;
            text-align: center;
        }

        .title h2 {
            margin: 0;
            font-size: 12.5pt;
            line-height: 1.2;
        }

        .title p {
            margin: 1.3mm 0 0;
            color: #62738a;
            font-size: 7pt;
        }

        .section-title {
            margin: 3.8mm 0 2mm;
            color: #08396f;
            font-size: 7pt;
            font-weight: 900;
            letter-spacing: .35pt;
            text-transform: uppercase;
        }

        .grid {
            display: flex;
            flex-wrap: wrap;
            gap: 2.3mm;
        }

        .box {
            width: calc(50% - 1.15mm);
            min-height: 13mm;
            padding: 2.5mm 3mm;
            border: 1px solid #cfdce6;
            border-radius: 2.4mm;
        }

        .box.full {
            width: 100%;
        }

        .box small {
            display: block;
            color: #62738a;
            font-size: 6pt;
            font-weight: 900;
            text-transform: uppercase;
        }

        .box strong {
            display: block;
            margin-top: 1.2mm;
            font-size: 8.2pt;
            line-height: 1.3;
        }

        .summary {
            display: flex;
            flex-wrap: wrap;
            gap: 2.3mm;
        }

        .declaration {
            margin-top: 3.8mm;
            padding: 3.2mm;
            border: 1px solid #cfdce6;
            border-radius: 2.5mm;
            font-size: 7.6pt;
            line-height: 1.48;
            text-align: justify;
        }

        .signatures {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12mm;
            margin-top: 15mm;
        }

        .signature {
            text-align: center;
        }

        .line {
            padding-top: 2mm;
            border-top: 1px solid #172438;
            font-size: 7.7pt;
            font-weight: 900;
        }

        .signature small {
            display: block;
            margin-top: 1.1mm;
            color: #62738a;
            font-size: 6.1pt;
        }

        .footer {
            display: flex;
            justify-content: space-between;
            gap: 8mm;
            margin-top: 7mm;
            padding-top: 2.5mm;
            border-top: 1px solid #dce6ee;
            color: #62738a;
            font-size: 5.8pt;
        }

        .upload {
            width: min(196mm, 100%);
            margin: 12px auto 0;
            padding: 17px;
            border-radius: 18px;
            background: #fff;
            box-shadow: 0 15px 40px rgba(8, 57, 111, .1);
        }

        .upload h3 {
            margin: 0;
            color: #08396f;
        }

        .upload p {
            color: #62738a;
            font-size: 12px;
        }

        .upload input {
            width: 100%;
            padding: 12px;
            border: 1px solid #dce6ee;
            border-radius: 12px;
        }

        .flash {
            width: min(196mm, 100%);
            margin: 0 auto 12px;
            padding: 12px;
            border-radius: 12px;
        }

        .success {
            color: #076448;
            background: #e8f8f1;
        }

        .error {
            color: #922138;
            background: #fff0f3;
        }

        @media(max-width: 760px) {
            body {
                padding: 8px;
            }

            .sheet {
                width: 100%;
                padding: 16px;
            }

            .head {
                grid-template-columns: 50px 1fr;
            }

            .term-no {
                grid-column: 1 / -1;
                text-align: left;
            }

            .grid .box,
            .summary .box {
                width: 100%;
            }

            .signatures {
                grid-template-columns: 1fr;
            }

            .signatures {
                gap: 22mm;
            }
        }

        @media print {
            html,
            body {
                width: 100%;
                background: #fff;
            }

            body {
                padding: 0;
                -webkit-print-color-adjust: exact;
                print-color-adjust: exact;
            }

            .toolbar,
            .upload,
            .flash {
                display: none !important;
            }

            .sheet {
                width: 100%;
                margin: 0;
                padding: 0;
                border: 0;
                box-shadow: none;
                page-break-inside: avoid;
                break-inside: avoid;
            }
        }
    </style>
</head>
<body>

<?php if ($flash): ?>
    <div
        class="flash <?= $flash['tipo'] === 'sucesso'
            ? 'success'
            : 'error' ?>"
    >
        <?= compE($flash['mensagem']) ?>
    </div>
<?php endif; ?>

<div class="toolbar">
    <a href="computadores.php" class="btn gray">
        <i class="bi bi-arrow-left"></i>
        Voltar
    </a>

    <?php if ($termo['arquivo_assinado']): ?>
        <a
            href="visualizar_termo_computador.php?termo_id=<?= $id ?>"
            target="_blank"
            class="btn green"
        >
            <i class="bi bi-file-earmark-check-fill"></i>
            Abrir assinado
        </a>
    <?php endif; ?>

    <button class="btn" onclick="window.print()">
        <i class="bi bi-printer-fill"></i>
        Imprimir termo
    </button>
</div>

<main class="sheet">

    <header class="head">
        <img
            class="logo"
            src="assets/logo_pref.jpg"
            alt="Prefeitura"
        >

        <div class="brand">
            <h1>Prefeitura de Extrema</h1>
            <p>
                Gerência de Tecnologia • Controle de Equipamentos
            </p>
        </div>

        <div class="term-no">
            <strong><?= compE($termo['numero_termo']) ?></strong>
            <span>
                <?= compE(compData($termo['criado_em'])) ?>
            </span>
        </div>
    </header>

    <section class="title">
        <h2>TERMO DE RESPONSABILIDADE DE EQUIPAMENTO</h2>
        <p>
            Entrega, guarda e identificação do equipamento institucional.
        </p>
    </section>

    <div class="section-title">Responsável e destino</div>

    <div class="grid">
        <div class="box">
            <small>Nome de quem recebeu</small>
            <strong>
                <?= compE($termo['responsavel_nome']) ?>
            </strong>
        </div>

        <div class="box">
            <small>Matrícula / função</small>
            <strong>
                <?= compE(
                    trim(
                        implode(
                            ' • ',
                            array_filter([
                                $termo['responsavel_matricula'] ?? '',
                                $termo['responsavel_cargo'] ?? ''
                            ])
                        )
                    ) ?: 'Não informado'
                ) ?>
            </strong>
        </div>

        <div class="box full">
            <small>Local para onde o equipamento foi destinado</small>
            <strong><?= compE($destino) ?></strong>
        </div>
    </div>

    <div class="section-title">Equipamento entregue</div>

    <div class="summary">
        <div class="box">
            <small>Tipo / modelo</small>
            <strong>
                <?= compE(
                    trValor($equipamento, 'tipo') .
                    ' • ' .
                    $modeloCompleto
                ) ?>
            </strong>
        </div>

        <div class="box">
            <small>Identificação</small>
            <strong><?= compE($identificacao) ?></strong>
        </div>

        <div class="box">
            <small>Técnico que realizou a entrega</small>
            <strong><?= compE($termo['tecnico_nome']) ?></strong>
        </div>

        <div class="box">
            <small>Acessórios</small>
            <strong>
                <?= compE(
                    $acessorios !== ''
                        ? $acessorios
                        : 'Nenhum acessório informado'
                ) ?>
            </strong>
        </div>
    </div>

    <div class="declaration">
        Declaro que recebi o equipamento acima identificado para uso
        institucional, comprometendo-me a utilizá-lo corretamente, zelar
        por sua conservação, não transferi-lo sem registro da TI, comunicar
        imediatamente qualquer dano, perda ou alteração e devolvê-lo quando
        solicitado ou quando houver mudança de responsável ou setor.
    </div>

    <div class="signatures">
        <div class="signature">
            <div class="line">
                <?= compE($termo['tecnico_nome']) ?>
            </div>

            <small>
                Assinatura do técnico que realizou a entrega
            </small>
        </div>

        <div class="signature">
            <div class="line">
                <?= compE($termo['responsavel_nome']) ?>
            </div>

            <small>
                Assinatura de quem recebeu o equipamento
            </small>
        </div>
    </div>

    <footer class="footer">
        <span>
            Extrema/MG, ____ de __________________ de ______.
        </span>

        <span>
            Controle:
            <?= compE(substr($termo['token'], 0, 18)) ?>...
        </span>
    </footer>

</main>

<section class="upload">
    <h3>
        <i class="bi bi-cloud-arrow-up-fill"></i>
        Termo assinado
    </h3>

    <?php if ($termo['arquivo_assinado']): ?>
        <p>
            Documento anexado por
            <?= compE($termo['enviado_por']) ?>
            em
            <?= compE(compData($termo['enviado_em'])) ?>.
        </p>

        <a
            class="btn green"
            target="_blank"
            href="visualizar_termo_computador.php?termo_id=<?= $id ?>"
        >
            Visualizar documento
        </a>
    <?php else: ?>
        <p>
            Depois das duas assinaturas, digitalize ou fotografe
            o termo e anexe ao cadastro.
        </p>

        <form
            method="post"
            action="anexar_termo_computador.php"
            enctype="multipart/form-data"
        >
            <input
                type="hidden"
                name="csrf_token"
                value="<?= compE($csrf) ?>"
            >

            <input
                type="hidden"
                name="termo_id"
                value="<?= $id ?>"
            >

            <input
                type="file"
                name="arquivo"
                accept=".pdf,.jpg,.jpeg,.png"
                required
            >

            <button
                class="btn green"
                type="submit"
                style="margin-top:10px"
            >
                <i class="bi bi-file-earmark-arrow-up-fill"></i>
                Anexar termo assinado
            </button>
        </form>
    <?php endif; ?>
</section>

<?php if ($imprimir): ?>
    <script>
        window.addEventListener('load', () => {
            window.setTimeout(() => window.print(), 350);
        });
    </script>
<?php endif; ?>

</body>
</html>
