<?php
// ============================================================
// ERP - ActSafe | Visualizar/Regenerar Relatório de Checklist NR 10
// Sem FPDF — gera HTML profissional para impressão/PDF via browser
// ============================================================
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();

$acao_id = intval($_GET['acao_id'] ?? 0);
if (!$acao_id) {
    header('Location: nr10.php');
    exit;
}

// Buscar ação
$stmt = $db->prepare("SELECT a.*, u.nome AS unidade_nome, u.id AS unidade_id
                      FROM acoes a LEFT JOIN unidades u ON u.id=a.unidade_id
                      WHERE a.id=? AND a.tipo='checklist_paineis'");
$stmt->execute([$acao_id]);
$acao = $stmt->fetch();
if (!$acao) {
    header('Location: nr10.php');
    exit;
}

// Se já tem documento HTML salvo, servir diretamente
if ($acao['documento_id']) {
    $sd = $db->prepare("SELECT arquivo, mime_type FROM documentos WHERE id=?");
    $sd->execute([$acao['documento_id']]);
    $doc = $sd->fetch();
    if ($doc && file_exists(UPLOAD_DIR . $doc['arquivo'])) {
        // Servir o arquivo salvo
        header('Content-Type: text/html; charset=UTF-8');
        readfile(UPLOAD_DIR . $doc['arquivo']);
        exit;
    }
}

// Regenerar relatório HTML
$unidade_id   = $acao['unidade_id'];
$unidade_nome = $acao['unidade_nome'] ?? 'Unidade';
$tec_nome     = $acao['executado_por'] ?? 'Técnico';
$data_exec_ts = $acao['data_execucao'] ? strtotime($acao['data_execucao']) : time();
$data_exec    = date('d/m/Y', $data_exec_ts);
$data_hora_emissao = date('d/m/Y \à\s H:i');
$doc_num      = 'NR10-CK-' . str_pad($acao_id, 5, '0', STR_PAD_LEFT);
$data_prox_insp    = date('d/m/Y', strtotime('+6 months', $data_exec_ts));
$data_prox_insp_db = date('Y-m-d', strtotime('+6 months', $data_exec_ts));

// Buscar inspeções desta ação
$s3 = $db->prepare("
    SELECT pi.*, pe.nome AS painel_nome, pe.codigo AS painel_codigo,
           pe.nivel_tensao, pe.localizacao, pe.tensao_nominal, pe.tag
    FROM painel_inspecoes pi
    JOIN paineis_eletricos pe ON pe.id = pi.painel_id
    WHERE pi.acao_id = ?
    ORDER BY pe.nome ASC
");
$s3->execute([$acao_id]);
$todas_inspecoes = $s3->fetchAll();

// Fallback: buscar por unidade se acao_id não retornar resultados
if (empty($todas_inspecoes) && $unidade_id) {
    $s3b = $db->prepare("
        SELECT pi.*, pe.nome AS painel_nome, pe.codigo AS painel_codigo,
               pe.nivel_tensao, pe.localizacao, pe.tensao_nominal, pe.tag
        FROM painel_inspecoes pi
        JOIN paineis_eletricos pe ON pe.id = pi.painel_id
        WHERE pe.unidade_id = ?
        ORDER BY pe.nome ASC
    ");
    $s3b->execute([$unidade_id]);
    $todas_inspecoes = $s3b->fetchAll();
}

$total_paineis = count($todas_inspecoes);
$nc_count = 0;
foreach ($todas_inspecoes as $ti) {
    $sc = $db->prepare("SELECT COUNT(*) FROM painel_inspecoes_itens WHERE inspecao_id=? AND resultado='nao_conforme'");
    $sc->execute([$ti['id']]);
    $nc_count += intval($sc->fetchColumn());
}

// ---- Montar HTML ----
ob_start();
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($doc_num); ?> — Relatório NR 10</title>
<style>
  *{box-sizing:border-box;margin:0;padding:0}
  body{font-family:Arial,Helvetica,sans-serif;font-size:11pt;color:#1e293b;background:#fff;padding:20px 30px}
  .page-break{page-break-before:always}
  h1{font-size:14pt;color:#0F4C81;margin-bottom:4px}
  h2{font-size:11pt;color:#0F4C81;margin:14px 0 4px;padding:4px 8px;background:#e0f2fe;border-left:4px solid #0F4C81}
  h3{font-size:10pt;color:#334155;margin:10px 0 4px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #e2e8f0;padding-bottom:3px}
  .header{border-bottom:3px solid #0F4C81;padding-bottom:10px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:flex-start}
  .header-left h1{font-size:16pt}
  .header-left p{font-size:9pt;color:#64748b;margin-top:2px}
  .header-right{text-align:right;font-size:8pt;color:#64748b}
  .header-right strong{color:#0F4C81;font-size:10pt}
  .info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
  .info-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px}
  .info-box label{font-size:8pt;color:#64748b;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:2px}
  .info-box strong{font-size:11pt;color:#1e293b}
  .resumo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
  .resumo-box{border-radius:8px;padding:12px;text-align:center}
  .resumo-box.azul{background:#dbeafe;border:1px solid #93c5fd}
  .resumo-box.verde{background:#dcfce7;border:1px solid #86efac}
  .resumo-box.vermelho{background:#fee2e2;border:1px solid #fca5a5}
  .resumo-box .num{font-size:22pt;font-weight:700;display:block}
  .resumo-box .leg{font-size:8pt;color:#475569;margin-top:2px}
  .painel-section{margin-bottom:20px;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}
  .painel-header{background:#0F4C81;color:#fff;padding:8px 14px}
  .painel-header h2{color:#fff;background:none;border:none;margin:0;padding:0;font-size:11pt}
  .painel-header p{font-size:8pt;opacity:.85;margin-top:2px}
  .painel-body{padding:12px 14px}
  table{width:100%;border-collapse:collapse;margin-bottom:10px;font-size:9pt}
  th{background:#f1f5f9;color:#475569;font-size:8pt;text-transform:uppercase;letter-spacing:.03em;padding:5px 8px;text-align:left;border:1px solid #e2e8f0}
  td{padding:5px 8px;border:1px solid #e2e8f0;vertical-align:top}
  tr:nth-child(even) td{background:#f8fafc}
  .badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:8pt;font-weight:700}
  .badge.conforme{background:#dcfce7;color:#15803d}
  .badge.nao_conforme{background:#fee2e2;color:#b91c1c}
  .badge.na{background:#f1f5f9;color:#64748b}
  .fotos-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
  .foto-item img{width:100%;max-height:200px;object-fit:cover;border-radius:6px;border:1px solid #e2e8f0}
  .foto-item p{font-size:8pt;color:#64748b;text-align:center;margin-top:4px}
  .conclusao{background:#f0fdf4;border:1px solid #86efac;border-radius:8px;padding:14px;margin:20px 0}
  .conclusao.nc{background:#fff7ed;border-color:#fed7aa}
  .conclusao p{font-size:10pt;color:#166534;line-height:1.6}
  .conclusao.nc p{color:#9a3412}
  .assinaturas{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:30px}
  .assinatura-box{text-align:center}
  .assinatura-box .linha{border-top:1px solid #334155;margin-bottom:6px;margin-top:40px}
  .assinatura-box p{font-size:9pt;font-weight:700;color:#1e293b}
  .assinatura-box small{font-size:8pt;color:#64748b}
  .footer{margin-top:30px;padding-top:10px;border-top:1px solid #e2e8f0;font-size:8pt;color:#94a3b8;display:flex;justify-content:space-between}
  .print-btn{position:fixed;bottom:20px;right:20px;background:#0F4C81;color:#fff;border:none;border-radius:50px;padding:12px 20px;font-size:11pt;font-weight:700;cursor:pointer;box-shadow:0 4px 12px rgba(15,76,129,.4);display:flex;align-items:center;gap:8px;z-index:999}
  @media print{
    .print-btn{display:none!important}
    body{padding:10px 15px}
    .page-break{page-break-before:always}
  }
</style>
</head>
<body>

<button class="print-btn" onclick="window.print()">
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>
  Imprimir / Salvar PDF
</button>

<div class="header">
  <div class="header-left">
    <h1>ERP — ActSafe</h1>
    <p>Relatório Técnico de Inspeção de Painéis Elétricos — NR 10</p>
  </div>
  <div class="header-right">
    <strong><?php echo htmlspecialchars($doc_num); ?></strong><br>
    Emitido em: <?php echo $data_hora_emissao; ?>
  </div>
</div>

<div class="info-grid">
  <div class="info-box">
    <label>Unidade Fabril</label>
    <strong><?php echo htmlspecialchars($unidade_nome); ?></strong>
  </div>
  <div class="info-box">
    <label>Técnico Responsável</label>
    <strong><?php echo htmlspecialchars($tec_nome); ?></strong>
  </div>
  <div class="info-box">
    <label>Data da Inspeção</label>
    <strong><?php echo $data_exec; ?></strong>
  </div>
</div>

<div class="resumo-grid">
  <div class="resumo-box azul">
    <span class="num"><?php echo $total_paineis; ?></span>
    <div class="leg">Painéis Inspecionados</div>
  </div>
  <div class="resumo-box <?php echo $nc_count > 0 ? 'vermelho' : 'verde'; ?>">
    <span class="num"><?php echo $nc_count; ?></span>
    <div class="leg">Não Conformidades</div>
  </div>
  <div class="resumo-box verde">
    <span class="num"><?php echo $data_prox_insp; ?></span>
    <div class="leg">Próxima Inspeção</div>
  </div>
</div>

<?php foreach ($todas_inspecoes as $ti_idx => $ti):
    $sitens = $db->prepare("SELECT * FROM painel_inspecoes_itens WHERE inspecao_id=? ORDER BY ordem ASC");
    $sitens->execute([$ti['id']]);
    $itens_rel = $sitens->fetchAll();
    $grupos_rel = ['identificacao'=>'Identificação e Documentação','seguranca'=>'Segurança Elétrica e Estrutural','condicoes'=>'Condições de Uso e Ambiente'];
    $sfotos = $db->prepare("SELECT * FROM painel_inspecoes_fotos WHERE inspecao_id=? LIMIT 4");
    $sfotos->execute([$ti['id']]);
    $fotos_rel = $sfotos->fetchAll();
?>
<?php if ($ti_idx > 0 && $ti_idx % 2 === 0): ?><div class="page-break"></div><?php endif; ?>
<div class="painel-section">
  <div class="painel-header">
    <h2><?php echo htmlspecialchars($ti['painel_nome']); ?> [<?php echo htmlspecialchars($ti['painel_codigo']); ?>]</h2>
    <p>
      Tensão: <?php echo htmlspecialchars($ti['nivel_tensao']); ?>
      <?php if ($ti['tensao_nominal']): ?> — <?php echo htmlspecialchars($ti['tensao_nominal']); ?> V<?php endif; ?>
      <?php if ($ti['localizacao']): ?> — <?php echo htmlspecialchars($ti['localizacao']); ?><?php endif; ?>
      <?php if ($ti['tag']): ?> — TAG: <?php echo htmlspecialchars($ti['tag']); ?><?php endif; ?>
    </p>
  </div>
  <div class="painel-body">
    <?php foreach ($grupos_rel as $gk => $gn):
        $gitens = array_filter($itens_rel, function($i) use ($gk){ return $i['grupo'] === $gk; });
        if (empty($gitens)) continue;
    ?>
    <h3><?php echo htmlspecialchars($gn); ?></h3>
    <table>
      <thead><tr><th style="width:70%">Item</th><th style="width:15%">Resultado</th><th>Observação</th></tr></thead>
      <tbody>
      <?php foreach ($gitens as $it):
          $res = $it['resultado'] ?? 'na';
          if ($res === 'conforme') $badge = '<span class="badge conforme">Conforme</span>';
          elseif ($res === 'nao_conforme') $badge = '<span class="badge nao_conforme">Não Conforme</span>';
          else $badge = '<span class="badge na">N/A</span>';
      ?>
      <tr>
        <td><?php echo htmlspecialchars($it['item_nome']); ?></td>
        <td><?php echo $badge; ?></td>
        <td style="font-size:8pt;color:#64748b"><?php echo htmlspecialchars($it['observacao'] ?? ''); ?></td>
      </tr>
      <?php endforeach; ?>
      </tbody>
    </table>
    <?php endforeach; ?>

    <?php if ($ti['observacoes_gerais']): ?>
    <p style="font-size:9pt;color:#64748b;margin-top:6px"><strong>Obs. Gerais:</strong> <?php echo htmlspecialchars($ti['observacoes_gerais']); ?></p>
    <?php endif; ?>

    <?php if (!empty($fotos_rel)): ?>
    <div class="fotos-grid">
      <?php foreach ($fotos_rel as $fp):
          $url_foto = UPLOAD_URL . $fp['arquivo'];
      ?>
      <div class="foto-item">
        <img src="<?php echo htmlspecialchars($url_foto); ?>" alt="<?php echo htmlspecialchars($fp['tipo']); ?>">
        <p><?php echo htmlspecialchars(ucfirst($fp['tipo'])); ?></p>
      </div>
      <?php endforeach; ?>
    </div>
    <?php endif; ?>
  </div>
</div>
<?php endforeach; ?>

<div class="page-break"></div>

<div class="conclusao <?php echo $nc_count > 0 ? 'nc' : ''; ?>">
  <?php if ($nc_count > 0): ?>
  <p><strong>Conclusão:</strong> Inspeção realizada em <?php echo $data_exec; ?>. Foram identificadas <strong><?php echo $nc_count; ?> não conformidade(s)</strong>. As correções devem ser realizadas conforme plano de ação. Próxima inspeção prevista para: <strong><?php echo $data_prox_insp; ?></strong>.</p>
  <?php else: ?>
  <p><strong>Conclusão:</strong> Inspeção realizada em <?php echo $data_exec; ?>. Todos os painéis inspecionados estão em conformidade com a NR 10. Próxima inspeção prevista para: <strong><?php echo $data_prox_insp; ?></strong>.</p>
  <?php endif; ?>
</div>

<div class="assinaturas">
  <div class="assinatura-box">
    <div class="linha"></div>
    <p><?php echo htmlspecialchars($tec_nome); ?></p>
    <small>Técnico Responsável</small>
  </div>
  <div class="assinatura-box">
    <div class="linha"></div>
    <p>Gestor / Responsável</p>
    <small>Aprovação</small>
  </div>
</div>

<div class="footer">
  <span>ERP — ActSafe — Checklist NR 10 — Painéis Elétricos</span>
  <span><?php echo htmlspecialchars($doc_num); ?> — Emitido em <?php echo $data_hora_emissao; ?></span>
</div>

</body>
</html>
<?php
$html_content = ob_get_clean();

// Salvar novo arquivo HTML no servidor
$dir_rel = UPLOAD_DIR . 'painel_relatorios/';
if (!is_dir($dir_rel)) mkdir($dir_rel, 0755, true);
$nome_html = 'checklist_nr10_' . $acao_id . '_' . date('Ymd_His') . '.html';
$caminho_html = $dir_rel . $nome_html;
file_put_contents($caminho_html, $html_content);

// Atualizar ou criar documento no banco
if ($acao['documento_id']) {
    $db->prepare("UPDATE documentos SET arquivo=?, mime_type='text/html', tamanho_kb=? WHERE id=?")
       ->execute([
           'painel_relatorios/' . $nome_html,
           file_exists($caminho_html) ? intval(filesize($caminho_html)/1024) : 0,
           $acao['documento_id']
       ]);
} else {
    $titulo_doc = 'Relatório Técnico de Inspeção de Painéis Elétricos - ' . $unidade_nome . ' - ' . $data_exec;
    $db->prepare("INSERT INTO documentos (unidade_id, acao_id, categoria, nome, arquivo, mime_type, tamanho_kb, data_vencimento, criado_em)
                  VALUES (?,?,?,?,?,?,?,?,NOW())")
       ->execute([
           $unidade_id, $acao_id, 'certificado_nr10', $titulo_doc,
           'painel_relatorios/' . $nome_html, 'text/html',
           file_exists($caminho_html) ? intval(filesize($caminho_html)/1024) : 0,
           $data_prox_insp_db
       ]);
    $doc_id = $db->lastInsertId();
    $db->prepare("UPDATE acoes SET documento_id=? WHERE id=?")->execute([$doc_id, $acao_id]);
}

// Servir HTML no browser
header('Content-Type: text/html; charset=UTF-8');
echo $html_content;
exit;
