<?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');

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

$stmt = impExecutar(
    $mysqli,
    "SELECT
        m.*,
        i.marca,
        i.modelo,
        i.patrimonio,
        i.numero_serie,
        s.nome AS setor_nome
     FROM ti_impressora_manutencoes AS m
     JOIN ti_impressoras AS i
        ON i.id = m.impressora_id
     LEFT JOIN ti_setores AS s
        ON s.id = i.setor_id
     WHERE m.id = ?
     LIMIT 1",
    [$id]
);

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

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

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

        $solucao = trim((string) ($_POST['solucao'] ?? ''));
        $observacoes = impNulo(
            $_POST['observacoes_saida'] ?? '',
            5000
        );
        $contador = max(
            0,
            (int) ($_POST['contador_saida'] ?? 0)
        );
        $usuario = impressorasUsuarioAtual();

        if (mb_strlen($solucao) < 5) {
            throw new RuntimeException(
                'Informe a solução aplicada.'
            );
        }

        $mysqli->begin_transaction();

        impExecutar(
            $mysqli,
            "UPDATE ti_impressora_manutencoes
             SET status='PRONTA_RETIRADA',
                 solucao=?,
                 observacoes_saida=?,
                 contador_saida=NULLIF(?,0),
                 tecnico_finalizacao=?,
                 data_finalizacao=NOW()
             WHERE id=?",
            [
                $solucao,
                $observacoes,
                $contador,
                $usuario,
                $id
            ]
        )->close();

        impExecutar(
            $mysqli,
            "UPDATE ti_impressoras
             SET status='PRONTA_RETIRADA',
                 local_atual='MANUTENÇÃO TI — PRONTA PARA RETIRADA',
                 contador_paginas=IF(? > 0, ?, contador_paginas),
                 atualizado_por=?
             WHERE id=?",
            [
                $contador,
                $contador,
                $usuario,
                (int) $manutencao['impressora_id']
            ]
        )->close();

        impRegistrarHistorico(
            $mysqli,
            (int) $manutencao['impressora_id'],
            $id,
            'MANUTENCAO_FINALIZADA',
            $manutencao['status'],
            'PRONTA_RETIRADA',
            $manutencao['setor_nome'],
            $manutencao['setor_nome'],
            'MANUTENÇÃO TI',
            'PRONTA PARA RETIRADA',
            $solucao
        );

        $mysqli->commit();

        impFlash(
            'sucesso',
            'Manutenção finalizada. A impressora está pronta para retirada.'
        );

        impRedirecionar(
            'retirada_impressora.php?id=' . $id
        );
    } catch (Throwable $e) {
        try {
            $mysqli->rollback();
        } catch (Throwable) {
        }

        $erro = $e->getMessage();
    }
}
?>
<!doctype html>
<html lang="pt-BR">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Finalizar Manutenção</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-check2-circle"></i>Finalização</span>
                <h1 class="header-title"><?= impE($manutencao['marca'] . ' ' . $manutencao['modelo']) ?></h1>
                <p class="header-subtitle"><?= impE($manutencao['numero_atendimento']) ?> • Pat. <?= impE($manutencao['patrimonio'] ?: 'não informado') ?></p>
            </div>
        </div>
        <nav class="header-actions">
            <a class="header-button primary" href="manutencao_impressora.php?id=<?= $id ?>"><i class="bi bi-arrow-left"></i>Voltar</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" class="form-card">
<input type="hidden" name="csrf_token" value="<?= impE($csrf) ?>">
<input type="hidden" name="id" value="<?= $id ?>">
<section class="form-section">
    <h3><i class="bi bi-check-circle-fill"></i>Conclusão técnica</h3>
    <div class="form-grid">
        <div class="form-group full"><label>Solução aplicada *</label><textarea class="control" name="solucao" required placeholder="Descreva o que foi corrigido e o resultado final..."><?= impE($manutencao['solucao']) ?></textarea></div>
        <div class="form-group"><label>Contador final</label><input class="control" type="number" min="0" name="contador_saida" value="<?= (int) ($manutencao['contador_saida'] ?? 0) ?>"></div>
        <div class="form-group two"><label>Observações para entrega</label><input class="control" name="observacoes_saida" maxlength="5000" value="<?= impE($manutencao['observacoes_saida']) ?>"></div>
    </div>
</section>
<div class="form-actions"><button class="button green" type="submit"><i class="bi bi-check2-circle"></i>Marcar pronta para retirada</button></div>
</form>
</main>
</div>
</body>
</html>
