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

// Verificar si el usuario es admin
$isAdmin = false;
if (isset($_SESSION['usuario_id']) && isset($_SESSION['rol']) && $_SESSION['rol'] === 'admin') {
    $isAdmin = true;
}


// Inicializar el carrito si no existe
if (!isset($_SESSION['carrito'])) {
    $_SESSION['carrito'] = [];
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $id = isset($_POST['id']) ? intval($_POST['id']) : 0;
    $action = isset($_POST['action']) ? $_POST['action'] : '';
    $cantidad = isset($_POST['cantidad']) ? intval($_POST['cantidad']) : 1;
    $precio_seleccionado = isset($_POST['precio_seleccionado']) ? $_POST['precio_seleccionado'] : 'precio_venta1';
    $precio_oferta = isset($_POST['precio_oferta']) ? floatval($_POST['precio_oferta']) : 0;
    $tiene_oferta = isset($_POST['tiene_oferta']) && $_POST['tiene_oferta'] == '1';

    switch ($action) {
        case 'add':
            if (isset($_SESSION['carrito'][$id])) {
                $_SESSION['carrito'][$id]['cantidad'] = ($_SESSION['carrito'][$id]['cantidad'] ?? 1) + 1;
                
                // Si el producto ahora viene con oferta, actualizar siempre
                if ($tiene_oferta && $precio_oferta > 0) {
                    $_SESSION['carrito'][$id]['precio_oferta'] = $precio_oferta;
                    $_SESSION['carrito'][$id]['tiene_oferta'] = true;
                    // Limpiar precio seleccionado si ahora tiene oferta
                    unset($_SESSION['carrito'][$id]['precio_seleccionado']);
                } elseif (!isset($_SESSION['carrito'][$id]['precio_seleccionado']) && !isset($_SESSION['carrito'][$id]['tiene_oferta'])) {
                    $_SESSION['carrito'][$id]['precio_seleccionado'] = 'precio_venta1';
                }
            } else {
                $item_carrito = [
                    'cantidad' => 1
                ];
                
                // Si tiene oferta, usar precio de oferta, sino precio normal
                if ($tiene_oferta && $precio_oferta > 0) {
                    $item_carrito['precio_oferta'] = $precio_oferta;
                    $item_carrito['tiene_oferta'] = true;
                } else {
                    $item_carrito['precio_seleccionado'] = $precio_seleccionado ?? 'precio_venta1';
                }
                
                $_SESSION['carrito'][$id] = $item_carrito;
            }

            break;
            
        case 'remove':
            unset($_SESSION['carrito'][$id]);
            break;
            
        case 'update':
            if ($cantidad > 0) {
                if (!isset($_SESSION['carrito'][$id])) {
                    $item_carrito = [
                        'cantidad' => $cantidad,
                        'precio_seleccionado' => 'precio_venta1'
                    ];
                    
                    // Mantener información de oferta si existe
                    if ($tiene_oferta && $precio_oferta > 0) {
                        $item_carrito['precio_oferta'] = $precio_oferta;
                        $item_carrito['tiene_oferta'] = true;
                    }
                    
                    $_SESSION['carrito'][$id] = $item_carrito;
                } else {
                    $_SESSION['carrito'][$id]['cantidad'] = $cantidad;
                    
                    // Actualizar información de oferta si se proporciona
                    if ($tiene_oferta && $precio_oferta > 0) {
                        $_SESSION['carrito'][$id]['precio_oferta'] = $precio_oferta;
                        $_SESSION['carrito'][$id]['tiene_oferta'] = true;
                    }
                }
            } else {
                unset($_SESSION['carrito'][$id]);
            }
            break;

        case 'update_price':
            if ($isAdmin) {
                if (isset($_SESSION['carrito'][$id])) {
                    if ($precio_seleccionado === 'precio_oferta') {
                        // Obtener el precio de oferta del producto desde la base de datos
                        $db = new Database();
                        $producto_oferta = $db->query("SELECT oferta FROM productos WHERE id = ?", [$id])->fetch(PDO::FETCH_ASSOC);
                        
                        if ($producto_oferta && !empty($producto_oferta['oferta']) && $producto_oferta['oferta'] > 0) {
                            $_SESSION['carrito'][$id]['precio_oferta'] = $producto_oferta['oferta'];
                            $_SESSION['carrito'][$id]['tiene_oferta'] = true;
                            unset($_SESSION['carrito'][$id]['precio_seleccionado']); // Limpiar precio normal
                            
                            header('Content-Type: application/json');
                            echo json_encode([
                                'success' => true,
                                'message' => 'Precio de oferta aplicado',
                                'precio' => 'precio_oferta'
                            ]);
                            exit;
                        }
                    } elseif (in_array($precio_seleccionado, ['precio_venta1', 'precio_venta2', 'precio_venta3'])) {
                        $_SESSION['carrito'][$id]['precio_seleccionado'] = $precio_seleccionado;
                        // Limpiar información de oferta si se selecciona precio normal
                        unset($_SESSION['carrito'][$id]['precio_oferta']);
                        unset($_SESSION['carrito'][$id]['tiene_oferta']);
                        
                        // Responder con JSON
                        header('Content-Type: application/json');
                        echo json_encode([
                            'success' => true,
                            'message' => 'Precio actualizado',
                            'precio' => $precio_seleccionado
                        ]);
                        exit;
                    } else {
                        error_log("Precio inválido: " . $precio_seleccionado);
                    }
                } else {
                    error_log("Producto no encontrado en el carrito");
                }
            } else {
                error_log("Usuario no es admin");
            }
            break;

        case 'clear':
            $_SESSION['carrito'] = [];
            break;
    }
}

// Redirigir de vuelta
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'index.php';
header('Location: ' . $referer);
exit;