<?php
header('Content-Type: application/json');
ini_set('display_errors', 0);
error_reporting(0);

// CORREÇÃO: Caminho correto voltando um nível
require_once __DIR__ . '/../includes/funcoes.php';

// Verificar conexão com o banco
$pdo = conectarBanco();
if (!$pdo) {
    retornarJson(['sucesso' => false, 'erro' => 'Erro na conexão com o banco de dados'], 500);
}

// Pegar parâmetros
$empresa_id = isset($_GET['empresa_id']) ? (int)$_GET['empresa_id'] : 0;
$busca = isset($_GET['q']) ? trim($_GET['q']) : '';

if ($empresa_id <= 0) {
    retornarJson(['sucesso' => false, 'erro' => 'Empresa não informada'], 400);
}

// Verificar se a tabela empresa_servicos existe
try {
    $tabelaExiste = $pdo->query("SHOW TABLES LIKE 'empresa_servicos'")->rowCount() > 0;
    
    if (!$tabelaExiste) {
        // Criar tabela se não existir
        $pdo->exec("
            CREATE TABLE IF NOT EXISTS `empresa_servicos` (
                `id` INT AUTO_INCREMENT PRIMARY KEY,
                `empresa_id` INT NOT NULL,
                `codigo` VARCHAR(20) NOT NULL,
                `descricao` TEXT NOT NULL,
                `cnae` VARCHAR(20) DEFAULT NULL,
                `aliquota_iss` DECIMAL(5,2) DEFAULT NULL,
                `tributacao` ENUM('simples', 'normal', 'isento', 'imune') DEFAULT 'simples',
                `status` ENUM('ativo', 'inativo') DEFAULT 'ativo',
                `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                UNIQUE KEY `uk_empresa_codigo` (`empresa_id`, `codigo`),
                INDEX `idx_empresa` (`empresa_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
        ");
        
        // Inserir serviços padrão para a empresa
        $servicosPadrao = [
            ['3811400', 'Coleta de resíduos não-perigosos', '38.11-4-00', 2.00],
            ['3812200', 'Coleta de resíduos perigosos', '38.12-2-00', 2.00],
            ['3821100', 'Tratamento e disposição de resíduos não-perigosos', '38.21-1-00', 2.00],
            ['3822000', 'Tratamento e disposição de resíduos perigosos', '38.22-0-00', 2.00],
            ['3839401', 'Usinas de compostagem', '38.39-4-01', 2.00],
            ['4313400', 'Obras de terraplenagem', '43.13-4-00', 2.00],
            ['4930201', 'Transporte rodoviário de carga municipal', '49.30-2-01', 2.00],
            ['4930202', 'Transporte rodoviário de carga intermunicipal', '49.30-2-02', 2.00],
            ['5212500', 'Carga e descarga', '52.12-5-00', 2.00],
            ['5223100', 'Estacionamento de veículos', '52.23-1-00', 2.00],
            ['8111700', 'Serviços combinados para apoio a edifícios', '81.11-7-00', 2.00],
            ['8121400', 'Limpeza em prédios e domicílios', '81.21-4-00', 2.00],
            ['010701', 'Serviços de Tecnologia da Informação - TIC', null, 2.00],
            ['010702', 'Desenvolvimento de software', null, 2.00],
            ['061001', 'Serviços de consultoria e assessoria', null, 2.00],
            ['170211', 'Serviços de limpeza e conservação', null, 2.00],
        ];
        
        $stmt = $pdo->prepare("
            INSERT IGNORE INTO empresa_servicos (empresa_id, codigo, descricao, cnae, aliquota_iss, status)
            VALUES (?, ?, ?, ?, ?, 'ativo')
        ");
        
        foreach ($servicosPadrao as $servico) {
            $stmt->execute([$empresa_id, $servico[0], $servico[1], $servico[2], $servico[3]]);
        }
    }
    
    // Buscar serviços da empresa
    if (!empty($busca)) {
        $stmt = $pdo->prepare("
            SELECT id, codigo, descricao, cnae, aliquota_iss, tributacao, status
            FROM empresa_servicos 
            WHERE empresa_id = ? AND status = 'ativo' 
            AND (codigo LIKE :busca OR descricao LIKE :busca)
            ORDER BY codigo 
            LIMIT 50
        ");
        $buscaLike = "%{$busca}%";
        $stmt->bindValue(':busca', $buscaLike);
        $stmt->bindValue(':empresa_id', $empresa_id);
        $stmt->execute();
    } else {
        $stmt = $pdo->prepare("
            SELECT id, codigo, descricao, cnae, aliquota_iss, tributacao, status
            FROM empresa_servicos 
            WHERE empresa_id = ? AND status = 'ativo' 
            ORDER BY codigo 
            LIMIT 100
        ");
        $stmt->execute([$empresa_id]);
    }
    
    $servicos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Se não tiver serviços cadastrados, retornar mensagem amigável
    if (count($servicos) === 0) {
        retornarJson([
            'sucesso' => true,
            'total' => 0,
            'itens' => [],
            'mensagem' => 'Nenhum serviço cadastrado para esta empresa. Cadastre serviços no menu Gerenciar Serviços.'
        ]);
    } else {
        retornarJson([
            'sucesso' => true,
            'total' => count($servicos),
            'itens' => $servicos
        ]);
    }
    
} catch (PDOException $e) {
    retornarJson([
        'sucesso' => false, 
        'erro' => 'Erro ao buscar serviços: ' . $e->getMessage()
    ], 500);
}
?>