<?php
/**
 * Instalador automático del sistema WhatsApp Bot
 * Desarrollado por U-Site.app - https://u-site.app
 * Genera contraseña aleatoria y configura la base de datos
 * Fecha: 13 de noviembre de 2025
 */

// Verificar si la instalación ya está completada
$installationLockFile = '.installation_completed';
if (file_exists($installationLockFile)) {
    header('Location: login.php');
    exit('La instalación ya está completada. <a href="login.php">Iniciar sesión</a>');
}

// Función para generar contraseña aleatoria segura
function generateRandomPassword($length = 20) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*-_=+';
    $password = '';
    for ($i = 0; $i < $length; $i++) {
        $password .= $chars[random_int(0, strlen($chars) - 1)];
    }
    return $password;
}

// Configuración de la instalación (compatible con cPanel)
$dbHost = 'localhost';
$dbName = 'whatsapp_bot';
$dbUser = 'whatsapp_user';
$dbPass = generateRandomPassword(20);
$dbRootUser = 'root';
$dbRootPass = ''; // En cPanel puede requerir contraseña

// Generar contraseña para admin
$adminPassword = generateRandomPassword(12);

$installStep = $_GET['step'] ?? 'welcome';
$errors = [];
$success = [];

// Procesar instalación
if ($installStep === 'install' && $_POST) {
    try {
        // 1. Intentar conectar como root para crear base de datos y usuario
        try {
            $rootPdo = new PDO("mysql:host=$dbHost;charset=utf8mb4", $dbRootUser, $dbRootPass);
            $rootPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            // Si no se puede conectar como root, es probable que sea hosting compartido
            throw new Exception("⚠️ HOSTING COMPARTIDO DETECTADO ⚠️<br><br>" . 
                               "No se pueden crear bases de datos automáticamente en este tipo de hosting.<br><br>" .
                               "<strong>SOLUCIÓN:</strong><br>" .
                               "1. Crea manualmente la base de datos y usuario en tu panel de control<br>" .
                               "2. Usa <a href='install_manual.php' class='btn btn-warning btn-sm'>install_manual.php</a> en su lugar<br>" .
                               "3. Lee la guía: <a href='GUIA_HESTIACP.md' target='_blank'>GUIA_HESTIACP.md</a><br><br>" .
                               "Error técnico: " . $e->getMessage());
        }
        
        // 2. Crear base de datos
        $rootPdo->exec("CREATE DATABASE IF NOT EXISTS `$dbName` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
        $success[] = "✅ Base de datos '$dbName' creada correctamente";
        
        // 3. Crear usuario con permisos
        $rootPdo->exec("DROP USER IF EXISTS '$dbUser'@'localhost'");
        $rootPdo->exec("CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbPass'");
        $rootPdo->exec("GRANT ALL PRIVILEGES ON `$dbName`.* TO '$dbUser'@'localhost'");
        $rootPdo->exec("FLUSH PRIVILEGES");
        $success[] = "✅ Usuario '$dbUser' creado con contraseña aleatoria";
        
        // 4. Conectar con nuevo usuario
        $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        // 5. Crear tablas desde schema.sql
        $schema = file_get_contents('database/schema.sql');
        if (!$schema) {
            throw new Exception("No se pudo leer el archivo schema.sql");
        }
        
        // Ejecutar comandos SQL uno por uno
        $statements = array_filter(array_map('trim', explode(';', $schema)));
        $tablesCreated = 0;
        
        foreach ($statements as $statement) {
            if (!empty($statement) && !preg_match('/^--/', $statement)) {
                $pdo->exec($statement);
                if (preg_match('/CREATE TABLE|INSERT INTO/', $statement)) {
                    $tablesCreated++;
                }
            }
        }
        
        $success[] = "✅ $tablesCreated elementos de base de datos procesados";
        
        // 6. Actualizar archivo de configuración
        $configFile = 'config/config.php';
        $configContent = file_get_contents($configFile);
        
        $configContent = preg_replace("/define\('DB_HOST',\s*'[^']*'\);/", "define('DB_HOST', '$dbHost');", $configContent);
        $configContent = preg_replace("/define\('DB_NAME',\s*'[^']*'\);/", "define('DB_NAME', '$dbName');", $configContent);
        $configContent = preg_replace("/define\('DB_USER',\s*'[^']*'\);/", "define('DB_USER', '$dbUser');", $configContent);
        $configContent = preg_replace("/define\('DB_PASS',\s*'[^']*'\);/", "define('DB_PASS', '$dbPass');", $configContent);
        $configContent = preg_replace("/define\('ADMIN_PASSWORD',\s*'[^']*'\);/", "define('ADMIN_PASSWORD', '" . password_hash($adminPassword, PASSWORD_DEFAULT) . "');", $configContent);
        
        // Auto-detectar URL del servidor
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
        $host = $_SERVER['HTTP_HOST'];
        $path = dirname($_SERVER['SCRIPT_NAME']);
        $autoUrl = $protocol . $host . $path;
        $configContent = preg_replace("/define\('APP_URL',\s*'[^']*'\);/", "define('APP_URL', '$autoUrl');", $configContent);
        
        file_put_contents($configFile, $configContent);
        $success[] = "✅ Archivo config.php actualizado con nuevas credenciales";
        
        // 7. Crear archivo de bloqueo de instalación
        $lockContent = "Instalación completada: " . date('Y-m-d H:i:s') . "\n";
        $lockContent .= "Desarrollado por: U-Site.app\n";
        $lockContent .= "URL: https://u-site.app\n";
        file_put_contents($installationLockFile, $lockContent);
        $success[] = "✅ Sistema bloqueado contra reinstalaciones";
        
        // 8. Crear archivo de credenciales para referencia
        $credentialsFile = "CREDENCIALES_SISTEMA.txt";
        $credentialsContent = "=== CREDENCIALES DEL SISTEMA WHATSAPP BOT ===\n";
        $credentialsContent .= "Desarrollado por: U-Site.app (https://u-site.app)\n";
        $credentialsContent .= "Generado automáticamente: " . date('Y-m-d H:i:s') . "\n\n";
        $credentialsContent .= "=== BASE DE DATOS ===\n";
        $credentialsContent .= "Host: $dbHost\n";
        $credentialsContent .= "Base de datos: $dbName\n";
        $credentialsContent .= "Usuario: $dbUser\n";
        $credentialsContent .= "Contraseña: $dbPass\n\n";
        $credentialsContent .= "=== PANEL ADMINISTRATIVO ===\n";
        $credentialsContent .= "Usuario: admin\n";
        $credentialsContent .= "Contraseña: $adminPassword\n";
        $credentialsContent .= "URL Login: $autoUrl/login.php\n\n";
        $credentialsContent .= "⚠️  IMPORTANTE: Guarda estas credenciales en un lugar seguro.\n";
        $credentialsContent .= "⚠️  Elimina este archivo después de guardar las credenciales.\n";
        $credentialsContent .= "⚠️  El sistema está protegido contra reinstalaciones.\n\n";
        $credentialsContent .= "📞 Soporte técnico: support@u-site.app\n";
        
        file_put_contents($credentialsFile, $credentialsContent);
        $success[] = "✅ Archivo de credenciales creado: $credentialsFile";
        
        $installStep = 'completed';
        
    } catch (PDOException $e) {
        $errors[] = "❌ Error de base de datos: " . $e->getMessage();
    } catch (Exception $e) {
        $errors[] = "❌ Error general: " . $e->getMessage();
    }
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>🚀 Instalador WhatsApp Bot</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <style>
        :root {
            --primary-color: #25d366;
            --secondary-color: #075e54;
            --bg-gradient: linear-gradient(135deg, #25d366 0%, #075e54 100%);
        }
        body { 
            background: var(--bg-gradient); 
            min-height: 100vh; 
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        .install-card { 
            background: rgba(255,255,255,0.95); 
            border-radius: 20px; 
            backdrop-filter: blur(10px); 
            box-shadow: 0 20px 40px rgba(0,0,0,0.1);
        }
        .btn-install { 
            background: var(--bg-gradient); 
            border: none; 
            color: white;
            padding: 15px 30px;
            border-radius: 10px;
            font-weight: 600;
        }
        .btn-install:hover { 
            transform: translateY(-2px); 
            color: white;
        }
        .password-display {
            background: #f8f9fa;
            border: 2px dashed #28a745;
            border-radius: 10px;
            font-family: 'Courier New', monospace;
            font-size: 1.1rem;
            font-weight: bold;
            color: #155724;
            word-break: break-all;
            padding: 15px;
        }
        .step-indicator {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            margin-right: 15px;
            font-weight: bold;
        }
        .step-active { background: var(--primary-color); color: white; }
        .step-completed { background: #28a745; color: white; }
        .step-pending { background: #e9ecef; color: #6c757d; }
        .console-output {
            background: #1e1e1e;
            color: #00ff00;
            border-radius: 10px;
            font-family: 'Courier New', monospace;
            font-size: 0.9rem;
            max-height: 300px;
            overflow-y: auto;
        }
        .blink {
            animation: blink 1s infinite;
        }
        @keyframes blink {
            0%, 50% { opacity: 1; }
            51%, 100% { opacity: 0; }
        }
    </style>
</head>
<body>
    <div class="container mt-5">
        <div class="row justify-content-center">
            <div class="col-lg-8">
                <div class="install-card p-5">
                    
                    <?php if ($installStep === 'welcome'): ?>
                    <!-- Pantalla de Bienvenida -->
                    <div class="text-center mb-4">
                        <i class="fas fa-database text-primary" style="font-size: 4rem;"></i>
                        <h1 class="mt-3 fw-bold">Instalador WhatsApp Bot</h1>
                        <p class="text-muted">Configuración automática con credenciales aleatorias</p>
                        <div class="mt-3">
                            <small class="text-muted">
                                Desarrollado por <strong><a href="https://u-site.app" target="_blank" class="text-decoration-none">U-Site.app</a></strong> | 
                                <a href="https://u-site.app/support" target="_blank" class="text-decoration-none">Soporte técnico</a>
                            </small>
                        </div>
                    </div>

                    <div class="row g-3 mb-4">
                        <div class="col-md-4">
                            <div class="d-flex align-items-center">
                                <span class="step-indicator step-active">1</span>
                                <div>
                                    <h6 class="mb-1">Crear BD</h6>
                                    <small class="text-muted">Base de datos: <strong>whatsapp_bot</strong></small>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="d-flex align-items-center">
                                <span class="step-indicator step-pending">2</span>
                                <div>
                                    <h6 class="mb-1">Crear Usuario</h6>
                                    <small class="text-muted">Usuario: <strong>whatsapp_user</strong></small>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-4">
                            <div class="d-flex align-items-center">
                                <span class="step-indicator step-pending">3</span>
                                <div>
                                    <h6 class="mb-1">Configurar</h6>
                                    <small class="text-muted">Aplicar configuración</small>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class="alert alert-info">
                        <i class="fas fa-info-circle me-2"></i>
                        <strong>Configuración automática para cPanel/hosting compartido:</strong>
                        <ul class="mb-0 mt-2">
                            <li><strong>Host:</strong> localhost (compatible con cualquier hosting)</li>
                            <li><strong>Base de datos:</strong> whatsapp_bot (se creará automáticamente)</li>
                            <li><strong>Usuario DB:</strong> whatsapp_user (se creará automáticamente)</li>
                            <li><strong>Contraseña DB:</strong> Se generará aleatoriamente (20 caracteres)</li>
                            <li><strong>Usuario Admin:</strong> admin</li>
                            <li><strong>Contraseña Admin:</strong> Se generará aleatoriamente (12 caracteres)</li>
                        </ul>
                    </div>

                    <div class="alert alert-success">
                        <i class="fas fa-shield-alt me-2"></i>
                        <strong>Características de seguridad:</strong>
                        <ul class="mb-0 mt-2">
                            <li>✅ Protección contra reinstalaciones</li>
                            <li>✅ Sistema de login con bloqueo por intentos</li>
                            <li>✅ Contraseñas encriptadas</li>
                            <li>✅ Auto-detección de URL del servidor</li>
                            <li>✅ Compatible con cualquier hosting cPanel</li>
                        </ul>
                    </div>

                    <div class="alert alert-warning">
                        <i class="fas fa-exclamation-triangle me-2"></i>
                        <strong>Requisitos:</strong> Asegúrate de que MySQL esté funcionando en Laragon
                    </div>

                    <div class="alert alert-danger">
                        <i class="fas fa-server me-2"></i>
                        <strong>⚠️ ¿Usas hosting compartido? (HestiaCP, cPanel, etc.)</strong><br>
                        Este instalador automático <strong>NO funcionará</strong> en hosting compartido porque requiere privilegios de administrador.<br><br>
                        <strong>👉 SOLUCIÓN:</strong> 
                        <a href="install_manual.php" class="btn btn-warning btn-sm me-2">
                            <i class="fas fa-tools me-1"></i>Usar Instalador Manual
                        </a>
                        <a href="GUIA_HESTIACP.md" target="_blank" class="btn btn-info btn-sm">
                            <i class="fas fa-book me-1"></i>Ver Guía
                        </a>
                    </div>

                    <div class="text-center mb-4">
                        <div class="row g-3">
                            <div class="col-md-6">
                                <div class="password-display">
                                    🔐 CONTRASEÑA BD:<br>
                                    <strong><?= htmlspecialchars($dbPass) ?></strong>
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="password-display">
                                    👤 CONTRASEÑA ADMIN:<br>
                                    <strong><?= htmlspecialchars($adminPassword) ?></strong>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class="text-center">
                        <a href="?step=install" class="btn btn-install btn-lg">
                            <i class="fas fa-play me-2"></i>Iniciar Instalación
                        </a>
                    </div>

                    <?php elseif ($installStep === 'install'): ?>
                    <!-- Pantalla de Instalación -->
                    <div class="text-center mb-4">
                        <i class="fas fa-cog fa-spin text-warning" style="font-size: 3rem;"></i>
                        <h2 class="mt-3">Instalando Sistema...</h2>
                        <p class="text-muted">Configurando base de datos automáticamente</p>
                    </div>

                    <form method="POST" id="installForm">
                        <div class="console-output p-4 mb-4">
                            <div>WhatsApp Bot Installer v1.0</div>
                            <div>Connecting to MySQL server (localhost)...</div>
                            <div>Generating secure random password...</div>
                            <div class="mt-3">
                                <strong style="color: #ffff00;">🔐 CONTRASEÑAS GENERADAS:</strong><br>
                                <span style="color: #00ffff; font-size: 1.0rem;">DB: <?= htmlspecialchars($dbPass) ?></span><br>
                                <span style="color: #00ff00; font-size: 1.0rem;">Admin: <?= htmlspecialchars($adminPassword) ?></span>
                            </div>
                            <div class="mt-2">Creating database 'whatsapp_bot'...</div>
                            <div>Creating user 'whatsapp_user'@'localhost'...</div>
                            <div>Granting privileges...</div>
                            <div>Installing database schema...</div>
                            <div>Updating configuration files...</div>
                            <div class="text-success mt-2">Ready to execute installation <span class="blink">_</span></div>
                        </div>

                        <div class="text-center">
                            <button type="submit" class="btn btn-install btn-lg">
                                <i class="fas fa-database me-2"></i>Ejecutar Instalación
                            </button>
                        </div>
                    </form>

                    <script>
                        // Auto-submit después de mostrar la información
                        setTimeout(function() {
                            document.getElementById('installForm').submit();
                        }, 4000);
                    </script>

                    <?php elseif ($installStep === 'completed'): ?>
                    <!-- Pantalla de Completado -->
                    <div class="text-center mb-4">
                        <i class="fas fa-check-circle text-success" style="font-size: 4rem;"></i>
                        <h1 class="mt-3 text-success fw-bold">¡Instalación Completada!</h1>
                        <p class="text-muted">Tu sistema WhatsApp Bot está listo para usar</p>
                    </div>

                    <!-- Mostrar errores si los hay -->
                    <?php if (!empty($errors)): ?>
                    <div class="alert alert-danger">
                        <h5><i class="fas fa-exclamation-triangle me-2"></i>Errores encontrados:</h5>
                        <?php foreach ($errors as $error): ?>
                        <div><?= htmlspecialchars($error) ?></div>
                        <?php endforeach; ?>
                    </div>
                    <?php endif; ?>

                    <!-- Mostrar éxitos -->
                    <?php if (!empty($success)): ?>
                    <div class="alert alert-success">
                        <h5><i class="fas fa-check-circle me-2"></i>Instalación exitosa:</h5>
                        <?php foreach ($success as $msg): ?>
                        <div><?= htmlspecialchars($msg) ?></div>
                        <?php endforeach; ?>
                    </div>
                    <?php endif; ?>

                    <!-- Mostrar credenciales -->
                    <div class="row g-4 mb-4">
                        <div class="col-md-6">
                            <h5><i class="fas fa-database me-2 text-primary"></i>Credenciales de BD</h5>
                            <div class="bg-light p-3 rounded">
                                <div><strong>Host:</strong> <?= $dbHost ?></div>
                                <div><strong>Base de datos:</strong> <?= $dbName ?></div>
                                <div><strong>Usuario:</strong> <?= $dbUser ?></div>
                                <div class="mt-2">
                                    <strong>Contraseña:</strong><br>
                                    <div class="password-display mt-1">
                                        <?= htmlspecialchars($dbPass) ?>
                                    </div>
                                </div>
                            </div>
                            
                            <h5 class="mt-3"><i class="fas fa-user-shield me-2 text-success"></i>Credenciales Admin</h5>
                            <div class="bg-light p-3 rounded">
                                <div><strong>Usuario:</strong> admin</div>
                                <div class="mt-2">
                                    <strong>Contraseña:</strong><br>
                                    <div class="password-display mt-1">
                                        <?= htmlspecialchars($adminPassword) ?>
                                    </div>
                                </div>
                                <div class="mt-2"><strong>URL Login:</strong><br>
                                    <a href="login.php" target="_blank"><?= AUTO_DETECTED_URL ?? $autoUrl ?? '' ?>/login.php</a>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <h5><i class="fas fa-link me-2 text-success"></i>Próximos Pasos</h5>
                            <div class="d-grid gap-2">
                                <a href="login.php" class="btn btn-install">
                                    <i class="fas fa-sign-in-alt me-2"></i>Iniciar Sesión
                                </a>
                                <a href="test.php" class="btn btn-outline-primary">
                                    <i class="fas fa-check-circle me-2"></i>Probar Sistema
                                </a>
                                <a href="server_setup.php" class="btn btn-outline-warning">
                                    <i class="fab fa-whatsapp me-2"></i>Configurar WhatsApp
                                </a>
                            </div>
                        </div>
                    </div>

                    <div class="alert alert-warning">
                        <i class="fas fa-exclamation-triangle me-2"></i>
                        <strong>¡IMPORTANTE!</strong> 
                        <ul class="mb-0 mt-2">
                            <li>Guarda las credenciales en un lugar seguro</li>
                            <li>El archivo <code>CREDENCIALES_SISTEMA.txt</code> contiene toda la información</li>
                            <li>Elimina este archivo después de guardar las credenciales</li>
                            <li><strong>El sistema está protegido contra reinstalaciones</strong></li>
                            <li>Configura tu token de WhatsApp después del login</li>
                            <li>Soporte técnico: <a href="mailto:support@u-site.app">support@u-site.app</a></li>
                        </ul>
                    </div>

                    <?php endif; ?>

                    <!-- Footer -->
                    <div class="mt-5 pt-4 border-top text-center">
                        <small class="text-muted">
                            WhatsApp Bot Manager v1.0 by <strong>U-Site.app</strong> | 
                            Instalación automática con credenciales seguras | 
                            <a href="https://u-site.app/support" target="_blank">Soporte</a>
                        </small>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>