<?php
// ============================================================
// ERP - ActSafe | NR 10 — Cadastro de Painéis Elétricos
// ============================================================
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];
$msg = '';

// ============================================================
// POST: Salvar / Excluir Painel
// ============================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $acao_form = $_POST['acao_form'] ?? '';

    if ($acao_form === 'salvar' && temPermissao('criar', $perfil)) {
        $id          = intval($_POST['id'] ?? 0);
        $uid         = intval($_POST['unidade_id'] ?? 0);
        $nome        = limpar($_POST['nome'] ?? '');
        $tag         = limpar($_POST['tag'] ?? '');
        $tipo        = limpar($_POST['tipo'] ?? 'distribuicao');
        $tensao      = limpar($_POST['tensao_nominal'] ?? '');
        $nivel       = limpar($_POST['nivel_tensao'] ?? 'BT');
        $local       = limpar($_POST['localizacao'] ?? '');
        $resp        = limpar($_POST['responsavel_tecnico'] ?? '');
        $fabric      = limpar($_POST['fabricante'] ?? '');
        $ano         = intval($_POST['ano_fabricacao'] ?? 0) ?: null;
        $ip          = limpar($_POST['grau_protecao_ip'] ?? '');
        $corrente    = limpar($_POST['corrente_nominal'] ?? '');
        $obs         = limpar($_POST['observacoes'] ?? '');
        $status      = limpar($_POST['status'] ?? 'pendente_inspecao');
        $d_insp      = $_POST['data_ultima_inspecao'] ?: null;
        $d_prox      = $_POST['data_proxima_inspecao'] ?: null;
        
        // Fotos do formulário
        $fotos_form = [];
        for ($i = 1; $i <= 2; $i++) {
            if (!empty($_FILES['foto_' . $i]['tmp_name'])) {
                $fotos_form[$i] = [
                    'tmp' => $_FILES['foto_' . $i]['tmp_name'],
                    'desc' => limpar($_POST['desc_foto_' . $i] ?? '')
                ];
            }
        }

        // Checklist — Identificação e Documentação
        $chk_diagrama    = isset($_POST['chk_diagrama_unifilar']) ? 1 : 0;
        $chk_id_circ     = isset($_POST['chk_identificacao_circuitos']) ? 1 : 0;
        $chk_sinal       = isset($_POST['chk_sinalizacao_risco']) ? 1 : 0;
        $chk_pie         = isset($_POST['chk_pie_atualizado']) ? 1 : 0;
        $chk_laudo       = isset($_POST['chk_laudo_aterramento']) ? 1 : 0;
        $chk_rti         = isset($_POST['chk_rti_emitido']) ? 1 : 0;
        // Checklist — Segurança Elétrica
        $chk_secc        = isset($_POST['chk_seccionamento']) ? 1 : 0;
        $chk_aterr       = isset($_POST['chk_aterramento_neutro']) ? 1 : 0;
        $chk_encl        = isset($_POST['chk_enclausuramento']) ? 1 : 0;
        $chk_loto        = isset($_POST['chk_loto_implementado']) ? 1 : 0;
        $chk_prot        = isset($_POST['chk_protecao_sobrecorrente']) ? 1 : 0;
        $chk_arco        = isset($_POST['chk_energia_arco']) ? 1 : 0;
        // Checklist — Condições de Uso
        $chk_org         = isset($_POST['chk_organizacao_interna']) ? 1 : 0;
        $chk_limp        = isset($_POST['chk_limpeza']) ? 1 : 0;
        $chk_esp         = isset($_POST['chk_espaco_trabalho']) ? 1 : 0;
        $chk_comp        = isset($_POST['chk_estado_componentes']) ? 1 : 0;
        $chk_ilum        = isset($_POST['chk_iluminacao_acesso']) ? 1 : 0;
        $chk_epi         = isset($_POST['chk_epi_disponivel']) ? 1 : 0;

        if (!$uid || !$nome) {
            header('Location: nr10_paineis.php?msg=error:Preencha+os+campos+obrigatórios.'); exit;
        }

        if ($id > 0 && temPermissao('editar', $perfil)) {
            $db->prepare("UPDATE paineis_eletricos SET unidade_id=?,nome=?,tag=?,tipo=?,tensao_nominal=?,nivel_tensao=?,localizacao=?,responsavel_tecnico=?,fabricante=?,ano_fabricacao=?,grau_protecao_ip=?,corrente_nominal=?,observacoes=?,status=?,data_ultima_inspecao=?,data_proxima_inspecao=?,chk_diagrama_unifilar=?,chk_identificacao_circuitos=?,chk_sinalizacao_risco=?,chk_pie_atualizado=?,chk_laudo_aterramento=?,chk_rti_emitido=?,chk_seccionamento=?,chk_aterramento_neutro=?,chk_enclausuramento=?,chk_loto_implementado=?,chk_protecao_sobrecorrente=?,chk_energia_arco=?,chk_organizacao_interna=?,chk_limpeza=?,chk_espaco_trabalho=?,chk_estado_componentes=?,chk_iluminacao_acesso=?,chk_epi_disponivel=? WHERE id=?")
               ->execute([$uid,$nome,$tag,$tipo,$tensao,$nivel,$local,$resp,$fabric,$ano,$ip,$corrente,$obs,$status,$d_insp,$d_prox,$chk_diagrama,$chk_id_circ,$chk_sinal,$chk_pie,$chk_laudo,$chk_rti,$chk_secc,$chk_aterr,$chk_encl,$chk_loto,$chk_prot,$chk_arco,$chk_org,$chk_limp,$chk_esp,$chk_comp,$chk_ilum,$chk_epi,$id]);
            header('Location: nr10_paineis.php?msg=success:Painel+atualizado+com+sucesso!'); exit;
        } else {
            $db->prepare("INSERT INTO paineis_eletricos (unidade_id,codigo,nome,tag,tipo,tensao_nominal,nivel_tensao,localizacao,responsavel_tecnico,fabricante,ano_fabricacao,grau_protecao_ip,corrente_nominal,observacoes,status,data_ultima_inspecao,data_proxima_inspecao,chk_diagrama_unifilar,chk_identificacao_circuitos,chk_sinalizacao_risco,chk_pie_atualizado,chk_laudo_aterramento,chk_rti_emitido,chk_seccionamento,chk_aterramento_neutro,chk_enclausuramento,chk_loto_implementado,chk_protecao_sobrecorrente,chk_energia_arco,chk_organizacao_interna,chk_limpeza,chk_espaco_trabalho,chk_estado_componentes,chk_iluminacao_acesso,chk_epi_disponivel,criado_por) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
               ->execute([$uid,'TEMP',$nome,$tag,$tipo,$tensao,$nivel,$local,$resp,$fabric,$ano,$ip,$corrente,$obs,$status,$d_insp,$d_prox,$chk_diagrama,$chk_id_circ,$chk_sinal,$chk_pie,$chk_laudo,$chk_rti,$chk_secc,$chk_aterr,$chk_encl,$chk_loto,$chk_prot,$chk_arco,$chk_org,$chk_limp,$chk_esp,$chk_comp,$chk_ilum,$chk_epi,$usuario['id']]);
            $novo_id = $db->lastInsertId();
            $cod_auto = 'PE-' . str_pad($novo_id, 4, '0', STR_PAD_LEFT);
            $db->prepare("UPDATE paineis_eletricos SET codigo=? WHERE id=?")->execute([$cod_auto, $novo_id]);
            // Gerar QR Code automaticamente
            $codigo_qr = 'PE' . str_pad($novo_id, 6, '0', STR_PAD_LEFT);
            $url_qr = APP_URL . '/equipamento_qr.php?codigo=' . $codigo_qr . '&tipo=nr10_painel';
            $db->prepare("INSERT IGNORE INTO equipamento_qrcodes (equipamento_id, codigo_unico, url_publica) VALUES (?,?,?)")
               ->execute([$novo_id, $codigo_qr, $url_qr]);
            // Processar fotos do formulário
            foreach ($fotos_form as $i => $foto) {
                $ext = strtolower(pathinfo($_FILES['foto_' . $i]['name'], PATHINFO_EXTENSION));
                $nome_arquivo = 'paineis/' . $novo_id . '/foto_' . $i . '_' . time() . '.jpg';
                $dir = UPLOAD_DIR . 'paineis/' . $novo_id . '/';
                if (!is_dir($dir)) mkdir($dir, 0755, true);
                $destino = UPLOAD_DIR . $nome_arquivo;
                $src = null;
                if ($ext === 'jpg' || $ext === 'jpeg') $src = imagecreatefromjpeg($foto['tmp']);
                elseif ($ext === 'png') $src = imagecreatefrompng($foto['tmp']);
                elseif ($ext === 'webp') $src = imagecreatefromwebp($foto['tmp']);
                if ($src) {
                    if (function_exists('exif_read_data')) {
                        $exif = @exif_read_data($foto['tmp']);
                        $orient = $exif['Orientation'] ?? 1;
                        if ($orient == 3) $src = imagerotate($src, 180, 0);
                        elseif ($orient == 6) $src = imagerotate($src, -90, 0);
                        elseif ($orient == 8) $src = imagerotate($src, 90, 0);
                    }
                    $w = imagesx($src); $h = imagesy($src);
                    if ($w > 1280 || $h > 960) {
                        $ratio = min(1280/$w, 960/$h);
                        $nw = intval($w * $ratio); $nh = intval($h * $ratio);
                        $dst = imagecreatetruecolor($nw, $nh);
                        imagecopyresampled($dst, $src, 0,0,0,0, $nw,$nh,$w,$h);
                        imagedestroy($src); $src = $dst;
                    }
                    imagejpeg($src, $destino, 82);
                    imagedestroy($src);
                    $db->prepare("INSERT INTO painel_fotos (painel_id, arquivo, descricao, ordem) VALUES (?,?,?,?)")
                       ->execute([$novo_id, $nome_arquivo, $foto['desc'], $i]);
                }
            }
            header('Location: nr10_paineis.php?msg=success:Painel+cadastrado!+Código:+' . urlencode($cod_auto)); exit;
        }
    } elseif ($acao_form === 'excluir' && temPermissao('excluir', $perfil)) {
        $id = intval($_POST['id'] ?? 0);
        if ($id > 0) {
            $db->prepare("DELETE FROM paineis_eletricos WHERE id=?")->execute([$id]);
        }
        header('Location: nr10_paineis.php?msg=success:Painel+removido!'); exit;
    }

    // Upload de foto
    if ($acao_form === 'upload_foto' && temPermissao('criar', $perfil)) {
        $painel_id = intval($_POST['painel_id'] ?? 0);
        $descricao = limpar($_POST['descricao_foto'] ?? '');
        if ($painel_id && !empty($_FILES['foto']['tmp_name'])) {
            $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));
            $nome_arquivo = 'paineis/' . $painel_id . '/foto_' . time() . '_' . rand(1000,9999) . '.jpg';
            $dir = UPLOAD_DIR . 'paineis/' . $painel_id . '/';
            if (!is_dir($dir)) mkdir($dir, 0755, true);
            $destino = UPLOAD_DIR . $nome_arquivo;
            // Processar imagem com GD
            $src = null;
            if ($ext === 'jpg' || $ext === 'jpeg') $src = imagecreatefromjpeg($_FILES['foto']['tmp_name']);
            elseif ($ext === 'png') $src = imagecreatefrompng($_FILES['foto']['tmp_name']);
            elseif ($ext === 'webp') $src = imagecreatefromwebp($_FILES['foto']['tmp_name']);
            if ($src) {
                // Corrigir orientação EXIF
                if (function_exists('exif_read_data')) {
                    $exif = @exif_read_data($_FILES['foto']['tmp_name']);
                    $orient = $exif['Orientation'] ?? 1;
                    if ($orient == 3) $src = imagerotate($src, 180, 0);
                    elseif ($orient == 6) $src = imagerotate($src, -90, 0);
                    elseif ($orient == 8) $src = imagerotate($src, 90, 0);
                }
                // Redimensionar para máx 1280x960
                $w = imagesx($src); $h = imagesy($src);
                $max_w = 1280; $max_h = 960;
                if ($w > $max_w || $h > $max_h) {
                    $ratio = min($max_w/$w, $max_h/$h);
                    $nw = intval($w * $ratio); $nh = intval($h * $ratio);
                    $dst = imagecreatetruecolor($nw, $nh);
                    imagecopyresampled($dst, $src, 0,0,0,0, $nw,$nh,$w,$h);
                    imagedestroy($src); $src = $dst;
                }
                imagejpeg($src, $destino, 82);
                imagedestroy($src);
                $db->prepare("INSERT INTO painel_fotos (painel_id, arquivo, descricao) VALUES (?,?,?)")
                   ->execute([$painel_id, $nome_arquivo, $descricao]);
            }
        }
        header('Location: nr10_paineis.php?msg=success:Foto+adicionada!&ver=' . $painel_id); exit;
    }

    // Remover foto
    if ($acao_form === 'remover_foto' && temPermissao('editar', $perfil)) {
        $foto_id = intval($_POST['foto_id'] ?? 0);
        $s = $db->prepare("SELECT arquivo FROM painel_fotos WHERE id=?");
        $s->execute([$foto_id]);
        $foto = $s->fetch();
        if ($foto) {
            @unlink(UPLOAD_DIR . $foto['arquivo']);
            $db->prepare("DELETE FROM painel_fotos WHERE id=?")->execute([$foto_id]);
        }
        header('Location: nr10_paineis.php?msg=success:Foto+removida!'); exit;
    }
}

// GET: Gerar QR Code para painel existente
if (isset($_GET['gerar_qr'])) {
    $pid = intval($_GET['gerar_qr']);
    $codigo_qr = 'PE' . str_pad($pid, 6, '0', STR_PAD_LEFT);
    $url_qr = APP_URL . '/equipamento_qr.php?codigo=' . $codigo_qr . '&tipo=nr10_painel';
    $db->prepare("INSERT IGNORE INTO equipamento_qrcodes (equipamento_id, codigo_unico, url_publica) VALUES (?,?,?)")
       ->execute([$pid, $codigo_qr, $url_qr]);
    header('Location: nr10_paineis.php?msg=success:QR+Code+gerado!'); exit;
}

$msg = $_GET['msg'] ?? '';

// Filtros
$filtro_unidade = intval($_GET['unidade_id'] ?? 0);
$filtro_status  = sanitizar($_GET['status'] ?? '');
$filtro_nivel   = sanitizar($_GET['nivel_tensao'] ?? '');
$ver_painel     = intval($_GET['ver'] ?? 0);

$unidades = $db->query("SELECT id, codigo, nome FROM unidades WHERE ativo=1 ORDER BY nome")->fetchAll();

// Query principal
$where = ['p.ativo=1'];
$params = [];
if ($filtro_unidade) { $where[] = 'p.unidade_id=?'; $params[] = $filtro_unidade; }
if ($filtro_status)  { $where[] = 'p.status=?';     $params[] = $filtro_status; }
if ($filtro_nivel)   { $where[] = 'p.nivel_tensao=?'; $params[] = $filtro_nivel; }

$sql = "SELECT p.*, u.nome AS unidade_nome, u.codigo AS unidade_codigo,
        (SELECT COUNT(*) FROM painel_fotos pf WHERE pf.painel_id=p.id) AS total_fotos,
        (SELECT codigo_unico FROM equipamento_qrcodes WHERE equipamento_id=p.id AND codigo_unico LIKE 'PE%' LIMIT 1) AS qr_codigo
        FROM paineis_eletricos p
        LEFT JOIN unidades u ON u.id=p.unidade_id
        WHERE " . implode(' AND ', $where) . " ORDER BY p.criado_em DESC";
$stmt = $db->prepare($sql);
$stmt->execute($params);
$paineis = $stmt->fetchAll();

// Editar
$editando = null;
if (isset($_GET['editar'])) {
    $s = $db->prepare("SELECT * FROM paineis_eletricos WHERE id=?");
    $s->execute([intval($_GET['editar'])]);
    $editando = $s->fetch();
}

// Ver detalhes (fotos)
$painel_ver = null;
$fotos_ver = [];
if ($ver_painel) {
    $s = $db->prepare("SELECT p.*, u.nome AS unidade_nome FROM paineis_eletricos p LEFT JOIN unidades u ON u.id=p.unidade_id WHERE p.id=?");
    $s->execute([$ver_painel]);
    $painel_ver = $s->fetch();
    if ($painel_ver) {
        $sf = $db->prepare("SELECT * FROM painel_fotos WHERE painel_id=? ORDER BY ordem, criado_em");
        $sf->execute([$ver_painel]);
        $fotos_ver = $sf->fetchAll();
    }
}

$tipos_painel = [
    'distribuicao' => 'Distribuição',
    'comando'      => 'Comando',
    'CCM'          => 'CCM (Centro de Controle de Motores)',
    'QGBT'         => 'QGBT (Quadro Geral de BT)',
    'subestacao'   => 'Subestação',
    'outro'        => 'Outro',
];
$status_list = [
    'conforme'           => ['label' => 'Conforme',           'cor' => 'bg-green-100 text-green-700 border-green-200'],
    'nao_conforme'       => ['label' => 'Não Conforme',       'cor' => 'bg-red-100 text-red-700 border-red-200'],
    'em_adequacao'       => ['label' => 'Em Adequação',       'cor' => 'bg-yellow-100 text-yellow-700 border-yellow-200'],
    'pendente_inspecao'  => ['label' => 'Pendente Inspeção',  'cor' => 'bg-gray-100 text-gray-600 border-gray-200'],
];
$niveis = ['BT' => 'Baixa Tensão', 'MT' => 'Média Tensão', 'AT' => 'Alta Tensão'];

// Checklist agrupado
$checklist_grupos = [
    'Identificação e Documentação' => [
        'chk_diagrama_unifilar'       => 'Diagrama unifilar atualizado e acessível no painel ou PIE',
        'chk_identificacao_circuitos' => 'Circuitos e condutores identificados (nomenclatura, tensão, fase)',
        'chk_sinalizacao_risco'       => 'Sinalização de advertência, tensão nominal e pessoas autorizadas',
        'chk_pie_atualizado'          => 'PIE (Prontuário de Instalações Elétricas) atualizado',
        'chk_laudo_aterramento'       => 'Laudo de aterramento e SPDA vigente (assinado por Eng. Eletricista)',
        'chk_rti_emitido'             => 'RTI (Relatório Técnico de Inspeção) emitido e arquivado',
    ],
    'Segurança Elétrica e Estrutural' => [
        'chk_seccionamento'           => 'Dispositivo de seccionamento visível (chave seccionadora ou disjuntor geral)',
        'chk_aterramento_neutro'      => 'Aterramento (PE) e neutro (N) bem dimensionados e conectados',
        'chk_enclausuramento'         => 'Painel fechado, grau IP mantido, sem partes vivas expostas',
        'chk_loto_implementado'       => 'Procedimento LOTO (Lockout/Tagout) implementado com cadeados e etiquetas',
        'chk_protecao_sobrecorrente'  => 'Proteções contra sobrecorrente e curto-circuito adequadas',
        'chk_energia_arco'            => 'Análise de energia de arco elétrico realizada (NBR 14039)',
    ],
    'Condições de Uso e Ambiente' => [
        'chk_organizacao_interna'     => 'Organização interna: sem condutores soltos, mal fixados ou emaranhados',
        'chk_limpeza'                 => 'Limpeza interna adequada (sem excesso de poeira ou resíduos)',
        'chk_espaco_trabalho'         => 'Espaço de trabalho frontal adequado conforme NR 10 e NBR 5410',
        'chk_estado_componentes'      => 'Terminais apertados, sem corrosão ou sinais de sobreaquecimento',
        'chk_iluminacao_acesso'       => 'Iluminação adequada e rotas de acesso desobstruídas',
        'chk_epi_disponivel'          => 'EPIs adequados disponíveis para intervenção no painel',
    ],
];

$pagina_titulo = 'NR 10 — Painéis Elétricos';
require_once '../1_frontend/layout.php';
?>

<div class="space-y-5">

  <!-- Cabeçalho -->
  <div class="flex items-center justify-between flex-wrap gap-3">
    <div>
      <h1 class="text-2xl font-bold text-actsafe-text flex items-center gap-2">
        <i data-lucide="zap" class="w-6 h-6 text-yellow-500"></i> NR 10 — Painéis Elétricos
      </h1>
      <p class="text-sm text-gray-500 mt-0.5">Cadastro e controle de painéis elétricos conforme NR 10</p>
    </div>
    <?php if (temPermissao('criar', $perfil)): ?>
    <a href="nr10_paineis.php?novo=1" class="btn-primary">
      <i data-lucide="plus" class="w-4 h-4"></i> Novo Painel
    </a>
    <?php endif; ?>
  </div>

  <!-- Mensagem -->
  <?php if ($msg): [$tipo_msg,$texto_msg] = explode(':', $msg, 2); ?>
  <div class="flex items-center gap-2 px-4 py-3 rounded-lg text-sm font-medium
    <?= $tipo_msg==='success' ? 'bg-green-50 border border-green-200 text-green-700' : 'bg-red-50 border border-red-200 text-red-700' ?>">
    <i data-lucide="<?= $tipo_msg==='success' ? 'check-circle' : 'alert-circle' ?>" class="w-4 h-4"></i>
    <?= sanitizar(urldecode($texto_msg)) ?>
  </div>
  <?php endif; ?>

  <!-- FORMULÁRIO DE CADASTRO/EDIÇÃO -->
  <?php if (isset($_GET['novo']) || $editando): ?>
  <div class="card border-l-4 border-yellow-400">
    <h2 class="font-semibold text-actsafe-text mb-5 flex items-center gap-2">
      <i data-lucide="<?= $editando ? 'pencil' : 'plus-circle' ?>" class="w-4 h-4 text-yellow-500"></i>
      <?= $editando ? 'Editar Painel Elétrico' : 'Novo Painel Elétrico' ?>
    </h2>
    <form method="POST" action="nr10_paineis.php">
      <input type="hidden" name="acao_form" value="salvar">
      <input type="hidden" name="id" value="<?= $editando['id'] ?? 0 ?>">

      <!-- Identificação -->
      <div class="mb-5">
        <h3 class="text-sm font-bold text-gray-600 uppercase tracking-wide mb-3 flex items-center gap-2">
          <i data-lucide="tag" class="w-4 h-4 text-yellow-500"></i> Identificação
        </h3>
        <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
          <div>
            <label class="form-label">Unidade Fabril *</label>
            <select name="unidade_id" class="form-input" required>
              <option value="">Selecione...</option>
              <?php foreach ($unidades as $u): ?>
              <option value="<?= $u['id'] ?>" <?= ($editando['unidade_id'] ?? 0) == $u['id'] ? 'selected' : '' ?>>
                <?= sanitizar($u['codigo']) ?> — <?= sanitizar($u['nome']) ?>
              </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div>
            <label class="form-label">Nome do Painel *</label>
            <input type="text" name="nome" class="form-input" placeholder="ex: Painel de Distribuição Principal"
                   value="<?= sanitizar($editando['nome'] ?? '') ?>" required>
          </div>
          <div>
            <label class="form-label">TAG</label>
            <input type="text" name="tag" class="form-input" placeholder="ex: QD-01, CCM-A"
                   value="<?= sanitizar($editando['tag'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Tipo de Painel</label>
            <select name="tipo" class="form-input">
              <?php foreach ($tipos_painel as $v => $l): ?>
              <option value="<?= $v ?>" <?= ($editando['tipo'] ?? 'distribuicao') === $v ? 'selected' : '' ?>><?= $l ?></option>
              <?php endforeach; ?>
            </select>
          </div>
          <div>
            <label class="form-label">Nível de Tensão</label>
            <select name="nivel_tensao" class="form-input">
              <?php foreach ($niveis as $v => $l): ?>
              <option value="<?= $v ?>" <?= ($editando['nivel_tensao'] ?? 'BT') === $v ? 'selected' : '' ?>><?= $v ?> — <?= $l ?></option>
              <?php endforeach; ?>
            </select>
          </div>
          <div>
            <label class="form-label">Tensão Nominal</label>
            <input type="text" name="tensao_nominal" class="form-input" placeholder="ex: 220V, 380V, 13,8kV"
                   value="<?= sanitizar($editando['tensao_nominal'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Corrente Nominal</label>
            <input type="text" name="corrente_nominal" class="form-input" placeholder="ex: 400A"
                   value="<?= sanitizar($editando['corrente_nominal'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Grau de Proteção (IP)</label>
            <input type="text" name="grau_protecao_ip" class="form-input" placeholder="ex: IP54"
                   value="<?= sanitizar($editando['grau_protecao_ip'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Fabricante</label>
            <input type="text" name="fabricante" class="form-input" placeholder="ex: WEG, Schneider"
                   value="<?= sanitizar($editando['fabricante'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Ano de Fabricação</label>
            <input type="number" name="ano_fabricacao" class="form-input" min="1950" max="<?= date('Y') ?>"
                   value="<?= $editando['ano_fabricacao'] ?? '' ?>" placeholder="ex: 2020">
          </div>
          <div>
            <label class="form-label">Responsável Técnico</label>
            <input type="text" name="responsavel_tecnico" class="form-input" placeholder="Nome do engenheiro/técnico"
                   value="<?= sanitizar($editando['responsavel_tecnico'] ?? '') ?>">
          </div>
          <div>
            <label class="form-label">Status</label>
            <select name="status" class="form-input">
              <?php foreach ($status_list as $v => $s): ?>
              <option value="<?= $v ?>" <?= ($editando['status'] ?? 'pendente_inspecao') === $v ? 'selected' : '' ?>><?= $s['label'] ?></option>
              <?php endforeach; ?>
            </select>
          </div>
          <div>
            <label class="form-label">Última Inspeção</label>
            <input type="date" name="data_ultima_inspecao" class="form-input" value="<?= $editando['data_ultima_inspecao'] ?? '' ?>">
          </div>
          <div>
            <label class="form-label">Próxima Inspeção</label>
            <input type="date" name="data_proxima_inspecao" class="form-input" value="<?= $editando['data_proxima_inspecao'] ?? '' ?>">
          </div>
          <div class="sm:col-span-2">
            <label class="form-label">Localização na Planta</label>
            <input type="text" name="localizacao" class="form-input" placeholder="ex: Sala elétrica — Bloco A, 2º andar"
                   value="<?= sanitizar($editando['localizacao'] ?? '') ?>">
          </div>
          <div class="sm:col-span-3">
            <label class="form-label">Observações</label>
            <textarea name="observacoes" class="form-input" rows="2" placeholder="Informações adicionais..."><?= sanitizar($editando['observacoes'] ?? '') ?></textarea>
          </div>
        </div>
      </div>

      <!-- Fotos do Painel -->
      <div class="mb-5">
        <h3 class="text-sm font-bold text-gray-600 uppercase tracking-wide mb-3 flex items-center gap-2">
          <i data-lucide="camera" class="w-4 h-4 text-blue-500"></i> Fotos do Painel
        </h3>
        <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
          <div class="border-2 border-dashed border-blue-300 rounded-xl p-4 text-center">
            <label class="cursor-pointer block">
              <input type="file" name="foto_1" accept="image/*" capture="environment" class="hidden">
              <div class="flex flex-col items-center gap-2">
                <i data-lucide="camera" class="w-6 h-6 text-blue-400"></i>
                <p class="text-sm font-semibold text-gray-700">Foto 1 (ex: Aberto)</p>
                <p class="text-xs text-gray-500">Clique para capturar ou selecionar</p>
              </div>
            </label>
            <input type="text" name="desc_foto_1" class="form-input mt-2 text-xs" placeholder="ex: Painel aberto">
          </div>
          <div class="border-2 border-dashed border-blue-300 rounded-xl p-4 text-center">
            <label class="cursor-pointer block">
              <input type="file" name="foto_2" accept="image/*" capture="environment" class="hidden">
              <div class="flex flex-col items-center gap-2">
                <i data-lucide="camera" class="w-6 h-6 text-blue-400"></i>
                <p class="text-sm font-semibold text-gray-700">Foto 2 (ex: Fechado)</p>
                <p class="text-xs text-gray-500">Clique para capturar ou selecionar</p>
              </div>
            </label>
            <input type="text" name="desc_foto_2" class="form-input mt-2 text-xs" placeholder="ex: Painel fechado">
          </div>
        </div>
      </div>

      <!-- Checklist NR 10 -->
      <div class="mb-5">
        <h3 class="text-sm font-bold text-gray-600 uppercase tracking-wide mb-3 flex items-center gap-2">
          <i data-lucide="clipboard-check" class="w-4 h-4 text-green-500"></i> Checklist NR 10
        </h3>
        <div class="space-y-4">
          <?php foreach ($checklist_grupos as $grupo => $itens): ?>
          <div class="border border-gray-200 rounded-xl overflow-hidden">
            <div class="bg-gray-50 px-4 py-2.5 border-b border-gray-200">
              <p class="text-sm font-semibold text-gray-700"><?= $grupo ?></p>
            </div>
            <div class="p-4 grid grid-cols-1 sm:grid-cols-2 gap-3">
              <?php foreach ($itens as $campo => $descricao): ?>
              <label class="flex items-start gap-3 cursor-pointer group">
                <input type="checkbox" name="<?= $campo ?>" value="1"
                       <?= ($editando[$campo] ?? 0) ? 'checked' : '' ?>
                       class="mt-0.5 w-4 h-4 rounded border-gray-300 text-green-600 focus:ring-green-500 flex-shrink-0">
                <span class="text-sm text-gray-600 group-hover:text-gray-900 leading-snug"><?= $descricao ?></span>
              </label>
              <?php endforeach; ?>
            </div>
          </div>
          <?php endforeach; ?>
        </div>
      </div>

      <div class="flex gap-2">
        <button type="submit" class="btn-primary"><i data-lucide="save" class="w-4 h-4"></i> Salvar Painel</button>
        <a href="nr10_paineis.php" class="btn-outline">Cancelar</a>
      </div>
    </form>
  </div>
  <?php endif; ?>

  <!-- PAINEL DE DETALHES (FOTOS) -->
  <?php if ($painel_ver): ?>
  <div class="card border-l-4 border-blue-400">
    <div class="flex items-center justify-between mb-4">
      <h2 class="font-semibold text-actsafe-text flex items-center gap-2">
        <i data-lucide="camera" class="w-4 h-4 text-blue-500"></i>
        Fotos — <?= sanitizar($painel_ver['nome']) ?>
      </h2>
      <a href="nr10_paineis.php" class="text-sm text-gray-500 hover:text-gray-700">
        <i data-lucide="x" class="w-4 h-4 inline"></i> Fechar
      </a>
    </div>

    <!-- Upload de foto -->
    <?php if (temPermissao('criar', $perfil)): ?>
    <form method="POST" action="nr10_paineis.php" enctype="multipart/form-data" class="mb-4 p-4 bg-blue-50 rounded-xl border border-blue-200">
      <input type="hidden" name="acao_form" value="upload_foto">
      <input type="hidden" name="painel_id" value="<?= $painel_ver['id'] ?>">
      <p class="text-sm font-semibold text-blue-700 mb-3 flex items-center gap-2">
        <i data-lucide="upload" class="w-4 h-4"></i> Adicionar Foto
      </p>
      <div class="flex flex-wrap gap-3 items-end">
        <div>
          <label class="form-label text-xs">Foto (câmera ou galeria)</label>
          <input type="file" name="foto" accept="image/*" capture="environment" class="form-input text-sm" required>
        </div>
        <div class="flex-1 min-w-[180px]">
          <label class="form-label text-xs">Descrição (opcional)</label>
          <input type="text" name="descricao_foto" class="form-input text-sm" placeholder="ex: Vista frontal do painel">
        </div>
        <button type="submit" class="btn-primary text-sm">
          <i data-lucide="camera" class="w-4 h-4"></i> Enviar
        </button>
      </div>
    </form>
    <?php endif; ?>

    <!-- Galeria de fotos -->
    <?php if (empty($fotos_ver)): ?>
    <div class="text-center py-8 text-gray-400">
      <i data-lucide="image" class="w-10 h-10 mx-auto mb-2 opacity-40"></i>
      <p class="text-sm">Nenhuma foto cadastrada ainda.</p>
    </div>
    <?php else: ?>
    <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
      <?php foreach ($fotos_ver as $f): ?>
      <div class="rounded-xl overflow-hidden border border-gray-200 shadow-sm">
        <img src="<?= sanitizar(UPLOAD_URL . $f['arquivo']) ?>" alt="Foto" class="w-full h-48 object-cover">
        <div class="p-2 flex items-center justify-between bg-gray-50">
          <p class="text-xs text-gray-600 truncate flex-1"><?= sanitizar($f['descricao'] ?: 'Sem descrição') ?></p>
          <?php if (temPermissao('editar', $perfil)): ?>
          <form method="POST" action="nr10_paineis.php" onsubmit="return confirm('Remover esta foto?')" class="inline ml-2">
            <input type="hidden" name="acao_form" value="remover_foto">
            <input type="hidden" name="foto_id" value="<?= $f['id'] ?>">
            <button type="submit" class="text-red-400 hover:text-red-600">
              <i data-lucide="trash-2" class="w-4 h-4"></i>
            </button>
          </form>
          <?php endif; ?>
        </div>
      </div>
      <?php endforeach; ?>
    </div>
    <?php endif; ?>
  </div>
  <?php endif; ?>

  <!-- FILTROS -->
  <form method="GET" action="nr10_paineis.php" class="flex flex-wrap gap-2">
    <select name="unidade_id" class="form-input w-auto">
      <option value="">Todas as unidades</option>
      <?php foreach ($unidades as $u): ?>
      <option value="<?= $u['id'] ?>" <?= $filtro_unidade == $u['id'] ? 'selected' : '' ?>><?= sanitizar($u['codigo']) ?> — <?= sanitizar($u['nome']) ?></option>
      <?php endforeach; ?>
    </select>
    <select name="nivel_tensao" class="form-input w-auto">
      <option value="">Todos os níveis</option>
      <?php foreach ($niveis as $v => $l): ?>
      <option value="<?= $v ?>" <?= $filtro_nivel === $v ? 'selected' : '' ?>><?= $v ?> — <?= $l ?></option>
      <?php endforeach; ?>
    </select>
    <select name="status" class="form-input w-auto">
      <option value="">Todos os status</option>
      <?php foreach ($status_list as $v => $s): ?>
      <option value="<?= $v ?>" <?= $filtro_status === $v ? 'selected' : '' ?>><?= $s['label'] ?></option>
      <?php endforeach; ?>
    </select>
    <button type="submit" class="btn-primary"><i data-lucide="filter" class="w-4 h-4"></i> Filtrar</button>
    <a href="nr10_paineis.php" class="btn-outline">Limpar</a>
  </form>

  <!-- TABELA DE PAINÉIS -->
  <?php if (empty($paineis)): ?>
  <div class="card border border-dashed border-gray-300 text-center py-14">
    <i data-lucide="zap" class="w-10 h-10 text-gray-300 mx-auto mb-3"></i>
    <p class="text-gray-500 text-sm">Nenhum painel elétrico cadastrado.</p>
    <?php if (temPermissao('criar', $perfil)): ?>
    <a href="nr10_paineis.php?novo=1" class="btn-primary mt-3 inline-flex"><i data-lucide="plus" class="w-4 h-4"></i> Cadastrar primeiro</a>
    <?php endif; ?>
  </div>
  <?php else: ?>
  <div class="card p-0 overflow-hidden">
    <div class="overflow-x-auto">
      <table class="w-full text-sm">
        <thead class="bg-gray-50 border-b border-gray-200">
          <tr>
            <th class="text-left px-4 py-3 font-semibold text-gray-600">Código / TAG</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600">Painel</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600 hidden sm:table-cell">Unidade</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600 hidden md:table-cell">Tensão</th>
            <th class="text-left px-4 py-3 font-semibold text-gray-600 hidden lg:table-cell">Checklist</th>
            <th class="text-center px-4 py-3 font-semibold text-gray-600">Status</th>
            <th class="text-center px-4 py-3 font-semibold text-gray-600">QR Code</th>
            <th class="text-center px-4 py-3 font-semibold text-gray-600">Ações</th>
          </tr>
        </thead>
        <tbody class="divide-y divide-gray-100">
          <?php foreach ($paineis as $p):
            // Calcular score do checklist
            $chk_campos = ['chk_diagrama_unifilar','chk_identificacao_circuitos','chk_sinalizacao_risco','chk_pie_atualizado','chk_laudo_aterramento','chk_rti_emitido','chk_seccionamento','chk_aterramento_neutro','chk_enclausuramento','chk_loto_implementado','chk_protecao_sobrecorrente','chk_energia_arco','chk_organizacao_interna','chk_limpeza','chk_espaco_trabalho','chk_estado_componentes','chk_iluminacao_acesso','chk_epi_disponivel'];
            $chk_ok = 0;
            foreach ($chk_campos as $c) if ($p[$c]) $chk_ok++;
            $chk_total = count($chk_campos);
            $chk_pct = $chk_total > 0 ? round($chk_ok / $chk_total * 100) : 0;
            $chk_cor = $chk_pct >= 80 ? 'bg-green-500' : ($chk_pct >= 50 ? 'bg-yellow-400' : 'bg-red-400');
            $st = $status_list[$p['status']] ?? ['label' => $p['status'], 'cor' => 'bg-gray-100 text-gray-600 border-gray-200'];
          ?>
          <tr class="table-row">
            <td class="px-4 py-3">
              <p class="font-mono font-bold text-actsafe-blue text-xs"><?= sanitizar($p['codigo']) ?></p>
              <?php if ($p['tag']): ?>
              <p class="text-xs text-gray-400">TAG: <?= sanitizar($p['tag']) ?></p>
              <?php endif; ?>
            </td>
            <td class="px-4 py-3">
              <p class="font-medium text-actsafe-text"><?= sanitizar($p['nome']) ?></p>
              <p class="text-xs text-gray-400"><?= $tipos_painel[$p['tipo']] ?? $p['tipo'] ?></p>
            </td>
            <td class="px-4 py-3 hidden sm:table-cell">
              <span class="bg-actsafe-blue/10 text-actsafe-blue text-xs font-bold px-2 py-0.5 rounded-md"><?= sanitizar($p['unidade_codigo']) ?></span>
            </td>
            <td class="px-4 py-3 hidden md:table-cell">
              <span class="text-xs font-bold px-2 py-0.5 rounded <?= $p['nivel_tensao']==='AT' ? 'bg-red-100 text-red-700' : ($p['nivel_tensao']==='MT' ? 'bg-orange-100 text-orange-700' : 'bg-blue-100 text-blue-700') ?>">
                <?= $p['nivel_tensao'] ?>
              </span>
              <?php if ($p['tensao_nominal']): ?>
              <p class="text-xs text-gray-400 mt-0.5"><?= sanitizar($p['tensao_nominal']) ?></p>
              <?php endif; ?>
            </td>
            <td class="px-4 py-3 hidden lg:table-cell">
              <div class="flex items-center gap-2">
                <div class="flex-1 bg-gray-200 rounded-full h-1.5 max-w-[80px]">
                  <div class="h-1.5 rounded-full <?= $chk_cor ?>" style="width:<?= $chk_pct ?>%"></div>
                </div>
                <span class="text-xs text-gray-500"><?= $chk_ok ?>/<?= $chk_total ?></span>
              </div>
            </td>
            <td class="px-4 py-3 text-center">
              <span class="badge-status <?= $st['cor'] ?> border text-xs px-2 py-0.5 rounded-full font-semibold"><?= $st['label'] ?></span>
            </td>
            <td class="px-4 py-3 text-center">
              <?php if ($p['qr_codigo']): ?>
                <?php $url_qr = APP_URL . '/equipamento_qr.php?codigo=' . $p['qr_codigo'] . '&tipo=nr10_painel'; ?>
                <button onclick="mostrarQR('<?= sanitizar($url_qr) ?>', '<?= sanitizar($p['nome']) ?>', '<?= sanitizar($p['qr_codigo']) ?>')"
                        class="inline-flex items-center gap-1 text-xs bg-yellow-50 hover:bg-yellow-100 text-yellow-700 border border-yellow-200 px-2 py-1 rounded" title="Ver QR Code">
                  <i data-lucide="qr-code" class="w-3.5 h-3.5"></i> QR
                </button>
              <?php else: ?>
                <a href="nr10_paineis.php?gerar_qr=<?= $p['id'] ?>" class="text-xs text-blue-500 hover:underline">Gerar</a>
              <?php endif; ?>
            </td>
            <td class="px-4 py-3 text-center">
              <div class="flex items-center justify-center gap-2">
                <a href="nr10_paineis.php?ver=<?= $p['id'] ?>" class="text-blue-500 hover:text-blue-700" title="Fotos (<?= $p['total_fotos'] ?>)">
                  <i data-lucide="camera" class="w-4 h-4"></i>
                  <?php if ($p['total_fotos'] > 0): ?>
                  <span class="text-xs"><?= $p['total_fotos'] ?></span>
                  <?php endif; ?>
                </a>
                <?php if (temPermissao('editar', $perfil)): ?>
                <a href="nr10_paineis.php?editar=<?= $p['id'] ?>" class="text-actsafe-blue hover:text-actsafe-dark" title="Editar">
                  <i data-lucide="pencil" class="w-4 h-4"></i>
                </a>
                <?php endif; ?>
                <?php if (temPermissao('excluir', $perfil)): ?>
                <form method="POST" action="nr10_paineis.php" onsubmit="return confirmarExclusao(this)" class="inline">
                  <input type="hidden" name="acao_form" value="excluir">
                  <input type="hidden" name="id" value="<?= $p['id'] ?>">
                  <button type="submit" class="text-red-400 hover:text-red-600" title="Excluir">
                    <i data-lucide="trash-2" class="w-4 h-4"></i>
                  </button>
                </form>
                <?php endif; ?>
              </div>
            </td>
          </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    </div>
    <div class="px-4 py-2 bg-gray-50 border-t border-gray-100 text-xs text-gray-500">
      <?= count($paineis) ?> painel(is) encontrado(s)
    </div>
  </div>
  <?php endif; ?>
</div>

<!-- Biblioteca QR Code -->
<script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>

<!-- MODAL: QR CODE -->
<div id="modal-qrcode" class="hidden fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4">
  <div class="bg-white rounded-xl max-w-sm w-full p-6 text-center">
    <div class="flex items-center justify-between mb-4">
      <h2 class="text-lg font-bold text-actsafe-text" id="qr-titulo">QR Code</h2>
      <button onclick="fecharQR()" class="text-gray-400 hover:text-gray-600">
        <i data-lucide="x" class="w-5 h-5"></i>
      </button>
    </div>
    <div id="qrcode-container" class="flex justify-center mb-4"></div>
    <p class="text-xs text-gray-500 mb-1">Código: <span id="qr-codigo" class="font-mono font-bold"></span></p>
    <p class="text-xs text-gray-400 break-all" id="qr-url"></p>
    <div class="flex gap-2 mt-4 justify-center">
      <button onclick="imprimirQR()" class="btn-primary text-sm">
        <i data-lucide="printer" class="w-4 h-4"></i> Imprimir
      </button>
      <button onclick="fecharQR()" class="btn-outline text-sm">Fechar</button>
    </div>
  </div>
</div>

<script>
function mostrarQR(url, nome, codigo) {
  document.getElementById('qr-titulo').textContent = nome;
  document.getElementById('qr-codigo').textContent = codigo;
  document.getElementById('qr-url').textContent = url;
  const container = document.getElementById('qrcode-container');
  container.innerHTML = '';
  new QRCode(container, {
    text: url, width: 200, height: 200,
    colorDark: '#0F4C81', colorLight: '#ffffff',
    correctLevel: QRCode.CorrectLevel.H
  });
  document.getElementById('modal-qrcode').classList.remove('hidden');
  lucide.createIcons();
}
function fecharQR() {
  document.getElementById('modal-qrcode').classList.add('hidden');
}
function imprimirQR() {
  const nome = document.getElementById('qr-titulo').textContent;
  const codigo = document.getElementById('qr-codigo').textContent;
  const url = document.getElementById('qr-url').textContent;
  const canvas = document.querySelector('#qrcode-container canvas');
  const imgData = canvas ? canvas.toDataURL() : '';
  const win = window.open('', '_blank');
  win.document.write(`
    <html><head><title>QR Code - ${nome}</title>
    <style>
      body{font-family:Arial,sans-serif;text-align:center;padding:40px;}
      h2{color:#0F4C81;margin-bottom:4px;} .sub{color:#F26419;font-size:13px;margin-bottom:20px;}
      img{border:2px solid #0F4C81;border-radius:8px;padding:8px;}
      .nome{font-size:16px;font-weight:bold;color:#2C3E50;margin-top:16px;}
      .cod{font-family:monospace;font-size:14px;color:#0F4C81;margin-top:4px;}
      .url{font-size:9px;color:#999;margin-top:8px;word-break:break-all;}
    </style></head><body>
    <h2>ERP - ActSafe</h2>
    <div class="sub">NR 10 — Painel Elétrico</div>
    <img src="${imgData}" style="width:200px;height:200px;">
    <div class="nome">${nome}</div>
    <div class="cod">Código: ${codigo}</div>
    <div class="url">${url}</div>
    <script>window.print();window.close();<\/script>
    </body></html>
  `);
  win.document.close();
}
</script>

<?php require_once '../1_frontend/layout_footer.php'; ?>
