<?php
// logic/item_actions.php

require_once 'config.php';       // הגדרות כלליות (API KEY, נתיבים)
require_once 'db_config.php';    // חיבור למסד הנתונים ($conn)
require_once 'ai_processor.php'; // מנוע ה-AI שסיימנו לבנות

/**
 * פונקציה ראשית שמטפלת בכל תהליך ההעלאה:
 * 1. שמירת קובץ התמונה בשרת בשם ייחודי
 * 2. ניתוח התמונה ע"י ה-AI (ללא קשר לשם הקובץ המקורי)
 * 3. שמירת כל הנתונים בטבלת items
 */
function handleNewItemUpload($user_id, $cat_id, $kosher, $allergens, $expiry, $cooked, $file, $lat, $lng, $addr) {
    // אבטחת שם הקובץ: יוצר שם ייחודי מבוסס זמן (למשל: 1712145600_image.jpg)
    // זה פותר את הבעיה של שמות קבצים עם מספרים או שמות כפולים
    $fileName = time() . '_' . basename($file['name']);
    $targetPath = UPLOAD_DIR . $fileName; 
    $dbImgUrl = 'uploads/' . $fileName;

    // ניסיון העלאת הקובץ לתיקיית uploads בשרת
    if (move_uploaded_file($file['tmp_name'], $targetPath)) {
        
        // שליחת התמונה לניתוח ב-AI
        // ה-AI מסתכל על תוכן התמונה, לא על השם שלה
        $aiResults = analyzeImageWithGemini($targetPath);
        
        // קבלת הערכים מה-AI עם "רשת ביטחון" (אם ה-AI נכשל)
        $aiTitle = $aiResults['label'] ?? "מוצר ללא שם";
        $aiDesc  = $aiResults['description'] ?? "לא סופק תיאור";
        $aiSafe  = (isset($aiResults['is_safe']) && $aiResults['is_safe']) ? 1 : 0;
        $aiLabels = (isset($aiResults['is_food']) && $aiResults['is_food']) ? "Food" : "Unknown";

        // שמירה סופית בבסיס הנתונים באמצעות הפונקציה addItem
        return addItem(
            $user_id, $cat_id, $aiTitle, $aiDesc, $kosher, 
            $allergens, $expiry, $cooked, $dbImgUrl, $aiLabels, 
            $aiSafe, $lat, $lng, $addr
        );
    }

    error_log("File upload failed for user: " . $user_id);
    return false; 
}

/**
 * פונקציה לביצוע ה-INSERT בפועל למסד הנתונים
 */
function addItem($user_id, $cat_id, $title, $desc, $kosher, $allergens, $expiry, $cooked, $img_url, $ai_labels, $ai_safe, $lat, $lng, $addr) {
    global $conn;
    
    $sql = "INSERT INTO items (
                user_id, category_id, title, description, kosher_status, 
                allergens, expiry_date, cooked_at, image_url, ai_labels, 
                ai_is_safe, item_lat, item_lng, item_address
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            
    $stmt = $conn->prepare($sql);
    
    // i=integer, s=string, d=double
    $stmt->bind_param("iissssssssidds", 
        $user_id, $cat_id, $title, $desc, $kosher, 
        $allergens, $expiry, $cooked, $img_url, $ai_labels, 
        $ai_safe, $lat, $lng, $addr
    );
    
    if ($stmt->execute()) {
        return $stmt->insert_id; // מחזיר את ה-ID של הפריט החדש
    } else {
        error_log("Database Error: " . $stmt->error);
        return false;
    }
}
?>