<?php

ini_set('display_errors', 1); // No mostrar errores en pantalla en producción
ini_set('log_errors', 1);
ini_set('error_log', '/ruta/a/tu/error.log'); // Ajusta la ruta según tu servidor
error_reporting(E_ALL);


// carrito.php (sección PHP)
date_default_timezone_set('America/Mexico_City');
$currentDate = date('Y-m-d H:i:s');

// Incluir modelos
require_once '../models/model_producto.php';
require_once '../models/model_pedido.php';
require_once '../models/model_detalle_pedido.php';

// Incluir controlador
require_once '../controllers/controller_carrito.php';

// Incluir configuración de Mercado Pago
require_once '../services/config_mercadopago.php';
require_once '../models/model_config_envio.php';

$productoModel = new ModelProducto();
$envioConfig = (new ModelConfigEnvio())->getConfig();
$errorCarrito = isset($_GET['error']) ? trim($_GET['error']) : '';
$pedidoModel = new Pedido();
$detallePedidoModel = new DetallePedido();

// Obtener ítems del carrito desde la URL
$cartItems = [];
$preference_id = null;
$totalAmount = 0;

if (isset($_GET['cartItems'])) {
    try {
        $cartItems = json_decode(urldecode($_GET['cartItems']), true);
        if (json_last_error() === JSON_ERROR_NONE && is_array($cartItems)) {
            $totalAmount = array_reduce($cartItems, function ($sum, $item) {
                return $sum + (floatval($item['price']) * intval($item['quantity']));
            }, 0);
        }
    } catch (Exception $e) {
        error_log('Exception in carrito.php: ' . $e->getMessage());
    }
}
?>

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Finaliza tu pedido en Taquería El Mexicano">
    <meta name="author" content="xAI">
    <title>Taquería El Mexicano | Finalizar Pedido</title>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    <link rel="stylesheet" href="css/carrito.css">
    
    
<!-- Meta Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '2057411288352776');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=2057411288352776&ev=PageView&noscript=1"
/></noscript>
<!-- End Meta Pixel Code -->
</head>

<body>
     <a href="https://taqueriaelmexicano.com.mx/views/menu.php" id="backToMenuBtn" class="back-to-menu-btn">
    Regresar
</a>
    <!-- Nuevo contenedor del loader de pantalla completa, inicialmente oculto -->
    <div id="loader-overlay" class="loader-overlay" style="display:none;">
        <div class="loader"></div>
    </div>

    <?php if (!empty($errorCarrito)): ?>
    <div class="alert-banner error" role="alert"><?= htmlspecialchars($errorCarrito) ?></div>
    <?php endif; ?>
    
    <div class="container">
        <section class="order-section">
            <h2>Finaliza tu Pedido</h2>
            <form id="order-form" action="procesar_pedido.php" method="POST">
                <!-- Campos ocultos -->
                <input type="hidden" name="cartItems" id="cartItemsHidden">
                <input type="hidden" name="totalAmount" id="totalAmountHidden">
                <input type="hidden" name="deliveryRequested" id="deliveryRequestedHidden" value="0">
                <input type="hidden" name="status" value="PENDIENTE">
                <input type="hidden" name="orderDate" value="<?php echo htmlspecialchars($currentDate); ?>">
                <input type="hidden" name="latitude" id="latitudeInput">
                <input type="hidden" name="longitude" id="longitudeInput">
                <input type="hidden" name="paymentMethod" id="paymentMethodHidden">

                <!-- Opción de entrega a domicilio -->
                <div id="deliveryOptionContainer" class="delivery-option-wrap" style="<?= (int)$envioConfig['envio_habilitado'] ? '' : 'display:none;' ?>">
                    <div class="form-check form-switch mb-3">
                        <input class="form-check-input" type="checkbox" id="deliveryCheckbox">
                        <label class="form-check-label" for="deliveryCheckbox">
                            <i class="fas fa-motorcycle"></i>
                            <span id="deliveryLabelText">Pedir a domicilio</span>
                        </label>
                    </div>
                    <p id="shippingHint" class="shipping-hint"></p>
                </div>

                <!-- Campos para entrega a domicilio -->
                <div class="delivery-fields" id="deliveryFields">
                    <!-- Dirección en texto -->
                    <div class="form-group">
                        <label for="addressText">Dirección (Ej. Calle, Colonia, C.P.)</label>
                        <textarea id="addressText" name="addressText" rows="3"></textarea>
                    </div>

                    <!-- Referencias -->
                    <div class="form-group">
                        <label for="references">Referencias (Ej. Color de casa, carro, etc.)</label>
                        <textarea id="references" name="references" rows="2" maxlength="150" placeholder="Ej. Casa verde cerca del parque"></textarea>
                    </div>

                    <!-- Grupo de búsqueda y geolocalización -->
                    <div class="form-group">
                        <label for="addressSearch">Seleccione su dirección en el mapa o use el GPS (IMPORTANTE)</label>
                        <div class="search-group">
                            <input type="text" id="addressSearch" name="addressSearch"
                                placeholder="Ingresa una dirección o haz clic en el mapa">
                            <button type="button" onclick="searchAddress()">
                                <i class="fas fa-search"></i>
                            </button>
                            <button type="button" id="locateButton" title="Usar mi ubicación actual">
                                <i class="fas fa-location-arrow"></i>
                            </button>
                        </div>
                        <div id="map" style="height: 300px; margin-top: 15px;"></div>
                        <p id="selected-location">Ubicación no seleccionada</p>
                    </div>
                </div>

                <!-- Contenedor para Nombre y Teléfono -->
                <div class="form-row">
                    <!-- Nombre completo -->
                    <div class="form-group">
                        <label for="fullName">Nombre Completo</label>
                        <input type="text" id="fullName" name="fullName" required maxlength="100" pattern="^[A-ZÁÉÍÓÚÑÜ\s]+$" title="Solo caracteres en mayúscula, espacios y acentos permitidos. Máximo 100 caracteres.">
                    </div>

                    <!-- Número de teléfono -->
                    <div class="form-group">
                        <label for="phoneNumber">Número de Teléfono</label>
                        <input type="tel" id="phoneNumber" name="phoneNumber" required pattern="[0-9]{10}" maxlength="10" title="Solo 10 números.">
                    </div>
                </div>

                <!-- Mensaje y mapa para retiro en sucursal -->
                <div class="pickup-message" id="pickupMessage">
                    <p>Tu pedido es para retirar en sucursal. Dirección:</p>
                    <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d4561.365273075691!2d-99.51827512417837!3d17.573547897414247!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x85cbedf45637e39d%3A0xb7c394e6d0b7cd97!2sTaqueria%20El%20Mexicano!5e1!3m2!1ses-419!2smx!4v1754765009752!5m2!1ses-419!2smx" class="pickup-map" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
                </div>

                <!-- Resumen de montos -->
                <div class="total-breakdown">
                    <p class="line-total">Subtotal productos: $<span id="subtotalDisplay">0.00</span> MXN</p>
                    <p class="line-total" id="shippingLine" style="display:none;">Envío a domicilio: $<span id="shippingDisplay">0.00</span> MXN</p>
                    <div class="total-display">
                        Total a pagar: $<span id="totalAmountDisplay">0.00</span> MXN
                    </div>
                </div>

                <h3 class="payment-methods-title">Elige tu método de pago:</h3>

                <!-- Contenedor para botones de pago -->
                <div class="payment-buttons">
                    <button type="submit" class="payment-btn cash-btn" id="cash-btn" name="paymentMethod" value="cash" disabled>
                        <i class="fas fa-money-bill-wave"></i> Pagar en Efectivo
                    </button>
                    <button type="button" class="payment-btn mp-btn" id="mp-btn" name="paymentMethod" value="mercadopago" disabled>
                        <i class="fas fa-credit-card"></i> Pagar con Mercado Pago
                    </button>
                </div>
            </form>
        </section>
    </div>
    
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
    <script src="https://sdk.mercadopago.com/js/v2"></script>
    <script>
        window.ENVIO_CONFIG = <?= json_encode([
            'minimo_compra_gratis' => (float)$envioConfig['minimo_compra_gratis'],
            'costo_envio' => (float)$envioConfig['costo_envio'],
            'envio_habilitado' => (int)$envioConfig['envio_habilitado'] === 1,
        ], JSON_UNESCAPED_UNICODE) ?>;
    </script>
    <script src="js/carrito.js"></script>

</body>

</html>