<?php
session_start();
include '../../../script/conexion.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    exit('Método no permitido');
}

if (!hash_equals($_SESSION['csrf'] ?? '', $_POST['csrf'] ?? '')) {
    http_response_code(403);
    exit('Token CSRF inválido');
}

$id_pedido           = isset($_POST['id_pedido']) ? (int)$_POST['id_pedido'] : 0;
$referencia_producto = trim((string)($_POST['referencia_producto'] ?? ''));
$talla               = trim((string)($_POST['talla'] ?? ''));

if ($id_pedido <= 0 || $referencia_producto === '' || $talla === '') {
    http_response_code(400);
    exit('Parámetros incorrectos');
}

$conn->begin_transaction();

try {
    $stmt = $conn->prepare("DELETE FROM pedido_detalle WHERE id_pedido = ? AND referencia_producto = ? AND talla = ?");
    $stmt->bind_param('iss', $id_pedido, $referencia_producto, $talla);
    $stmt->execute();
    $stmt->close();

    if ($conn->query("SHOW TABLES LIKE 'pedido_detalle_origen'")->num_rows > 0) {
        $stmt = $conn->prepare("DELETE FROM pedido_detalle_origen WHERE id_pedido = ? AND referencia_producto = ? AND talla = ?");
        $stmt->bind_param('iss', $id_pedido, $referencia_producto, $talla);
        $stmt->execute();
        $stmt->close();
    }

    $stmt = $conn->prepare("SELECT nombre_tercero FROM pedido WHERE id = ?");
    $stmt->bind_param('i', $id_pedido);
    $stmt->execute();
    $res = $stmt->get_result();
    $rowPedido = $res ? $res->fetch_assoc() : null;
    $stmt->close();

    $paths = ['../../../clases/class-referencia.php', '../../../clases-fabrica/class-referencia.php'];
    foreach ($paths as $path) {
        if (file_exists($path)) {
            $class_referencia = $referencia_producto;
            $class_talla = $talla;
            include $path;
            break;
        }
    }

    $paths = ['../../../clases/class-cierre.php', '../../../clases-fabrica/class-cierre.php'];
    foreach ($paths as $path) {
        if (file_exists($path)) {
            $class_nombre_tercero_cierre = $rowPedido['nombre_tercero'] ?? '';
            $class_referencia_cierre = $referencia_producto;
            $class_talla_cierre = $talla;
            include $path;
            break;
        }
    }

    $conn->commit();
    header("Location: ../pedido-detalle.php?id_pedido=$id_pedido");
    exit;
} catch (Throwable $e) {
    $conn->rollback();
    http_response_code(500);
    echo 'Error en la transacción: ' . $e->getMessage();
}
