false, 'error' => 'No autenticado: ' . $e->getMessage()]); exit; } if (!hasPermission('manage_templates', 'discord')) { http_response_code(403); echo json_encode(['success' => false, 'error' => 'No tienes permiso para crear plantillas de Discord.']); exit; } if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['success' => false, 'error' => 'Método no permitido.']); exit; } $data = json_decode(file_get_contents('php://input'), true); $nombre = trim($data['nombre'] ?? ''); $comando = ltrim(trim($data['comando'] ?? ''), '#/'); $contenido = $data['contenido'] ?? ''; if (empty($nombre) || empty($contenido)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'El nombre y el contenido de la plantilla son obligatorios.']); exit; } $db = getDB(); try { $db->beginTransaction(); // 1. Verificar si el comando ya existe en la tabla `comandos_discord` if (!empty($comando)) { $stmt = $db->prepare("SELECT id FROM comandos_discord WHERE comando = ?"); $stmt->execute([$comando]); if ($stmt->fetch()) { $db->rollBack(); http_response_code(409); // Conflict echo json_encode(['success' => false, 'error' => 'Ya existe un comando con ese nombre.']); exit; } } // 2. Insertar la plantilla (sin la columna `comando`) $stmt = $db->prepare(" INSERT INTO plantillas_discord (nombre, contenido, usuario_id, fecha_creacion, fecha_modificacion) VALUES (?, ?, ?, NOW(), NOW()) "); $stmt->execute([$nombre, $contenido, $userData->userId]); $newTemplateId = $db->lastInsertId(); // 3. Si hay un comando, insertarlo en la tabla `comandos_discord` if (!empty($comando)) { logToFile('discord/templates.log', "Intentando insertar comando en comandos_discord. Comando: {$comando}, Plantilla ID: {$newTemplateId}", 'INFO'); $stmt = $db->prepare(" INSERT INTO comandos_discord (comando, descripcion, plantilla_id) VALUES (?, ?, ?) "); // Usamos el nombre de la plantilla como descripción por defecto $stmt->execute([$comando, $nombre, $newTemplateId]); logToFile('discord/templates.log', "Comando insertado en comandos_discord. Comando: {$comando}, Plantilla ID: {$newTemplateId}", 'INFO'); } $db->commit(); logToFile('discord/templates.log', "Plantilla creada: {$nombre} (ID: {$newTemplateId}), por Usuario: {$userData->username}"); echo json_encode([ 'success' => true, 'message' => 'Plantilla creada correctamente.', 'templateId' => $newTemplateId ]); } catch (Exception $e) { if ($db->inTransaction()) { $db->rollBack(); } http_response_code(500); logToFile('discord/errors.log', 'Error creando plantilla: ' . $e->getMessage(), 'ERROR'); echo json_encode(['success' => false, 'error' => 'Ocurrió un error en el servidor al crear la plantilla.']); }