false, 'error' => 'Acceso no autorizado.']); logError("Error de autenticación"); exit; } logError("Usuario autenticado: " . json_encode(['id' => $userData->userId, 'username' => $userData->username])); // Verificar método if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['success' => false, 'error' => 'Método no permitido.']); logError("Método no permitido: " . $_SERVER['REQUEST_METHOD']); exit; } // Obtener datos del cuerpo de la petición $input = file_get_contents('php://input'); $data = json_decode($input, true); $template_id = $data['id'] ?? null; logError("Datos recibidos", ['input' => $input, 'data' => $data, 'template_id' => $template_id]); // Validar ID if (!$template_id || !is_numeric($template_id)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'ID de plantilla inválido o no proporcionado.']); logError("ID de plantilla inválido", ['template_id' => $template_id]); exit; } // Conectar a la base de datos try { $db = getDB(); logError("Conexión a BD exitosa"); } catch (Exception $e) { logError("Error al conectar a la base de datos", $e->getMessage()); throw $e; } // Iniciar transacción $db->beginTransaction(); logError("Transacción iniciada"); try { // 1. Eliminar comandos asociados (si existen) $stmt = $db->prepare("DELETE FROM comandos_discord WHERE plantilla_id = ?"); $stmt->execute([$template_id]); $deletedCommands = $stmt->rowCount(); logError("Comandos eliminados", ['count' => $deletedCommands]); // 2. Intentar eliminar la plantilla $stmt = $db->prepare("DELETE FROM plantillas_discord WHERE id = ?"); $stmt->execute([$template_id]); $deleted = $stmt->rowCount(); if ($deleted > 0) { $db->commit(); logError("Plantilla eliminada exitosamente", ['id' => $template_id]); echo json_encode(['success' => true]); } else { $db->rollBack(); http_response_code(404); logError("No se encontró la plantilla para eliminar", ['id' => $template_id]); echo json_encode(['success' => false, 'error' => 'No se encontró la plantilla para eliminar.']); } } catch (Exception $e) { $db->rollBack(); logError("Error en la transacción", [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); http_response_code(500); echo json_encode([ 'success' => false, 'error' => 'Ocurrió un error en el servidor.', 'detail' => $e->getMessage() ]); } } catch (Exception $e) { logError("Error no manejado", [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); http_response_code(500); echo json_encode([ 'success' => false, 'error' => 'Error interno del servidor.', 'detail' => $e->getMessage() ]); } // Limpiar cualquier salida no deseada ob_end_flush();