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

if (isset($_SESSION['usuario_id'])) {
    $db = new Database();
    $pdo = $db->getPDO();
    $usuario_id = $_SESSION['usuario_id'];

    // Verificar pendientes con la estructura actualizada de tablas
    $stmt = $pdo->prepare("
        SELECT 
            (SELECT COUNT(*) FROM cajas WHERE id_usuario = ? AND estado = 1)
            +
            (SELECT COUNT(*) FROM venta_items 
             WHERE vendedor_id = ? 
             AND estado = 'COMPLETADO'
             AND tipo_venta = 'contado'
            )
            +
            (SELECT COUNT(*) FROM pagos
             WHERE usuario_id = ?
             AND estado = 'PENDIENTE'
            ) as total
    ");
    $stmt->execute([$usuario_id, $usuario_id, $usuario_id]);
    $pendientes = (int)$stmt->fetch(PDO::FETCH_ASSOC)['total'];

    if ($pendientes > 0) {
        header('Location: caja.php?msg=pendientes');
        exit;
    }

    // No hay pendientes, actualizamos estado y cerramos sesión
    $stmt = $pdo->prepare("UPDATE usuarios SET estado = 0 WHERE id = ?");
    $stmt->execute([$usuario_id]);
}

// Antes de destruir la sesión, registrar la acción
if (isset($_SESSION['usuario_id'])) {
    registrarActividadUsuario($_SESSION['usuario_id'], 'cierre_sesion', 'Usuario cerró sesión');
}

// Limpiar todas las variables de sesión
$_SESSION = array();

// Destruir la cookie de sesión si existe
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-3600, '/');
}

// Destruir la sesión
session_destroy();

// Asegurarse de que todas las variables específicas se eliminan
unset($_SESSION['usuario_id']);
unset($_SESSION['nombre']);
unset($_SESSION['nombre_usuario']);
unset($_SESSION['username']);
unset($_SESSION['rol']);
unset($_SESSION['cliente_id']);
unset($_SESSION['cliente_nombre']);

// Redirigir al index
header('Location: index.php');
exit;
?>
