<?php
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];

if (!temPermissao('criar', $perfil)) {
    die(json_encode(['erro' => 'Acesso negado']));
}

$data = json_decode(file_get_contents('php://input'), true);
$unidade_id = intval($data['unidade_id'] ?? 0);
$novos = $data['novos'] ?? [];
$atualizacoes = $data['atualizacoes'] ?? [];

if (!$unidade_id || !temAcessoUnidade($unidade_id, $usuario['id'], $perfil)) {
    die(json_encode(['erro' => 'Unidade inválida']));
}

$resultado = [
    'criados' => 0,
    'atualizados' => 0,
    'erros' => []
];

// Processar novos equipamentos
foreach ($novos as $item) {
    try {
        $tag = trim($item['tag'] ?? '');
        $nome = trim($item['nome'] ?? '');
        
        if (!$tag || !$nome) {
            $resultado['erros'][] = "Linha {$item['linha']}: TAG ou Nome vazios";
            continue;
        }
        
        // Verificar novamente se não foi criado por outro usuário
        $stmt = $db->prepare("SELECT id FROM equipamentos WHERE tag = ? AND unidade_id = ?");
        $stmt->execute([$tag, $unidade_id]);
        if ($stmt->fetch()) {
            $resultado['erros'][] = "Linha {$item['linha']}: TAG `$tag` já existe";
            continue;
        }
        
        // Criar novo equipamento
        $db->prepare("INSERT INTO equipamentos (unidade_id, cod, tag, nome, familia, cat_risco, proj_conceito, execucao, procedimento, validacao, laudos, data_inicio, data_prev_conclusao, observacoes) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
           ->execute([
               $unidade_id,
               'TEMP',
               $tag,
               $nome,
               $item['familia'] ?? '',
               $item['cat_risco'] ?? '',
               $item['proj_conceito'] ?? 0,
               $item['execucao'] ?? 0,
               $item['procedimento'] ?? 0,
               $item['validacao'] ?? 0,
               $item['laudos'] ?? 0,
               $item['data_inicio'] ?: null,
               $item['data_prev_conclusao'] ?: null,
               $item['observacoes'] ?? ''
           ]);
        
        $novo_id = $db->lastInsertId();
        
        // Gerar código automático
        $cod_auto = 'EQ-' . str_pad($novo_id, 4, '0', STR_PAD_LEFT);
        $db->prepare("UPDATE equipamentos SET cod = ? WHERE id = ?")->execute([$cod_auto, $novo_id]);
        
        // Gerar QR Code
        $codigo_qr = 'EQ' . str_pad($novo_id, 6, '0', STR_PAD_LEFT);
        $url_qr = APP_URL . '/equipamento_qr.php?codigo=' . $codigo_qr . '&tipo=nr12';
        $db->prepare("INSERT IGNORE INTO equipamento_qrcodes (equipamento_id, codigo_unico, url_publica) VALUES (?, ?, ?)")
           ->execute([$novo_id, $codigo_qr, $url_qr]);
        
        Auditoria::criar('equipamentos', (int)$novo_id, 
            ['tag' => $tag, 'nome' => $nome, 'cod' => $cod_auto],
            "Equipamento NR12 importado: $nome ($tag)");
        
        $resultado['criados']++;
    } catch (Exception $e) {
        $resultado['erros'][] = "Linha {$item['linha']}: " . $e->getMessage();
    }
}

// Processar atualizações
foreach ($atualizacoes as $item) {
    try {
        $id = intval($item['id'] ?? 0);
        if (!$id) continue;
        
        $db->prepare("UPDATE equipamentos SET nome = ?, familia = ?, cat_risco = ?, proj_conceito = ?, execucao = ?, procedimento = ?, validacao = ?, laudos = ?, data_inicio = ?, data_prev_conclusao = ?, observacoes = ? WHERE id = ? AND unidade_id = ?")
           ->execute([
               $item['nome'] ?? '',
               $item['familia'] ?? '',
               $item['cat_risco'] ?? '',
               $item['proj_conceito'] ?? 0,
               $item['execucao'] ?? 0,
               $item['procedimento'] ?? 0,
               $item['validacao'] ?? 0,
               $item['laudos'] ?? 0,
               $item['data_inicio'] ?: null,
               $item['data_prev_conclusao'] ?: null,
               $item['observacoes'] ?? '',
               $id,
               $unidade_id
           ]);
        
        Auditoria::atualizar('equipamentos', $id, 
            ['nome' => $item['nome_antigo'] ?? ''],
            ['nome' => $item['nome'] ?? ''],
            "Equipamento NR12 atualizado via importação");
        
        $resultado['atualizados']++;
    } catch (Exception $e) {
        $resultado['erros'][] = "ID {$item['id']}: " . $e->getMessage();
    }
}

header('Content-Type: application/json; charset=utf-8');
echo json_encode($resultado);
exit;
?>
