<?php
declare(strict_types=1);

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

date_default_timezone_set('America/Sao_Paulo');
impressorasExigirAcesso();
$mysqli->set_charset('utf8mb4');

$csrf = impCsrf();
$erro = '';
$id = (int) ($_GET['id'] ?? $_POST['impressora_id'] ?? 0);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        impValidarCsrf();

        $id = (int) ($_POST['impressora_id'] ?? 0);
        $pessoa = impTexto($_POST['pessoa_entrega'] ?? '', 150);
        $setorOrigem = impNulo($_POST['setor_origem'] ?? '', 150);
        $ramal = impNulo($_POST['telefone_ramal'] ?? '', 80);
        $defeito = trim((string) ($_POST['defeito_relatado'] ?? ''));
        $acessorios = impNulo($_POST['acessorios_recebidos'] ?? '', 2000);
        $condicao = impTexto($_POST['condicao_entrada'] ?? 'NAO_AVALIADO', 30);
        $prioridade = impTexto($_POST['prioridade'] ?? 'NORMAL', 20);
        $contador = max(0, (int) ($_POST['contador_entrada'] ?? 0));
        $tecnico = impressorasUsuarioAtual();

        if ($id <= 0 || $pessoa === '' || mb_strlen($defeito) < 3) {
            throw new RuntimeException(
                'Selecione a impressora, informe quem entregou e descreva o defeito.'
            );
        }

        $mysqli->begin_transaction();

        $impressora = impBuscarImpressora($mysqli, $id, true);

        if (!$impressora) {
            throw new RuntimeException('Impressora não encontrada.');
        }

        if (impManutencaoAtiva($mysqli, $id, true)) {
            throw new RuntimeException(
                'Esta impressora já possui um atendimento ativo.'
            );
        }

        $numero = impNumeroAtendimento();

        $stmt = impExecutar(
            $mysqli,
            "INSERT INTO ti_impressora_manutencoes (
                impressora_id,numero_atendimento,status,prioridade,
                pessoa_entrega,setor_origem,telefone_ramal,defeito_relatado,
                acessorios_recebidos,condicao_entrada,tecnico_recebimento,
                contador_entrada
             )
             VALUES (
                ?,?,'AGUARDANDO_DIAGNOSTICO',?,?,?,?,?,?,?,?,NULLIF(?,0)
             )",
            [
                $id,$numero,$prioridade,$pessoa,$setorOrigem,$ramal,
                $defeito,$acessorios,$condicao,$tecnico,$contador
            ]
        );

        $manutencaoId = (int) $stmt->insert_id;
        $stmt->close();

        impExecutar(
            $mysqli,
            "UPDATE ti_impressoras
             SET status='AGUARDANDO_DIAGNOSTICO',
                 local_atual='MANUTENÇÃO TI',
                 atualizado_por=?
             WHERE id=?",
            [$tecnico,$id]
        )->close();

        $anexos = impSalvarAnexos(
            $mysqli,
            $id,
            $manutencaoId,
            $_FILES['anexos'] ?? []
        );

        impRegistrarHistorico(
            $mysqli,
            $id,
            $manutencaoId,
            'RECEBIDA_NA_TI',
            $impressora['status'],
            'AGUARDANDO_DIAGNOSTICO',
            $impressora['setor_nome'],
            'MANUTENÇÃO TI',
            $impressora['localizacao_texto'],
            'MANUTENÇÃO TI',
            'Defeito relatado: ' . $defeito .
            ($anexos > 0 ? " • {$anexos} anexo(s)." : '')
        );

        $termoId = impCriarTermo(
            $mysqli,
            $id,
            $manutencaoId,
            'ENTRADA',
            $pessoa,
            $setorOrigem ?: $impressora['setor_nome'],
            $tecnico,
            [
                'numero_atendimento'=>$numero,
                'marca'=>$impressora['marca'],
                'modelo'=>$impressora['modelo'],
                'patrimonio'=>$impressora['patrimonio'],
                'serie'=>$impressora['numero_serie'],
                'defeito'=>$defeito,
                'acessorios'=>$acessorios,
                'condicao'=>$condicao
            ]
        );

        $mysqli->commit();

        impRedirecionar(
            'termo_entrada_impressora.php?termo_id=' .
            $termoId .
            '&print=1'
        );
    } catch (Throwable $e) {
        try {
            $mysqli->rollback();
        } catch (Throwable) {
        }

        $erro = $e->getMessage();
    }
}

$impressoras = [];
$resultado = $mysqli->query("
    SELECT
        i.id,
        i.patrimonio,
        i.numero_serie,
        i.marca,
        i.modelo,
        s.nome AS setor_nome
    FROM ti_impressoras AS i
    LEFT JOIN ti_setores AS s
        ON s.id = i.setor_id
    WHERE i.status NOT IN ('BAIXADA','AGUARDANDO_BAIXA')
      AND NOT EXISTS (
          SELECT 1
          FROM ti_impressora_manutencoes AS m
          WHERE m.impressora_id = i.id
            AND m.status NOT IN ('RETIRADA','CANCELADA')
      )
    ORDER BY i.marca,i.modelo,i.patrimonio
");

if ($resultado) {
    while ($linha = $resultado->fetch_assoc()) {
        $impressoras[] = $linha;
    }
}
?>
<!doctype html>
<html lang="pt-BR">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Receber Impressora na TI</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
    <link href="impressoras_style.css?v=1" rel="stylesheet">
</head>
<body>
<div class="top-strip"></div>
<div class="bg-grid"></div>
<div class="app">
<header class="main-header">
    <div class="header-content">
        <div class="brand-area">
            <div class="logo-box"><img src="assets/logo_pref.jpg" alt=""></div>
            <div>
                <span class="eyebrow"><i class="bi bi-box-arrow-in-down"></i>Entrada na Manutenção TI</span>
                <h1 class="header-title">Receber impressora</h1>
                <p class="header-subtitle">Registre o equipamento, quem entregou, defeito, acessórios e condição visual.</p>
            </div>
        </div>
        <nav class="header-actions">
            <a href="impressoras.php" class="header-button primary"><i class="bi bi-arrow-left"></i>Voltar</a>
            <a href="nova_impressora.php" class="header-button"><i class="bi bi-plus-circle"></i>Cadastrar nova</a>
        </nav>
    </div>
</header>

<main class="main">
<?php if ($erro): ?>
    <div class="flash error"><i class="bi bi-exclamation-triangle-fill"></i><?= impE($erro) ?></div>
<?php endif; ?>

<form method="post" enctype="multipart/form-data" class="form-card">
<input type="hidden" name="csrf_token" value="<?= impE($csrf) ?>">
<section class="form-section">
    <h3><i class="bi bi-printer-fill"></i>Impressora recebida</h3>
    <div class="form-grid">
        <div class="form-group full">
            <label>Selecione a impressora *</label>
            <select class="control" name="impressora_id" required>
                <option value="">Selecione...</option>
                <?php foreach ($impressoras as $i): ?>
                    <option value="<?= (int) $i['id'] ?>" <?= $id === (int) $i['id'] ? 'selected' : '' ?>>
                        <?= impE(
                            $i['marca'] . ' ' . $i['modelo'] .
                            ' • Pat. ' . ($i['patrimonio'] ?: 'sem patrimônio') .
                            ' • ' . ($i['setor_nome'] ?: 'sem setor')
                        ) ?>
                    </option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="form-group"><label>Pessoa que entregou *</label><input class="control" name="pessoa_entrega" required maxlength="150"></div>
        <div class="form-group"><label>Setor de origem</label><input class="control" name="setor_origem" maxlength="150"></div>
        <div class="form-group"><label>Telefone / ramal</label><input class="control" name="telefone_ramal" maxlength="80"></div>
        <div class="form-group"><label>Prioridade</label><select class="control" name="prioridade"><option>NORMAL</option><option>ALTA</option><option>URGENTE</option></select></div>
        <div class="form-group"><label>Condição de entrada</label><select class="control" name="condicao_entrada"><option value="NAO_AVALIADO">Não avaliado</option><option value="BOM">Bom</option><option value="REGULAR">Regular</option><option value="DANIFICADO">Danificado</option></select></div>
        <div class="form-group"><label>Contador de páginas</label><input class="control" type="number" min="0" name="contador_entrada"></div>
        <div class="form-group full"><label>Defeito relatado *</label><textarea class="control" name="defeito_relatado" required placeholder="Descreva exatamente o problema informado..."></textarea></div>
        <div class="form-group full"><label>Acessórios recebidos</label><textarea class="control" name="acessorios_recebidos" placeholder="Cabo de energia, cabo USB, bandejas, toner, manual..."></textarea></div>
        <div class="form-group full"><label>Fotos ou documentos</label><input class="control" type="file" name="anexos[]" multiple accept=".pdf,.jpg,.jpeg,.png"><span class="form-help">PDF, JPG ou PNG, até 8 MB por arquivo.</span></div>
    </div>
</section>
<div class="form-actions">
    <a href="impressoras.php" class="button">Cancelar</a>
    <button class="button primary" type="submit"><i class="bi bi-printer-fill"></i>Registrar entrada e gerar termo</button>
</div>
</form>
</main>
</div>
</body>
</html>
