<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: auth/login.php');
    exit;
}

require_once 'db/config.php';

if (!isset($_GET['id']) || !isset($_GET['dir'])) {
    header('Location: resumen_stock.php');
    exit;
}

$producto_id = (int)$_GET['id'];
$direction = $_GET['dir'];

$pdo = db();
$pdo->beginTransaction();

try {
    // Obtener el orden actual del producto a mover
    $stmt = $pdo->prepare("SELECT orden FROM productos WHERE id = :id");
    $stmt->execute(['id' => $producto_id]);
    $current_orden = $stmt->fetchColumn();

    if ($current_orden === false) {
        throw new Exception("Producto no encontrado.");
    }

    $producto_a_intercambiar = null;

    if ($direction === 'up') {
        // Mover hacia arriba (menor valor de 'orden')
        $stmt = $pdo->prepare("SELECT id, orden FROM productos WHERE orden < :orden ORDER BY orden DESC LIMIT 1");
        $stmt->execute(['orden' => $current_orden]);
        $producto_a_intercambiar = $stmt->fetch(PDO::FETCH_ASSOC);
    } elseif ($direction === 'down') {
        // Mover hacia abajo (mayor valor de 'orden')
        $stmt = $pdo->prepare("SELECT id, orden FROM productos WHERE orden > :orden ORDER BY orden ASC LIMIT 1");
        $stmt->execute(['orden' => $current_orden]);
        $producto_a_intercambiar = $stmt->fetch(PDO::FETCH_ASSOC);
    }

    if ($producto_a_intercambiar) {
        // Intercambiar los valores de 'orden'
        $nuevo_orden_actual = $producto_a_intercambiar['orden'];
        $nuevo_orden_otro = $current_orden;

        $stmt = $pdo->prepare("UPDATE productos SET orden = :orden WHERE id = :id");
        
        // Actualizar el producto que se mueve
        $stmt->execute(['orden' => $nuevo_orden_actual, 'id' => $producto_id]);
        
        // Actualizar el otro producto
        $stmt->execute(['orden' => $nuevo_orden_otro, 'id' => $producto_a_intercambiar['id']]);
    }

    $pdo->commit();

} catch (Exception $e) {
    $pdo->rollBack();
    // Opcional: registrar el error o mostrar un mensaje
    // error_log($e->getMessage());
}

header('Location: resumen_stock.php');
exit;
