<?php

require_once "../common/db.php";

$data = json_decode(file_get_contents("php://input"), true);

// ---------------------
// INPUT
// ---------------------

$itemId = $data["id"] ?? null;
$knowledgeId = $data["knowledge_id"];
$value = $data["value"];
$category = $data["item_category"] ?? null;

$name = $data["name"] ?? null;
$description = $data["description"] ?? null;

$lang = $data["lang"] ?? "ita";

$format = $data["format"] ?? 2; //Formato immagine image01 o image 001...

// immagini (solo metadata)
$images = $data["images"] ?? [];

// Se true rimpiazza le immagini
$replaceImages = $data["replace_images"] ?? false;

// ---------------------
// ITEM INSERT / UPDATE
// ---------------------

if ($itemId) {
    
    $stmt = $db->prepare("
        UPDATE knowledge_items
        SET value=?, item_category=?
        WHERE id=?
    ");
    $stmt->bind_param("ssi", $value, $category, $itemId);
    
    if (!$stmt->execute()) {
        echo json_encode([
            "error" => "DB update error",
            "sql_error" => $stmt->error
        ]);
        exit;
    }
    
} else {
    
    // 🔥 sort_order automatico
    $stmtOrder = $db->prepare("
        SELECT COALESCE(MAX(sort_order), 0) + 1 as next_order
        FROM knowledge_items
        WHERE knowledge_id=?
    ");
    $stmtOrder->bind_param("i", $knowledgeId);
    $stmtOrder->execute();
    
    $resOrder = $stmtOrder->get_result();
    $rowOrder = $resOrder->fetch_assoc();
    $sortOrder = $rowOrder["next_order"];
    
    $stmt = $db->prepare("
        INSERT INTO knowledge_items (knowledge_id, value, item_category, sort_order)
        VALUES (?, ?, ?, ?)
    ");
    $stmt->bind_param("issi", $knowledgeId, $value, $category, $sortOrder);
    
    if (!$stmt->execute()) {
        echo json_encode([
            "error" => "DB insert error",
            "sql_error" => $stmt->error
        ]);
        exit;
    }
    
    $itemId = $stmt->insert_id;
}

// ---------------------
// TRANSLATION
// ---------------------

$stmt = $db->prepare("
    INSERT INTO knowledge_item_translations (item_id, language, name, description)
    VALUES (?, ?, ?, ?)
    ON DUPLICATE KEY UPDATE
        name=?,
        description=?
");

$stmt->bind_param(
    "isssss",
    $itemId,
    $lang,
    $name,
    $description,
    $name,
    $description
);

if (!$stmt->execute()) {
    echo json_encode([
        "error" => "Translation error",
        "sql_error" => $stmt->error
    ]);
    exit;
}

// ---------------------
// IMAGE CREATION
// ---------------------
// Elimina immagini se necessario con replaceImages == true

if ($itemId && $replaceImages) {
    
    $stmt = $db->prepare("
        SELECT id, image_base_url
        FROM knowledge_item_images
        WHERE item_id = ?
    ");
    
    $stmt->bind_param("i", $itemId);
    $stmt->execute();
    
    $res = $stmt->get_result();
    
    $baseDiskPath = "/var/www/api/apps/Radiology";
    
    while ($row = $res->fetch_assoc()) {
        
        $baseUrl = $row["image_base_url"];
        $imageId = $row["id"];
        
        if ($baseUrl) {
            $dir = $baseDiskPath . dirname($baseUrl);
            
            if (is_dir($dir)) {
                deleteDirectory($dir);
            }
            
            deleteEmptyParents(
                dirname($dir),
                "/var/www/api/apps/Radiology/Images/Knowledge"
            );
        }
        
        // delete DB
        $stmtDel = $db->prepare("
            DELETE FROM knowledge_item_images
            WHERE id = ?
        ");
        $stmtDel->bind_param("i", $imageId);
        $stmtDel->execute();
    }
}


// Inserisci immagini
$imageId = null;

if (!empty($images)) {
    
    $img = $images[0]; // 👉 una sequence per ora
    
    $count = $img["count"] ?? 1;
    $format = $format ?? 2;
    $nameImg = $img["name"] ?? null;
    
    $stmt = $db->prepare("
        INSERT INTO knowledge_item_images (item_id, image_base_url, image_count, image_format, image_name)
        VALUES (?, '', ?, ?, ?)
    ");
    
    $stmt->bind_param("iiis", $itemId, $count, $format, $nameImg);
    
    if (!$stmt->execute()) {
        echo json_encode([
            "error" => "Image insert error",
            "sql_error" => $stmt->error
        ]);
        exit;
    }
    
    $imageId = $stmt->insert_id;
    
    // 🔥 base_url finale
    $baseURL = "/Images/Knowledge/$itemId/$imageId/image";
    
    $stmtUpdate = $db->prepare("
        UPDATE knowledge_item_images
        SET image_base_url=?
        WHERE id=?
    ");
    
    $stmtUpdate->bind_param("si", $baseURL, $imageId);
    $stmtUpdate->execute();
}

// ---------------------
// OUTPUT
// ---------------------

echo json_encode([
    "success" => true,
    "item_id" => $itemId,
    "image_id" => $imageId
]);