<?php
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];
$msg = '';
Auditoria::inicializar($db, $usuario['id'], $usuario['nome'], $usuario['perfil']);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $acao_form = $_POST['acao_form'] ?? '';

    if ($acao_form === 'upload' && temPermissao('criar', $perfil)) {
        $unidade_id  = intval($_POST['unidade_id'] ?? 0);
        $categoria   = limpar($_POST['categoria'] ?? '');
        $nome        = limpar($_POST['nome'] ?? '');
        $descricao   = limpar($_POST['descricao'] ?? '');
        $data_venc   = $_POST['data_vencimento'] ?: null;

        if ($unidade_id && $categoria && $nome && isset($_FILES['arquivo']) && $_FILES['arquivo']['error'] === UPLOAD_ERR_OK) {
            $file = $_FILES['arquivo'];
            $ext  = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));

            if (!in_array($ext, ALLOWED_EXTENSIONS)) {
                $msg = 'error:Tipo de arquivo não permitido. Use: ' . implode(', ', ALLOWED_EXTENSIONS);
            } elseif ($file['size'] > MAX_UPLOAD_MB * 1024 * 1024) {
                $msg = 'error:Arquivo muito grande. Máximo: ' . MAX_UPLOAD_MB . 'MB';
            } else {
                $nome_arquivo = uniqid('doc_') . '_' . time() . '.' . $ext;
                $destino = UPLOAD_DIR . $nome_arquivo;

                if (!is_dir(UPLOAD_DIR)) mkdir(UPLOAD_DIR, 0755, true);

                if (move_uploaded_file($file['tmp_name'], $destino)) {
                    $db->prepare("INSERT INTO documentos (unidade_id,categoria,nome,descricao,arquivo,mime_type,tamanho_kb,data_vencimento,enviado_por) VALUES (?,?,?,?,?,?,?,?,?)")
                       ->execute([$unidade_id,$categoria,$nome,$descricao,$nome_arquivo,$file['type'],round($file['size']/1024),$data_venc,$usuario['id']]);
                    $doc_novo_id = (int)$db->lastInsertId();
                    Auditoria::criar('documentos', $doc_novo_id, ['nome'=>$nome,'categoria'=>$categoria,'unidade_id'=>$unidade_id,'arquivo'=>$nome_arquivo], "Documento enviado: $nome");
                    $msg = 'success:Documento enviado com sucesso!';
                } else {
                    $msg = 'error:Erro ao salvar o arquivo. Verifique as permissões da pasta uploads.';
                }
            }
        } else {
            $msg = 'error:Preencha todos os campos e selecione um arquivo.';
        }
    } elseif ($acao_form === 'excluir' && temPermissao('excluir', $perfil)) {
        $id = intval($_POST['id'] ?? 0);
        if ($id > 0) {
            $doc = $db->prepare("SELECT arquivo, nome FROM documentos WHERE id=?");
            $doc->execute([$id]); $d = $doc->fetch();
            if ($d && file_exists(UPLOAD_DIR . $d['arquivo'])) unlink(UPLOAD_DIR . $d['arquivo']);
            $db->prepare("DELETE FROM documentos WHERE id=?")->execute([$id]);
            Auditoria::deletar('documentos', $id, $d ?: [], "Documento excluído: " . ($d['nome'] ?? 'ID '.$id));
            $msg = 'success:Documento removido!';
        }
    }
}

$filtro_unidade  = intval($_GET['unidade_id'] ?? 0);
$filtro_categoria = sanitizar($_GET['categoria'] ?? '');
$unidades = $db->query("SELECT id,codigo,nome FROM unidades WHERE ativo=1 ORDER BY nome")->fetchAll();

$where = ['1=1']; $params = [];
if ($filtro_unidade)   { $where[] = 'd.unidade_id=?';  $params[] = $filtro_unidade; }
if ($filtro_categoria) { $where[] = 'd.categoria=?';   $params[] = $filtro_categoria; }
$sql = "SELECT d.*, u.nome AS unidade_nome, u.codigo AS unidade_codigo FROM documentos d LEFT JOIN unidades u ON u.id=d.unidade_id WHERE " . implode(' AND ', $where) . " ORDER BY d.criado_em DESC";
$stmt = $db->prepare($sql); $stmt->execute($params);
$documentos = $stmt->fetchAll();

$categorias = [
    'PIE'=>'PIE — Prontuário de Instalações',
    'RTI'=>'RTI — Relatório Técnico de Inspeção',
    'laudo_spda'=>'Laudo SPDA',
    'laudo_nr12'=>'Laudo NR 12',
    'certificado_nr10'=>'Certificado NR 10',
    'diagrama_unifilar'=>'Diagrama Unifilar',
    'procedimento'=>'Procedimento Operacional',
    'certificado_treinamento'=>'Certificado de Treinamento',
    'outro'=>'Outro',
];

$pagina_titulo = 'Documentos';
require_once '../1_frontend/layout.php';
?>

<div class="space-y-5">
  <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="file-text" class="w-6 h-6 text-actsafe-blue"></i> Gestão Documental
      </h1>
      <p class="text-sm text-gray-500 mt-0.5">PIE, RTI, Laudos, Certificados e Diagramas</p>
    </div>
    <?php if (temPermissao('criar', $perfil)): ?>
    <button onclick="document.getElementById('form-upload').classList.toggle('hidden')" class="btn-primary">
      <i data-lucide="upload" class="w-4 h-4"></i> Enviar Documento
    </button>
    <?php endif; ?>
  </div>

  <?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($texto_msg) ?>
  </div>
  <?php endif; ?>

  <!-- Formulário de Upload -->
  <div id="form-upload" class="<?= (isset($_GET['novo']) || strpos($msg ?? '', 'error') !== false) ? '' : 'hidden' ?> card border-l-4 border-actsafe-blue">
    <h2 class="font-semibold text-actsafe-text mb-4 flex items-center gap-2">
      <i data-lucide="upload-cloud" class="w-4 h-4 text-actsafe-blue"></i> Enviar Novo Documento
    </h2>
    <form method="POST" action="documentos.php" enctype="multipart/form-data">
      <input type="hidden" name="acao_form" value="upload">
      <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'] ?>"><?= sanitizar($u['codigo']) ?> — <?= sanitizar($u['nome']) ?></option>
            <?php endforeach; ?>
          </select>
        </div>
        <div>
          <label class="form-label">Categoria *</label>
          <select name="categoria" class="form-input" required>
            <option value="">Selecione...</option>
            <?php foreach ($categorias as $v => $l): ?>
            <option value="<?= $v ?>"><?= $l ?></option>
            <?php endforeach; ?>
          </select>
        </div>
        <div>
          <label class="form-label">Nome do Documento *</label>
          <input type="text" name="nome" class="form-input" placeholder="ex: Laudo de Aterramento 2026" required>
        </div>
        <div>
          <label class="form-label">Data de Vencimento</label>
          <input type="date" name="data_vencimento" class="form-input">
        </div>
        <div>
          <label class="form-label">Arquivo * (máx. <?= MAX_UPLOAD_MB ?>MB)</label>
          <input type="file" name="arquivo" class="form-input py-1.5" accept=".pdf,.doc,.docx,.xls,.xlsx,.png,.jpg,.jpeg" required>
        </div>
        <div class="sm:col-span-3">
          <label class="form-label">Descrição</label>
          <textarea name="descricao" class="form-input" rows="2" placeholder="Informações adicionais sobre o documento..."></textarea>
        </div>
      </div>
      <div class="flex gap-2 mt-4">
        <button type="submit" class="btn-primary"><i data-lucide="upload-cloud" class="w-4 h-4"></i> Enviar Documento</button>
        <button type="button" onclick="document.getElementById('form-upload').classList.add('hidden')" class="btn-outline">Cancelar</button>
      </div>
    </form>
  </div>

  <!-- Filtros -->
  <form method="GET" action="documentos.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="categoria" class="form-input w-auto">
      <option value="">Todas as categorias</option>
      <?php foreach ($categorias as $v => $l): ?>
      <option value="<?= $v ?>" <?= $filtro_categoria === $v ? 'selected' : '' ?>><?= $l ?></option>
      <?php endforeach; ?>
    </select>
    <button type="submit" class="btn-primary"><i data-lucide="filter" class="w-4 h-4"></i> Filtrar</button>
    <a href="documentos.php" class="btn-outline">Limpar</a>
  </form>

  <!-- Lista de Documentos -->
  <?php if (empty($documentos)): ?>
  <div class="card border border-dashed border-gray-300 text-center py-14">
    <i data-lucide="file-text" class="w-10 h-10 text-gray-300 mx-auto mb-3"></i>
    <p class="text-gray-500 text-sm">Nenhum documento enviado ainda.</p>
  </div>
  <?php else: ?>
  <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
    <?php foreach ($documentos as $doc):
      $ext = strtolower(pathinfo($doc['arquivo'], PATHINFO_EXTENSION));
      $icon = in_array($ext, ['jpg','jpeg','png','gif']) ? 'image' : ($ext === 'pdf' ? 'file-type' : 'file-spreadsheet');
      $sv = statusVencimento($doc['data_vencimento']);
    ?>
    <div class="card hover:shadow-md transition-shadow">
      <div class="flex items-start gap-3">
        <div class="w-10 h-10 rounded-xl bg-actsafe-blue/10 flex items-center justify-center flex-shrink-0">
          <i data-lucide="<?= $icon ?>" class="w-5 h-5 text-actsafe-blue"></i>
        </div>
        <div class="flex-1 min-w-0">
          <p class="font-semibold text-actsafe-text text-sm truncate"><?= sanitizar($doc['nome']) ?></p>
          <p class="text-xs text-gray-400 mt-0.5"><?= $categorias[$doc['categoria']] ?? $doc['categoria'] ?></p>
          <p class="text-xs text-gray-400"><?= sanitizar($doc['unidade_codigo']) ?> · <?= round($doc['tamanho_kb'] / 1024, 1) ?: $doc['tamanho_kb'] ?>
            <?= $doc['tamanho_kb'] > 1024 ? 'MB' : 'KB' ?></p>
        </div>
      </div>
      <?php if ($doc['data_vencimento']): ?>
      <div class="mt-2 flex items-center gap-1.5 text-xs <?= $sv==='vencido' ? 'text-red-600' : ($sv==='vencendo' ? 'text-yellow-600' : 'text-gray-500') ?>">
        <i data-lucide="calendar" class="w-3 h-3"></i>
        Vence: <?= formatarData($doc['data_vencimento']) ?>
        <?php if ($sv==='vencido'): ?><span class="badge-status badge-atrasada">Vencido</span><?php endif; ?>
        <?php if ($sv==='vencendo'): ?><span class="badge-status badge-pendente">Vencendo</span><?php endif; ?>
      </div>
      <?php endif; ?>
      <div class="flex items-center gap-2 mt-3 pt-3 border-t border-gray-100">
        <a href="<?= UPLOAD_URL . sanitizar($doc['arquivo']) ?>" target="_blank" class="btn-outline text-xs py-1 px-2 flex-1 justify-center">
          <i data-lucide="download" class="w-3.5 h-3.5"></i> Baixar
        </a>
        <?php if (temPermissao('excluir', $perfil)): ?>
        <form method="POST" action="documentos.php" onsubmit="return confirmarExclusao(this)" class="inline">
          <input type="hidden" name="acao_form" value="excluir">
          <input type="hidden" name="id" value="<?= $doc['id'] ?>">
          <button type="submit" class="text-red-400 hover:text-red-600 p-1" title="Excluir">
            <i data-lucide="trash-2" class="w-4 h-4"></i>
          </button>
        </form>
        <?php endif; ?>
      </div>
    </div>
    <?php endforeach; ?>
  </div>
  <p class="text-xs text-gray-400"><?= count($documentos) ?> documento(s) encontrado(s)</p>
  <?php endif; ?>
</div>

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