<?php
session_start();
include("db.php");

if (!isset($_SESSION['id_usuario']) || empty($_SESSION['carrito'])) {
    header("Location: carrito.php");
    exit();
}

// Recogemos las variables del formulario de entrega
$tipo_entrega = $_POST['tipo_entrega'] ?? 'retiro';
$telefono = $_POST['telefono'] ?? '';
$direccion = ($tipo_entrega === 'envio') ? ($_POST['direccion'] ?? '') : 'Retira en local';

$nombre_comprobante = null;

if ($tipo_entrega === 'envio' && isset($_FILES['comprobante']) && $_FILES['comprobante']['error'] === UPLOAD_ERR_OK) {
    
    $file_tmp = $_FILES['comprobante']['tmp_name'];
    $file_name = $_FILES['comprobante']['name'];
    $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
    
    // Validamos extensiones permitidas por seguridad
    $extensiones_permitidas = ['jpg', 'jpeg', 'png', 'pdf'];
    
    if (in_array($ext, $extensiones_permitidas)) {
        $nombre_comprobante = "comprobante_" . time() . "_" . uniqid() . "." . $ext;
        
        $ruta_destino = "admin/comprobantes/" . $nombre_comprobante;
        
        if (!move_uploaded_file($file_tmp, $ruta_destino)) {
            escribir_log("[ERROR ARCHIVO] No se pudo mover el comprobante '$file_name' a la carpeta destino.");
            $nombre_comprobante = null; 
        }
    } else {
        escribir_log("[ERROR VALIDACIÓN] Intento de subida de archivo con extensión no válida: .$ext");
    }
}

$id_usuario = $_SESSION['id_usuario'];
$estado = "En Cocina";

$total_pedido = 0;
$ids = array_keys($_SESSION['carrito']);
$lista_ids = implode(',', $ids);
$query_p = "SELECT * FROM productos WHERE id IN ($lista_ids)";
$res_p = $conexion->query($query_p);

$productos_data = [];
while ($row = $res_p->fetch_assoc()) {
    $row['cantidad'] = $_SESSION['carrito'][$row['id']];
    $total_pedido += ($row['precio'] * $row['cantidad']);
    $productos_data[] = $row;
}

$tipo_entrega = $conexion->real_escape_string($tipo_entrega);
$direccion = $conexion->real_escape_string($direccion);
$telefono = $conexion->real_escape_string($telefono);

$nombre_comprobante_sql = $nombre_comprobante ? "'".$conexion->real_escape_string($nombre_comprobante)."'" : "NULL";

$sql_pedido = "INSERT INTO pedidos (id_usuario, total, estado, tipo_entrega, direccion_envio, telefono_contacto, comprobante) 
               VALUES ('$id_usuario', '$total_pedido', '$estado', '$tipo_entrega', '$direccion', '$telefono', $nombre_comprobante_sql)";

if (mysqli_query($conexion, $sql_pedido)) {
    $id_recien_creado = mysqli_insert_id($conexion);

    // LOG DE AUDITORÍA
    $nombre_cliente = $_SESSION['usuario'] ?? 'Usuario ID: ' . $id_usuario;
    $info_comprobante = $nombre_comprobante ? "Comprobante: $nombre_comprobante" : "Sin comprobante (Retiro)";
    escribir_log("[PEDIDO] ¡Venta realizada! ID #$id_recien_creado por el cliente '$nombre_cliente' | Total: $$total_pedido | Entrega: $tipo_entrega | $info_comprobante");

    foreach ($productos_data as $p) {
        $id_prod = $p['id'];
        $cant = $p['cantidad'];
        $precio = $p['precio'];
        $nombre = $p['nombre'];

        // Insertar detalle
        $sql_det = "INSERT INTO detalle_pedido (pedido_id, producto_id, cantidad, precio_unitario) 
                    VALUES ('$id_recien_creado', '$id_prod', '$cant', '$precio')";
        mysqli_query($conexion, $sql_det);

        // Restar stock físico
        $sql_restar_stock = "UPDATE productos SET stock = stock - $cant WHERE id = '$id_prod'";
        mysqli_query($conexion, $sql_restar_stock);

        // Estadísticas
        $sql_stats = "INSERT INTO estadisticas_productos (nombre_producto, cantidad_vendida) 
                      VALUES ('$nombre', '$cant') 
                      ON DUPLICATE KEY UPDATE cantidad_vendida = cantidad_vendida + $cant";
        mysqli_query($conexion, $sql_stats);
    }

    unset($_SESSION['carrito']);
    header("Location: index.php?exito=1");
} else {
    // LOG DE ERROR
    escribir_log("[ERROR SQL] Falló la inserción del pedido para el usuario ID $id_usuario. Error: " . mysqli_error($conexion));
    echo "Error al procesar el pedido: " . mysqli_error($conexion);
}
?>