<?php
class GeminiAi {
    private $apiKey;
    // Updated to the requested model
    private $model = "gemini-flash-lite-latest"; 
    private $baseUrl = "https://generativelanguage.googleapis.com/v1beta/models/";

    public function __construct($apiKey) {
        if (empty($apiKey)) {
            throw new Exception("Gemini API Key is missing.");
        }
        $this->apiKey = $apiKey;
    }

    public function verifyPayment($invoiceNumber, $amount, $paymentMethod, $proofText, $proofImageBase64 = '') {
        $prompt = "You are a financial verifier. The user claims they transferred $amount via $paymentMethod for invoice $invoiceNumber. ";
        if (!empty($proofText)) {
            $prompt .= "Here is their proof text: '$proofText'. ";
        }
        $prompt .= "Does the provided proof clearly indicate a successful transfer of $amount? Respond ONLY with a valid JSON object: {\"verified\": true/false, \"reason\": \"your reasoning\"}.";

        $parts = [["text" => $prompt]];

        if (!empty($proofImageBase64)) {
            $parts[] = [
                "inline_data" => [
                    "mime_type" => "image/jpeg",
                    "data" => $proofImageBase64
                ]
            ];
        }

        $reqData = [
            "contents" => [
                [
                    "parts" => $parts
                ]
            ]
        ];

        $url = $this->baseUrl . $this->model . ":generateContent?key=" . $this->apiKey;

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($reqData));

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

        if ($httpCode !== 200) {
            error_log("Gemini API Error: " . $response);
            throw new Exception("AI Verification service unavailable. Details: " . $response);
        }

        $resData = json_decode($response, true);
        $aiText = $resData['candidates'][0]['content']['parts'][0]['text'] ?? '';

        // Clean AI Text (remove markdown json block if exists)
        $aiText = preg_replace('/```json|```/', '', $aiText);
        $aiResult = json_decode(trim($aiText), true);

        if ($aiResult && isset($aiResult['verified'])) {
            return $aiResult;
        }

        throw new Exception("Invalid response format from Gemini: " . $aiText);
    }
}
?>
