<?php
/**
 * POST /api/stock-send-one.php
 *
 * Trimite stocul unui singur produs la eMAG (buton individual din tabel), via
 * resursa `product_offer/save` (câmpul `stock`).
 *
 * Body: id (id-ul produsului din aplicație)
 *
 * Produsul trebuie să aibă emag_id setat și stock completat (>= 0). Contul NU
 * trebuie să fie FBE. La succes setează stock_synced_at și current_stock = stock.
 */
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/emag-api.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    json_response(['ok' => false, 'error' => 'Doar POST'], 405);
}
if (!csrf_check($_POST['csrf_token'] ?? null)) {
    json_response(['ok' => false, 'error' => 'CSRF invalid'], 403);
}

$id = (int)($_POST['id'] ?? 0);
if ($id <= 0) {
    json_response(['ok' => false, 'error' => 'id lipsește'], 422);
}

$rows = db_select(
    "SELECT p.id, p.emag_id, p.product_name, p.stock,
            a.username, a.password, a.platform, a.is_active, a.is_fbe
     FROM products p
     LEFT JOIN emag_accounts a ON a.id = p.emag_account_id
     WHERE p.id = ?",
    [$id]
);
if (!$rows) {
    json_response(['ok' => false, 'error' => 'Produs inexistent'], 404);
}
$p = $rows[0];

if ((int)($p['is_fbe'] ?? 0) === 1) {
    json_response(['ok' => false, 'error' => 'Cont FBE — stocul e gestionat de eMAG și nu poate fi trimis.'], 422);
}
if (empty($p['emag_id'])) {
    json_response(['ok' => false, 'error' => 'Produsul nu are emag_id — nu poate fi identificat pe eMAG.'], 422);
}
if ($p['stock'] === null || $p['stock'] === '') {
    json_response(['ok' => false, 'error' => 'Completează un stoc valid (>= 0).'], 422);
}
if (empty($p['username']) || (int)$p['is_active'] !== 1) {
    json_response(['ok' => false, 'error' => 'Contul eMAG al produsului lipsește sau e inactiv.'], 422);
}

try {
    $api = new EmagAPI($p['username'], $p['password'], $p['platform'] ?? 'ro');
    $res = $api->updateProductStock([
        'id'    => (int)$p['emag_id'],
        'stock' => (int)$p['stock'],
    ]);
} catch (Throwable $e) {
    error_log('[stock-send-one] ' . $e->getMessage());
    json_response(['ok' => false, 'error' => $e->getMessage()], 502);
}

if (!$res['ok']) {
    json_response(['ok' => false, 'error' => $res['message']], 502);
}

// Stocul trimis devine noul „stoc curent" cunoscut.
db_exec(
    "UPDATE products SET stock_synced_at = CURRENT_TIMESTAMP, current_stock = stock WHERE id = ?",
    [$id]
);
$row = db_select(
    "SELECT id, stock, current_stock, stock_synced_at FROM products WHERE id = ?",
    [$id]
);

json_response(['ok' => true, 'product' => $row[0] ?? null]);
