<?php
// ===================================================
// প্রজেক্ট: সুদমুক্ত সহায়তা ও সামাজিক কল্যাণ সংস্থা পোর্টাল
// ফাইল: chatbot_api.php (গুগল জেমিনি এআই এপিআই ও ফলব্যাক লজিক)
// ===================================================

header('Content-Type: application/json; charset=utf-8');
require_once 'config.php';

// শুধুমাত্র POST রিকোয়েস্ট গ্রহণ করবে
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['status' => 'error', 'reply' => 'অবৈধ রিকোয়েস্ট পদ্ধতি।']);
    exit;
}

$user_prompt = trim($_POST['prompt'] ?? '');

if (empty($user_prompt)) {
    echo json_encode(['status' => 'error', 'reply' => 'অনুগ্রহ করে কোনো প্রশ্ন লিখুন।']);
    exit;
}

// ডাটাবেস থেকে Gemini API Key নিয়ে আসা
$api_key = '';
try {
    $stmt = $pdo->prepare("SELECT `setting_value` FROM `" . table('site_settings') . "` WHERE `setting_key` = 'gemini_api_key' LIMIT 1");
    $stmt->execute();
    $api_key = trim($stmt->fetchColumn());
} catch (Exception $e) {
    // ইগনোর
}

// এপিআই কি না থাকলে বা ডিফোল্ট থাকলে সাধারণ সহায়ক উত্তর
if (empty($api_key) || $api_key === 'YOUR_GEMINI_API_KEY_HERE') {
    echo json_encode([
        'status' => 'success',
        'reply' => "আমাদের সংস্থায় সুদমুক্ত ঋণ/অর্থ সহায়তা পেতে ওয়েবসাইটে 'সুদমুক্ত আবেদন' বাটনে ক্লিক করে ফর্ম পূরণ করুন। আবেদন করতে আবেদনকারীর NID ও একজন জামিনদারের (Guarantor) তথ্য লাগবে। বিস্তারিত তথ্যের জন্য নিচের হোয়াটসঅ্যাপ বাটনে মেসেজ দিতে পারেন।",
        'model_used' => 'fallback-local'
    ]);
    exit;
}

// 🤖 Gemini API Models (ক্রম অনুযায়ী ফলব্যাক হবে: ৩.৬ ফ্ল্যাশ -> ৩.৫ ফ্ল্যাশ -> ২.৫ ফ্ল্যাশ -> ১.৫ ফ্ল্যাশ)
$candidate_models = [
    'gemini-3.6-flash',
    'gemini-3.5-flash',
    'gemini-2.5-flash',
    'gemini-1.5-flash'
];

// সিস্টেম প্রম্পট (সংস্থার কন্টেক্সট এআইকে শিখিয়ে দেওয়া)
$system_instruction = "তুমি 'সুদমুক্ত সহায়তা ও সামাজিক কল্যাণ সংস্থা'র একজন বিশ্বস্ত, নম্র ও সহানুভূতির সাথে কথা বলা এআই প্রতিনিধি। সংস্থাটি সুদমুক্ত অর্থ সহায়তা প্রদান করে। ওয়েবসাইটে সুদমুক্ত আবেদনের সুবিধা রয়েছে, যেখানে আবেদনকারীর NID, ঠিকানা ও একজন জামিনদারের (Guarantor) তথ্য জমা দিতে হয়। আবেদনের পর এডমিন অনুমোদন দিলে বিকাশ/নগদে টাকা পৌঁছে দেওয়া হয়। প্রশ্নের উত্তর বাংলায় ২-৩ বাক্যে সংক্ষেপে ও স্পষ্ট করে দাও।";

$combined_prompt = $system_instruction . "\n\nইউজারের প্রশ্ন: " . $user_prompt;

$payload = [
    'contents' => [
        [
            'parts' => [
                ['text' => $combined_prompt]
            ]
        ]
    ],
    'generationConfig' => [
        'temperature' => 0.7,
        'maxOutputTokens' => 300
    ]
];

$json_payload = json_encode($payload);
$api_response_text = null;
$successful_model = '';

// ফলব্যাক লুপ: একটি মডেলে সমস্যা হলে পরেরটিতে অটো ট্রাই করবে
foreach ($candidate_models as $model) {
    $url = "https://generativelanguage.googleapis.com/v1beta/models/{$model}:generateContent?key=" . urlencode($api_key);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_TIMEOUT, 8); // ৮ সেকেন্ডে রেসপন্স না পেলে পরের মডেল
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($http_code === 200 && !empty($response)) {
        $result = json_decode($response, true);
        if (isset($result['candidates'][0]['content']['parts'][0]['text'])) {
            $api_response_text = trim($result['candidates'][0]['content']['parts'][0]['text']);
            $successful_model = $model;
            break; // সাফল্য পেলে লুপ বন্ধ
        }
    }
}

// উত্তর প্রস্তুত করা
if ($api_response_text) {
    echo json_encode([
        'status' => 'success',
        'reply' => $api_response_text,
        'model_used' => $successful_model
    ]);
} else {
    // এপিআই বিফল হলে জেনারেটর ডিফোল্ট ব্যাকআপ রেসপন্স
    echo json_encode([
        'status' => 'success',
        'reply' => "আপাতত জেমিনি এআই সার্ভারে কিছুটা কাজের চাপ রয়েছে। সুদমুক্ত সহায়তার নিয়ম জানতে আমাদের ওয়েবসাইটে 'আবেদনের নির্দেশিকা' দেখুন অথবা আমাদের হোয়াটসঅ্যাপে সরাসরি যোগাযোগ করুন।",
        'model_used' => 'offline-fallback'
    ]);
}