<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'includes/db.php';
require_once 'includes/config.php'; // Añadir esta línea
session_start();

// Verificar si el usuario está logueado
if (empty($_SESSION['usuario_id'])) {
    ?>
    <!DOCTYPE html>
    <html lang="es">
    <head>

        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Acceso Denegado</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                background-color: #f4f4f4;
                display: flex;
                justify-content: center;
                align-items: center;
                height: 100vh;
                margin: 0;
            }
            .error-container {
                background-color: white;
                padding: 2rem;
                border-radius: 8px;
                box-shadow: 0 2px 4px rgba(0,0,0,0.1);
                text-align: center;
                max-width: 400px;
            }
            .error-icon {
                color: #dc3545;
                font-size: 48px;
                margin-bottom: 1rem;
            }
            .error-title {
                color: #333;
                margin-bottom: 1rem;
            }
            .error-message {
                color: #666;
                margin-bottom: 1.5rem;
            }
            .login-button {
                background-color: #007bff;
                color: white;
                padding: 0.5rem 1rem;
                border: none;
                border-radius: 4px;
                text-decoration: none;
                transition: background-color 0.3s;
            }
            .login-button:hover {
                background-color: #0056b3;
            }
        </style>
    </head>
    <body>
        <div class="error-container">
            <div class="error-icon">⚠️</div>
            <h1 class="error-title">Acceso Denegado</h1>
            <p class="error-message">Lo sentimos, debes iniciar sesión para acceder a esta página.</p>
            <a href="login.php" class="login-button">Iniciar Sesión</a>
        </div>
    </body>
    </html>
    <?php
    exit;
}

// Verificar si hay token
if (empty($_GET['token'])) {
    die('Token no proporcionado');
}

$token = $_GET['token'];

// Obtener información del pedido
$db = new Database();

// Obtener configuración
$config = $db->query("SELECT con_decimales, moneda, color_principal, color_secundario, favicon FROM configuracion LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$decimales = $config['con_decimales'] ? 2 : 0;
$moneda = $config['moneda'];
$colorPrincipal = $config['color_principal'];
$colorSecundario = $config['color_secundario'];
$favicon = $config['favicon'];

$pedido = $db->query(
    "SELECT p.*, GROUP_CONCAT(CONCAT(pr.titulo, ' x ', pd.cantidad) SEPARATOR '\n') as detalle
     FROM pedidos p
     JOIN pedidos_detalle pd ON p.id = pd.id_pedido
     JOIN productos pr ON pd.id_producto = pr.id
     WHERE p.token = ? AND p.estado = 'pendiente'
     GROUP BY p.id",
    [$token]
)->fetch(PDO::FETCH_ASSOC);

if (!$pedido) {
    ?>
    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Pedido No Encontrado</title>
        <link rel="icon" type="image/x-icon" href="uploads/config/<?php echo htmlspecialchars($favicon); ?>">
        <style>
            body {
                font-family: 'Segoe UI', sans-serif;
                display: flex;
                align-items: center;
                justify-content: center;
                min-height: 100vh;
                margin: 0;
                background: #f5f5f5;
            }
            .error-container {
                text-align: center;
                background: white;
                padding: 2rem;
                border-radius: 8px;
                box-shadow: 0 2px 4px rgba(0,0,0,0.1);
                max-width: 400px;
            }
            .error-icon {
                font-size: 4rem;
                margin-bottom: 1rem;
            }
            .error-title {
                color: <?php echo $colorPrincipal; ?>;
                margin-bottom: 1rem;
            }
            .error-message {
                color: #666;
                margin-bottom: 1.5rem;
            }
            .home-button {
                display: inline-block;
                padding: 10px 20px;
                background: <?php echo $colorPrincipal; ?>;
                color: white;
                text-decoration: none;
                border-radius: 4px;
                transition: opacity 0.3s;
            }
            .home-button:hover {
                opacity: 0.9;
            }
        </style>
    </head>
    <body>
        <div class="error-container">
            <div class="error-icon">🔍</div>
            <h1 class="error-title">Pedido No Encontrado</h1>
            <p class="error-message">Lo sentimos, el pedido que buscas no existe o ya ha sido procesado.</p>
            <a href="index.php" class="home-button">Volver al Inicio</a>
        </div>
    </body>
    </html>
    <?php
    exit;
}

// Consultar clientes
$clientes = $db->query("SELECT id_cliente, tipo_documento, numero_documento, nombre, apellidos FROM clientes")->fetchAll();
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pedido #<?php echo $pedido['id']; ?> - VENTA</title>
    <link rel="icon" type="image/x-icon" href="uploads/config/<?php echo htmlspecialchars($favicon); ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
    <style>
        body { 
            font-family: 'Segoe UI', sans-serif; 
            margin: 0; 
            padding: 20px; 
            background: #f5f5f5; 
        }
        .container { 
            max-width: 600px; 
            margin: 0 auto; 
            background: white; 
            padding: 20px; 
            border-radius: 8px; 
            box-shadow: 0 2px 4px rgba(0,0,0,0.1); 
        }
        h1 {
            color: <?php echo $colorPrincipal; ?>;
        }
        .btn { 
            display: inline-block; 
            padding: 10px 20px; 
            border: none; 
            border-radius: 4px; 
            cursor: pointer; 
            text-decoration: none; 
            margin: 5px; 
        }
        #btnProcesarVenta {
            background: <?php echo $colorPrincipal; ?>; 
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 4px;
            cursor: pointer;
        }
        .btn-danger { 
            background: <?php echo $colorSecundario; ?>; 
            color: white; 
        }
        .detalles { 
            white-space: pre-line; 
            margin: 20px 0; 
            padding: 10px; 
            background: #f8f8f8; 
            border-radius: 4px; 
        }
        #mensajeError { 
            color: red; 
        }
        select {
            width: 100%;
            padding: 8px;
            margin-bottom: 15px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        select:focus {
            outline: none;
            border-color: <?php echo $colorPrincipal; ?>;
            box-shadow: 0 0 5px rgba(<?php echo hex2rgb($colorPrincipal); ?>, 0.3);
        }
        strong {
            color: <?php echo $colorPrincipal; ?>;
        }
        #btnProcesarVenta:hover {
            opacity: 0.9;
        }
        .btn-danger:hover {
            opacity: 0.9;
        }
        .buttons-container {
            display: flex;
            gap: 10px;
            margin-top: 20px;
            justify-content: flex-start;
            align-items: center;
        }

        #btnProcesarVenta, .btn-danger {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Pedido #<?php echo $pedido['id']; ?></h1>
        <div class="detalles">
            <strong>Fecha:</strong> <?php echo date('d/m/Y H:i', strtotime($pedido['fecha'])); ?><br>
            <strong>Total:</strong> <?php echo $moneda; ?> <?php echo number_format($pedido['total'], $decimales); ?><br>
            <strong>Detalle:</strong><br><?php echo $pedido['detalle']; ?>
        </div>
        <form id="formProcesarVenta">
            <select name="cliente" id="cliente" required>
                <option value="">Seleccione un cliente</option>
                <?php foreach($clientes as $cliente): ?>
                    <option value="<?php echo htmlspecialchars($cliente['id_cliente']); ?>">
                        <?php echo htmlspecialchars($cliente['nombre'] . ' ' . $cliente['apellidos'] . ' - ' . $cliente['numero_documento']); ?>
                    </option>
                <?php endforeach; ?>
            </select>
            
            <input type="hidden" id="token" name="token" value="<?php echo htmlspecialchars($_GET['token'] ?? ''); ?>">
            <div class="buttons-container">
                <button type="submit" id="btnProcesarVenta">
                    <i class="fas fa-check-circle"></i> Procesar Venta
                </button>
                <button type="button" onclick="cancelarPedido()" class="btn btn-danger">
                    <i class="fas fa-times"></i> Cancelar Pedido
                </button>
            </div>
        </form>
        <div id="mensajeError"></div>
    </div>

    <script>
    document.getElementById('formProcesarVenta').addEventListener('submit', async function(e) {
        e.preventDefault();
        const mensajeError = document.getElementById('mensajeError');
        
        try {
            const formData = {
                token: document.getElementById('token').value,
                estado: 'procesado',
                cliente_id: document.getElementById('cliente').value
            };

            if (!formData.token || !formData.cliente_id) {
                throw new Error('Por favor complete todos los campos');
            }

            console.log('Enviando datos:', formData); // Debug

            const response = await fetch('actualizar_estado_pedido.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json'
                },
                body: JSON.stringify(formData)
            });

            if (!response.ok) {
                throw new Error(`Error HTTP: ${response.status}`);
            }

            const responseText = await response.text(); // Debug
            console.log('Respuesta raw:', responseText); // Debug

            let data;
            try {
                data = JSON.parse(responseText);
            } catch (e) {
                throw new Error('Respuesta inválida del servidor: ' + responseText);
            }

            if (data.success) {
                alert('Venta procesada correctamente');
                // Redirigir a index.php
                window.location.href = data.redirect;
            } else {
                throw new Error(data.error || 'Error desconocido');
            }
        } catch (error) {
            mensajeError.textContent = 'Error: ' + error.message;
            console.error('Error completo:', error);
        }
    });

    function cancelarPedido() {
        if (!confirm('¿Está seguro de que desea cancelar el pedido?')) return;
        
        const id_pedido = <?php echo $pedido['id']; ?>;
        
        fetch('admin_pedido.php?token=<?php echo $token; ?>', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            body: 'cancelar_pedido=1&id_pedido=' + id_pedido
        })
        .then(response => {
            if (response.ok) {
                alert('Pedido cancelado correctamente');
                window.location.href = 'index.php';
            } else {
                throw new Error('Error al cancelar el pedido');
            }
        })
        .catch(error => {
            alert(error.message);
        });
    }
    </script>

    <?php
    if (isset($_POST['cancelar_pedido'])) {
        $id_pedido = $_POST['id_pedido'];
        
        if (!$id_pedido) {
            echo "Error: ID de pedido no proporcionado";
            exit;
        }

        try {
            $stmt = $db->prepare("UPDATE pedidos SET estado = 'cancelado' WHERE id = ?");
            $result = $stmt->execute([$id_pedido]);
            
            if ($result) {
                echo "success";
            } else {
                echo "Error al cancelar el pedido";
            }
        } catch (Exception $e) {
            echo "Error: " . $e->getMessage();
        }
        exit;
    }
    ?>
</body>

<?php
    // Modo oscuro
    require_once 'includes/dark_mode.php';
    ?>
    <meta name="color-scheme" content="light dark">
    <?php echo getDarkModeStyles(); ?>
</html>