<?php
// panel_bot.php
// Panel para configurar el bot Andrea (ON/OFF, prompt, modelo, API key, memoria)

require_once __DIR__ . '/config.php';

/** @var PDO $pdo */
$pdo = db();

// Obtener config del bot (id = 1). Si no existe, crearla.
function getBotConfig(PDO $pdo): array {
    $stmt = $pdo->prepare("SELECT * FROM bot WHERE id = 1 LIMIT 1");
    $stmt->execute();
    $bot = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$bot) {
        $defaultPrompt = "Eres Andrea, una asistente virtual amable, clara y breve de Netfan. "
            . "Respondés siempre en español rioplatense, con mensajes cortos y simples. "
            . "Netfan desarrolla software a medida, sitios web, sistemas y bots de WhatsApp para negocios. "
            . "No inventes teléfonos ni direcciones. Si no sabés algo, decí que no estás segura y ofrecé ayuda general. "
            . "Mantené un tono profesional pero cercano, como soporte técnico/consultor digital.";

        $stmtIns = $pdo->prepare("
            INSERT INTO bot
            (id, nombre, activo, openai_api_key, modelo, prompt,
             max_dias_memoria, max_mensajes_memoria, temperature, max_tokens)
            VALUES
            (1, 'Andrea', 0, NULL, 'gpt-3.5-turbo', :prompt, 7, 30, 0.60, 250)
        ");
        $stmtIns->execute([':prompt' => $defaultPrompt]);

        $stmt = $pdo->prepare("SELECT * FROM bot WHERE id = 1 LIMIT 1");
        $stmt->execute();
        $bot = $stmt->fetch(PDO::FETCH_ASSOC);
    }

    return $bot;
}

$mensajeGuardado = '';
$bot = getBotConfig($pdo);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nombre  = trim($_POST['nombre'] ?? $bot['nombre'] ?? 'Andrea');
    $activo  = isset($_POST['bot_activo']) ? 1 : 0;
    $modelo  = trim($_POST['modelo'] ?? $bot['modelo'] ?? 'gpt-3.5-turbo');
    $prompt  = trim($_POST['prompt'] ?? $bot['prompt'] ?? '');

    $maxDias   = isset($_POST['max_dias_memoria']) ? (int)$_POST['max_dias_memoria'] : (int)$bot['max_dias_memoria'];
    $maxMsgs   = isset($_POST['max_mensajes_memoria']) ? (int)$_POST['max_mensajes_memoria'] : (int)$bot['max_mensajes_memoria'];
    $temp      = isset($_POST['temperature']) ? (float)$_POST['temperature'] : (float)$bot['temperature'];
    $maxTokens = isset($_POST['max_tokens']) ? (int)$_POST['max_tokens'] : (int)$bot['max_tokens'];

    if ($maxDias < 0) $maxDias = 0;
    if ($maxMsgs < 1) $maxMsgs = 1;
    if ($temp < 0) $temp = 0;
    if ($temp > 1) $temp = 1;
    if ($maxTokens < 1) $maxTokens = 1;

    // API Key:
    //  - ""       => borrar (NULL)
    //  - "********" => mantener
    //  - otro     => actualizar
    $apiKeyInput = trim($_POST['openai_api_key'] ?? '');
    $newApiKey   = $bot['openai_api_key'];

    if ($apiKeyInput === '') {
        $newApiKey = null;
    } elseif ($apiKeyInput !== '********') {
        $newApiKey = $apiKeyInput;
    }

    $stmtUp = $pdo->prepare("
        UPDATE bot
        SET nombre = :nombre,
            activo = :activo,
            openai_api_key = :api_key,
            modelo = :modelo,
            prompt = :prompt,
            max_dias_memoria = :max_dias,
            max_mensajes_memoria = :max_msgs,
            temperature = :temp,
            max_tokens = :max_tokens,
            updated_at = NOW()
        WHERE id = 1
    ");
    $stmtUp->execute([
        ':nombre'     => $nombre,
        ':activo'     => $activo,
        ':api_key'    => $newApiKey,
        ':modelo'     => $modelo !== '' ? $modelo : 'gpt-3.5-turbo',
        ':prompt'     => $prompt,
        ':max_dias'   => $maxDias,
        ':max_msgs'   => $maxMsgs,
        ':temp'       => $temp,
        ':max_tokens' => $maxTokens,
    ]);

    $mensajeGuardado = 'Configuración guardada correctamente.';
    $bot = getBotConfig($pdo);
}

$tieneApiKey    = !empty($bot['openai_api_key']);
$apiKeyMostrar  = $tieneApiKey ? '********' : '';

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Panel del Bot Andrea</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
    <style>
        body { background: #0b141a; color: #eee; }
        .card { background: #202c33; border-color: #333; }
        .form-control, .form-select {
            background: #111; color: #eee; border: 1px solid #333;
        }
        .form-control:focus, .form-select:focus {
            background: #111; color: #eee;
            border-color: #00a884;
            box-shadow: 0 0 0 0.1rem rgba(0,168,132,0.5);
        }
        textarea { min-height: 220px; resize: vertical; }
        .form-text { color: #aaa; }
        .badge-status-on { background-color: #00a884; }
        .badge-status-off { background-color: #6c757d; }
    </style>
</head>
<body class="py-4">
<div class="container">
    <h1 class="mb-3">Panel del Bot Andrea</h1>

    <?php if ($mensajeGuardado !== ''): ?>
        <div class="alert alert-success"><?= htmlspecialchars($mensajeGuardado) ?></div>
    <?php endif; ?>

    <div class="mb-3">
        Estado actual:
        <?php if ((int)$bot['activo'] === 1): ?>
            <span class="badge badge-status-on">Bot activo</span>
        <?php else: ?>
            <span class="badge badge-status-off">Bot apagado</span>
        <?php endif; ?>
    </div>

    <div class="card">
        <div class="card-body">
            <form method="post" autocomplete="off">
                <div class="row mb-3">
                    <div class="col-md-4">
                        <label for="nombre" class="form-label">Nombre del bot</label>
                        <input type="text" name="nombre" id="nombre"
                               class="form-control"
                               value="<?= htmlspecialchars($bot['nombre']) ?>">
                    </div>
                    <div class="col-md-4">
                        <label for="modelo" class="form-label">Modelo OpenAI</label>
                        <input type="text" name="modelo" id="modelo"
                               class="form-control"
                               value="<?= htmlspecialchars($bot['modelo']) ?>"
                               placeholder="gpt-3.5-turbo">
                        <div class="form-text">Ej: gpt-3.5-turbo, gpt-4.1-mini, etc.</div>
                    </div>
                    <div class="col-md-4 d-flex align-items-end">
                        <div class="form-check form-switch">
                            <input class="form-check-input"
                                   type="checkbox"
                                   id="bot_activo"
                                   name="bot_activo"
                                   value="1"
                                   <?= ((int)$bot['activo'] === 1) ? 'checked' : '' ?>>
                            <label class="form-check-label" for="bot_activo">
                                Bot activo (responde automáticamente mensajes entrantes)
                            </label>
                        </div>
                    </div>
                </div>

                <div class="mb-3">
                    <label for="openai_api_key" class="form-label">API Key de OpenAI</label>
                    <input type="password"
                           name="openai_api_key"
                           id="openai_api_key"
                           class="form-control"
                           value="<?= htmlspecialchars($apiKeyMostrar) ?>"
                           autocomplete="new-password">
                    <div class="form-text">
                        Si ves "********" significa que ya hay una key cargada.  
                        Para mantenerla, dejá "********".  
                        Para cambiarla, escribí la nueva.  
                        Para borrarla, dejá el campo vacío y guardá.
                    </div>
                </div>

                <div class="row mb-3">
                    <div class="col-md-3">
                        <label for="max_dias_memoria" class="form-label">Días de memoria</label>
                        <input type="number"
                               name="max_dias_memoria"
                               id="max_dias_memoria"
                               class="form-control"
                               min="0"
                               value="<?= (int)$bot['max_dias_memoria'] ?>">
                        <div class="form-text">0 = sin límite por fecha.</div>
                    </div>
                    <div class="col-md-3">
                        <label for="max_mensajes_memoria" class="form-label">Máx. mensajes</label>
                        <input type="number"
                               name="max_mensajes_memoria"
                               id="max_mensajes_memoria"
                               class="form-control"
                               min="1"
                               value="<?= (int)$bot['max_mensajes_memoria'] ?>">
                    </div>
                    <div class="col-md-3">
                        <label for="temperature" class="form-label">Temperature</label>
                        <input type="number"
                               step="0.05"
                               min="0"
                               max="1"
                               name="temperature"
                               id="temperature"
                               class="form-control"
                               value="<?= htmlspecialchars($bot['temperature']) ?>">
                        <div class="form-text">0 = más rígido, 1 = más creativo.</div>
                    </div>
                    <div class="col-md-3">
                        <label for="max_tokens" class="form-label">Max tokens</label>
                        <input type="number"
                               name="max_tokens"
                               id="max_tokens"
                               class="form-control"
                               min="1"
                               value="<?= (int)$bot['max_tokens'] ?>">
                    </div>
                </div>

                <div class="mb-3">
                    <label for="prompt" class="form-label">Prompt de Andrea</label>
                    <textarea class="form-control"
                              id="prompt"
                              name="prompt"><?= htmlspecialchars($bot['prompt']) ?></textarea>
                    <div class="form-text">
                        Todo este texto se envía como mensaje de <b>system</b> al modelo.
                    </div>
                </div>

                <button type="submit" class="btn btn-success">Guardar configuración</button>
            </form>
        </div>
    </div>

</div>
</body>
</html>
