<?php
// scripts/setup.php

define('BASE_PATH', dirname(dirname(__FILE__)));

echo "🚀 CONFIGURAÇÃO DO SISTEMA DE NEWSLETTER\n";
echo "=========================================\n\n";

// Verificar PHP
echo "📋 Verificando requisitos do sistema...\n";

if (version_compare(PHP_VERSION, '7.4.0', '<')) {
    echo "❌ PHP 7.4+ é necessário. Versão atual: " . PHP_VERSION . "\n";
    exit(1);
}
echo "✅ PHP " . PHP_VERSION . " - OK\n";

// Verificar extensões
$required_extensions = ['json', 'curl', 'mbstring', 'openssl', 'pdo', 'pdo_mysql'];
foreach ($required_extensions as $ext) {
    if (!extension_loaded($ext)) {
        echo "❌ Extensão PHP '$ext' não encontrada\n";
        exit(1);
    }
}
echo "✅ Extensões PHP - OK\n";

// Verificar Composer
if (!file_exists(BASE_PATH . '/vendor/autoload.php')) {
    echo "❌ Dependências não instaladas. Execute: composer install\n";
    exit(1);
}
echo "✅ Dependências do Composer - OK\n";

// Criar diretórios necessários
echo "\n📁 Criando estrutura de diretórios...\n";

$directories = [
    BASE_PATH . '/logs',
    BASE_PATH . '/cache',
    BASE_PATH . '/uploads',
    BASE_PATH . '/uploads/newsletters',
    BASE_PATH . '/templates',
    BASE_PATH . '/templates/email'
];

foreach ($directories as $dir) {
    if (!is_dir($dir)) {
        if (mkdir($dir, 0755, true)) {
            echo "✅ Criado: " . basename($dir) . "\n";
        } else {
            echo "❌ Erro ao criar: $dir\n";
        }
    } else {
        echo "✅ Existe: " . basename($dir) . "\n";
    }
}

// Verificar permissões
echo "\n🔐 Verificando permissões...\n";

$writable_dirs = [
    BASE_PATH . '/logs',
    BASE_PATH . '/cache',
    BASE_PATH . '/uploads'
];

foreach ($writable_dirs as $dir) {
    if (is_writable($dir)) {
        echo "✅ Escrita OK: " . basename($dir) . "\n";
    } else {
        echo "❌ Sem permissão de escrita: $dir\n";
        echo "   Execute: chmod 755 $dir\n";
    }
}

// Criar arquivo .htaccess para segurança
echo "\n🛡️  Configurando segurança...\n";

$htaccess_content = "# Proteger arquivos sensíveis
<Files \"*.log\">
    Order allow,deny
    Deny from all
</Files>

<Files \"config.php\">
    Order allow,deny
    Deny from all
</Files>

<Files \"email-config.php\">
    Order allow,deny
    Deny from all
</Files>

# Proteger diretório vendor
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} vendor/
    RewriteRule ^(.*)$ - [F,L]
</IfModule>

# Cabeçalhos de segurança
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options DENY
    Header always set X-XSS-Protection \"1; mode=block\"
</IfModule>";

$htaccess_file = BASE_PATH . '/.htaccess';
if (!file_exists($htaccess_file)) {
    if (file_put_contents($htaccess_file, $htaccess_content)) {
        echo "✅ Arquivo .htaccess criado\n";
    } else {
        echo "❌ Erro ao criar .htaccess\n";
    }
} else {
    echo "✅ Arquivo .htaccess já existe\n";
}

// Verificar configuração do banco de dados
echo "\n🗄️  Verificando banco de dados...\n";

try {
    require_once BASE_PATH . '/includes/config.php';
    require_once BASE_PATH . '/includes/db.php';
    
    // Testar conexão
    $db->query("SELECT 1");
    $db->execute();
    echo "✅ Conexão com banco de dados - OK\n";
    
    // Verificar se tabelas existem
    $tables = [
        'newsletter_subscribers',
        'newsletter_campaigns', 
        'newsletter_tracking',
        'admins'
    ];
    
    foreach ($tables as $table) {
        if ($db->tableExists($table)) {
            echo "✅ Tabela '$table' - OK\n";
        } else {
            echo "❌ Tabela '$table' não encontrada\n";
            echo "   Execute o script SQL de instalação\n";
        }
    }
    
} catch (Exception $e) {
    echo "❌ Erro no banco de dados: " . $e->getMessage() . "\n";
    echo "   Verifique as configurações em config.php\n";
}

// Verificar configuração de email
echo "\n📧 Verificando configuração de email...\n";

try {
    require_once BASE_PATH . '/includes/email-config.php';
    
    if (SMTP_PASSWORD === 'SUA_SENHA_AQUI') {
        echo "⚠️  Configure a senha SMTP em email-config.php\n";
    } else {
        echo "✅ Configuração SMTP - OK\n";
    }
    
    echo "   Host: " . SMTP_HOST . "\n";
    echo "   Port: " . SMTP_PORT . "\n";
    echo "   User: " . SMTP_USERNAME . "\n";
    
} catch (Exception $e) {
    echo "❌ Erro na configuração de email: " . $e->getMessage() . "\n";
}

// Criar arquivo de exemplo para configuração
$config_example = BASE_PATH . '/includes/email-config.example.php';
if (!file_exists($config_example)) {
    $example_content = "<?php
// includes/email-config.example.php
// COPIE ESTE ARQUIVO PARA email-config.php E CONFIGURE

define('SMTP_HOST', 'mail.lebeh.com.br');
define('SMTP_PORT', 465);
define('SMTP_USERNAME', 'contacto@lebeh.com.br');
define('SMTP_PASSWORD', 'SUA_SENHA_REAL_AQUI'); // <- CONFIGURE AQUI
define('SMTP_ENCRYPTION', 'ssl');
define('SMTP_FROM_EMAIL', 'contacto@lebeh.com.br');
define('SMTP_FROM_NAME', SITE_NAME);
";
    
    file_put_contents($config_example, $example_content);
    echo "✅ Arquivo de exemplo criado: email-config.example.php\n";
}

// Resumo final
echo "\n🎯 RESUMO DA INSTALAÇÃO\n";
echo "======================\n";

$issues = [];

// Verificar problemas
if (!is_writable(BASE_PATH . '/logs')) {
    $issues[] = "Sem permissão de escrita em /logs";
}

if (!file_exists(BASE_PATH . '/includes/email-config.php')) {
    $issues[] = "Arquivo email-config.php não encontrado";
}

try {
    $db->query("SELECT 1");
    $db->execute();
} catch (Exception $e) {
    $issues[] = "Problema na conexão com banco de dados";
}

if (empty($issues)) {
    echo "✅ Sistema configurado com sucesso!\n\n";
    echo "🚀 Próximos passos:\n";
    echo "   1. Configure a senha SMTP em email-config.php\n";
    echo "   2. Execute: php scripts/test-email.php\n";
    echo "   3. Teste o formulário de inscrição\n";
    echo "   4. Acesse o painel admin para gerenciar newsletter\n\n";
} else {
    echo "⚠️  Problemas encontrados:\n";
    foreach ($issues as $issue) {
        echo "   • $issue\n";
    }
    echo "\n   Resolva estes problemas antes de continuar.\n\n";
}

echo "📚 Documentação:\n";
echo "   - Logs: " . BASE_PATH . "/logs/\n";
echo "   - Cache: " . BASE_PATH . "/cache/\n";
echo "   - Admin: /admin/newsletter-subscribers.php\n";
echo "   - API: /newsletter/subscribe\n\n";

echo "✨ Instalação concluída!\n";