<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

if (!isset($_SESSION["user_id"])) {
    echo json_encode(["error" => "Acceso denegado"]);
    exit;
}

// Incluir el archivo de conexión
require_once "conexion.php";

// Recibir el ID del trabajo
if (isset($_POST["trabajo_id"])) {
    $trabajo_id = $_POST["trabajo_id"];

    // Iniciar transacción
    $conn->begin_transaction();

    try {
        // Obtener el trabajo_id_hidden y serie_nueva del trabajo en trabajos_formulario
        $stmtTrabajo = $conn->prepare("SELECT trabajo_id_hidden, serie_nueva FROM trabajos_formulario WHERE id = ?");
        $stmtTrabajo->bind_param("i", $trabajo_id);
        $stmtTrabajo->execute();
        $resultadoTrabajo = $stmtTrabajo->get_result();
        
        if ($resultadoTrabajo->num_rows > 0) {
            $rowTrabajo = $resultadoTrabajo->fetch_assoc();
            $trabajo_id_hidden = $rowTrabajo['trabajo_id_hidden'];
            $serie_nueva = $rowTrabajo['serie_nueva'];
        } else {
            throw new Exception("Trabajo no encontrado");
        }

        // Eliminar el trabajo de la tabla trabajos_formulario
        $stmt = $conn->prepare("DELETE FROM trabajos_formulario WHERE id = ?");
        $stmt->bind_param("i", $trabajo_id);
        if (!$stmt->execute()) {
            throw new Exception("Error al eliminar el trabajo: " . $stmt->error);
        }

        // Eliminar las herramientas asociadas al trabajo
        $stmtHerramientas = $conn->prepare("DELETE FROM herramientas WHERE trabajo_id = ?");
        $stmtHerramientas->bind_param("i", $trabajo_id);
        if (!$stmtHerramientas->execute()) {
            throw new Exception("Error al eliminar las herramientas: " . $stmtHerramientas->error);
        }

        // Actualizar las series relacionadas a "No usado" usando serie_nueva
        $stmtSeries = $conn->prepare("UPDATE series SET estado = 'No usado' WHERE serie = ?");
        $stmtSeries->bind_param("s", $serie_nueva); // Usamos serie_nueva en lugar de trabajo_id
        if (!$stmtSeries->execute()) {
            throw new Exception("Error al actualizar el estado de las series: " . $stmtSeries->error);
        }

        // Cambiar el estado del trabajo a "Pendiente" en la tabla trabajos usando trabajo_id_hidden
        $stmtEstadoTrabajo = $conn->prepare("UPDATE trabajos SET estado = 'Pendiente' WHERE valida_cod_pedido = ?");
        $stmtEstadoTrabajo->bind_param("i", $trabajo_id_hidden); // Usamos trabajo_id_hidden en lugar de trabajo_id
        if (!$stmtEstadoTrabajo->execute()) {
            throw new Exception("Error al actualizar el estado del trabajo: " . $stmtEstadoTrabajo->error);
        }

        // Confirmar transacción
        $conn->commit();

        echo json_encode(["success" => true, "message" => "Pedido anulado correctamente"]);

    } catch (Exception $e) {
        // Revertir transacción en caso de error
        $conn->rollback();
        echo json_encode(["success" => false, "message" => $e->getMessage()]);
    }
} else {
    echo json_encode(["error" => "ID de trabajo no proporcionado"]);
}

$conn->close();
?>
