<?php
header('Content-Type: application/json');
require_once __DIR__ . '/../db/config.php';
require_once __DIR__ . '/../ai/LocalAIApi.php';

$input = json_decode(file_get_contents('php://input'), true);
$message = $input['message'] ?? '';

if (empty($message)) {
    echo json_encode(['reply' => "I didn't catch that. Could you repeat?"]);
    exit;
}

try {
    // 1. Fetch Knowledge Base (FAQs)
    $stmt = db()->query("SELECT keywords, answer FROM faqs");
    $faqs = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $knowledgeBase = "Here is the knowledge base for this website:\n\n";
    foreach ($faqs as $faq) {
        $knowledgeBase .= "Q: " . $faq['keywords'] . "\nA: " . $faq['answer'] . "\n---\n";
    }

    // 2. Construct Prompt for AI
    $systemPrompt = "You are a helpful, friendly AI assistant for this website. " .
        "Use the provided Knowledge Base to answer user questions accurately. " .
        "If the answer is found in the Knowledge Base, rephrase it naturally. " .
        "If the answer is NOT in the Knowledge Base, use your general knowledge to help, " .
        "but politely mention that you don't have specific information about that if it seems like a site-specific question. " .
        "Keep answers concise and professional.\n\n" .
        $knowledgeBase;

    // 3. Call AI API
    $response = LocalAIApi::createResponse([
        'model' => 'gpt-4o-mini',
        'input' => [
            ['role' => 'system', 'content' => $systemPrompt],
            ['role' => 'user', 'content' => $message],
        ]
    ]);

    if (!empty($response['success'])) {
        $aiReply = LocalAIApi::extractText($response);
        
        // 4. Save to Database
        try {
            $stmt = db()->prepare("INSERT INTO messages (user_message, ai_response) VALUES (?, ?)");
            $stmt->execute([$message, $aiReply]);
        } catch (Exception $e) {
            error_log("DB Save Error: " . $e->getMessage());
            // Continue even if save fails, so the user still gets a reply
        }

        echo json_encode(['reply' => $aiReply]);
    } else {
        // Fallback if AI fails
        error_log("AI Error: " . ($response['error'] ?? 'Unknown'));
        echo json_encode(['reply' => "I'm having trouble connecting to my brain right now. Please try again later."]);
    }

} catch (Exception $e) {
    error_log("Chat Error: " . $e->getMessage());
    echo json_encode(['reply' => "An internal error occurred."]);
}
