<?php
session_start();

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

require_once 'db/config.php';

$product_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

if ($product_id > 0) {
    $pdo = db();
    try {
        // 1. Verificar si hay movimientos asociados
        $sql_check = "SELECT COUNT(*) FROM movimientos WHERE producto_id = ?";
        $stmt_check = $pdo->prepare($sql_check);
        $stmt_check->execute([$product_id]);
        $movement_count = $stmt_check->fetchColumn();

        if ($movement_count > 0) {
            // Si hay movimientos, no permitir eliminar y mostrar un error amigable
            $_SESSION['error_message'] = "No se puede eliminar: este producto ya tiene un historial de entradas y salidas.";
        } else {
            // Si no hay movimientos, proceder con la eliminación
            $pdo->beginTransaction();

            // Primero, eliminar el stock asociado (si existe)
            $sql_stock = "DELETE FROM stock_por_ciudad WHERE producto_id = ?";
            $stmt_stock = $pdo->prepare($sql_stock);
            $stmt_stock->execute([$product_id]);

            // Luego, eliminar el producto
            $sql_product = "DELETE FROM productos WHERE id = ?";
            $stmt_product = $pdo->prepare($sql_product);
            $stmt_product->execute([$product_id]);

            if ($stmt_product->rowCount() > 0) {
                $pdo->commit();
                $_SESSION['success_message'] = "Producto eliminado correctamente.";
            } else {
                $pdo->rollBack();
                $_SESSION['error_message'] = "El producto no pudo ser encontrado o ya fue eliminado.";
            }
        }
    } catch (PDOException $e) {
        if ($pdo->inTransaction()) {
            $pdo->rollBack();
        }
        // Ocultamos el mensaje técnico y mostramos uno más amigable
        $_SESSION['error_message'] = "Ocurrió un error al intentar eliminar el producto. Por favor, inténtalo de nuevo.";
        // Opcional: podrías loggear el error real para depuración
        // error_log("Error al eliminar producto: " . $e->getMessage());
    }
} else {
    $_SESSION['error_message'] = "ID de producto no válido.";
}

header("Location: productos.php");
exit();
?>