<?php
session_start();
require_once 'includes/db.php';

// Guardar datos importantes del usuario
$usuario_datos = [
    'usuario_id' => $_SESSION['usuario_id'] ?? null,
    'nombre_usuario' => $_SESSION['nombre_usuario'] ?? null,
    'nombre' => $_SESSION['nombre'] ?? null,
    'username' => $_SESSION['username'] ?? null
];

if (!isset($_GET['venta_id'])) {
    header('Location: index.php');
    exit;
}

$venta_id = intval($_GET['venta_id']);
$db = new Database();
$pdo = $db->getPDO();

try {
    $pdo->beginTransaction();

    // Primero obtener el cliente_id asociado a la venta
    $stmt = $pdo->prepare("SELECT DISTINCT cliente_id FROM venta_items WHERE id = ?");
    $stmt->execute([$venta_id]);
    $cliente_info = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($cliente_info) {
        // Eliminar todos los items asociados al cliente en estado EN_CURSO
        $stmt = $pdo->prepare("DELETE FROM venta_items WHERE cliente_id = ? AND estado = 'EN_CURSO'");
        $stmt->execute([$cliente_info['cliente_id']]);
    }

    // Lista de variables a limpiar específicamente
    $variables_venta = [
        'cliente_temp_id',
        'venta_actual_id',
        'cliente_actual',
        'post_data',
        'cliente_seleccionado',
        'ultima_venta_id',
        'cliente_en_curso',
        'venta_activa',
        'venta_en_curso'
    ];

    // Limpiar solo las variables relacionadas con la venta
    foreach ($variables_venta as $var) {
        if (isset($_SESSION[$var])) {
            unset($_SESSION[$var]);
        }
    }

    // Restaurar datos del usuario
    foreach ($usuario_datos as $key => $value) {
        if ($value !== null) {
            $_SESSION[$key] = $value;
        }
    }

    $pdo->commit();

    // Limpiar solo el storage relacionado con ventas
    echo "<script>
        sessionStorage.removeItem('cliente_actual');
        localStorage.removeItem('ultimo_cliente');
        localStorage.removeItem('cliente_actual');
        window.location.href = 'index.php?mensaje=venta_cancelada&t=" . time() . "';
    </script>";
    exit;

} catch (Exception $e) {
    $pdo->rollBack();
    header('Location: index.php?error=error_cancelacion');
    exit;
}
