<?php
/**
 * AI Accounting Chatbot — "اسأل مُصادَق"
 * POST /v1/chatbot/ask
 * Body: { "question": "كم ضريبة المبيعات على الخدمات الرقمية؟" }
 * 
 * AI-powered chatbot that answers accounting & tax questions
 * with context from the user's own data when relevant.
 */

use App\Core\Database;
use App\Core\AI;
use App\Core\Encryption;
use App\Middleware\AuthMiddleware;

$decoded = AuthMiddleware::check();
$db = Database::getInstance();

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

if (empty($question) || mb_strlen($question) < 3) {
    json_error('يرجى كتابة سؤالك (3 أحرف على الأقل)', 422);
}

if (mb_strlen($question) > 500) {
    json_error('السؤال طويل جداً (الحد 500 حرف)', 422);
}

$tenantId = $decoded['tenant_id'];
$userId   = $decoded['user_id'];

try {
    // 1. Gather user context (last month stats)
    $contextStmt = $db->prepare("
        SELECT 
            COUNT(*) as total_invoices,
            COALESCE(SUM(grand_total), 0) as total_revenue,
            COALESCE(SUM(tax_amount), 0) as total_tax
        FROM invoices 
        WHERE tenant_id = ? AND created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
    ");
    $contextStmt->execute([$tenantId]);
    $context = $contextStmt->fetch();

    $companyStmt = $db->prepare("SELECT COUNT(*) FROM companies WHERE tenant_id = ? AND deleted_at IS NULL");
    $companyStmt->execute([$tenantId]);
    $companyCount = (int)$companyStmt->fetchColumn();

    // 2. Build AI prompt
    $systemPrompt = <<<PROMPT
أنت "مُصادَق" — مساعد محاسبي ذكي متخصص في المحاسبة والضرائب الأردنية.

قواعد:
1. أجب بالعربية دائماً وبشكل مختصر ومفيد
2. إذا كان السؤال عن ضرائب أردنية، استخدم نسب ضريبة المبيعات الأردنية (16% عامة، 4% و8% مخفضة، 0% معفاة)
3. إذا كان السؤال غير محاسبي، قل "أنا متخصص بالمحاسبة والضرائب فقط"
4. لا تعطِ نصائح قانونية نهائية — انصح بمراجعة محاسب قانوني للحالات المعقدة
5. إذا كان السؤال يتعلق ببيانات المستخدم، استخدم السياق المتاح

سياق المستخدم (آخر 30 يوم):
- عدد الفواتير: {$context['total_invoices']}
- إجمالي الإيرادات: {$context['total_revenue']} دينار
- إجمالي الضريبة: {$context['total_tax']} دينار
- عدد الشركات: {$companyCount}
PROMPT;

    $aiResponse = AI::chat($systemPrompt, $question, $tenantId);

    if (!$aiResponse) {
        json_error('عذراً، لم أتمكن من معالجة سؤالك. حاول مرة أخرى.', 500);
    }

    // 3. Log the conversation
    $db->prepare("
        INSERT INTO chatbot_history (id, user_id, tenant_id, question, answer, created_at)
        VALUES (UUID(), ?, ?, ?, ?, NOW())
    ")->execute([$userId, $tenantId, $question, $aiResponse]);

    json_success([
        'answer'    => $aiResponse,
        'question'  => $question,
        'timestamp' => date('c'),
    ], 'إجابة مُصادَق');

} catch (\Exception $e) {
    safe_error($e, 'chatbot/ask', 'حدث خطأ في المساعد الذكي.');
}
