n8n-nodes-mautic-advanced
Version:
Enhanced n8n node for Mautic with comprehensive API coverage including tags, campaigns, categories, and advanced contact management
100 lines (99 loc) • 4.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeNoteOperation = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const ApiHelpers_1 = require("../utils/ApiHelpers");
const DataHelpers_1 = require("../utils/DataHelpers");
async function executeNoteOperation(context, operation, i) {
let responseData;
try {
switch (operation) {
case 'create':
responseData = await createNote(context, i);
break;
case 'update':
responseData = await updateNote(context, i);
break;
case 'get':
responseData = await getNote(context, i);
break;
case 'getAll':
responseData = await getAllNotes(context, i);
break;
case 'delete':
responseData = await deleteNote(context, i);
break;
default:
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for Note resource.`, { itemIndex: i });
}
return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData));
}
catch (error) {
return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'Note');
}
}
exports.executeNoteOperation = executeNoteOperation;
async function createNote(context, itemIndex) {
const lead = (0, ApiHelpers_1.getRequiredParam)(context, 'lead', itemIndex);
const text = (0, ApiHelpers_1.getRequiredParam)(context, 'text', itemIndex);
const type = (0, ApiHelpers_1.getOptionalParam)(context, 'type', itemIndex, 'general');
const datetime = (0, ApiHelpers_1.getOptionalParam)(context, 'datetime', itemIndex, '');
const body = {
lead,
text,
type,
};
if (datetime) {
body.datetime = datetime;
}
const endpoint = '/notes/new';
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', endpoint, body);
return response.note;
}
async function updateNote(context, itemIndex) {
const noteId = (0, ApiHelpers_1.getRequiredParam)(context, 'noteId', itemIndex);
const createIfNotFound = (0, ApiHelpers_1.getOptionalParam)(context, 'createIfNotFound', itemIndex, false);
const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {});
const body = {};
if (updateFields.text !== undefined) {
body.text = updateFields.text;
}
if (updateFields.type !== undefined) {
body.type = updateFields.type;
}
if (updateFields.datetime !== undefined) {
body.datetime = updateFields.datetime;
}
const endpoint = `/notes/${noteId}/edit`;
const method = createIfNotFound ? 'PUT' : 'PATCH';
const response = await (0, ApiHelpers_1.makeApiRequest)(context, method, endpoint, body);
return response.note;
}
async function getNote(context, itemIndex) {
const noteId = (0, ApiHelpers_1.getRequiredParam)(context, 'noteId', itemIndex);
const endpoint = `/notes/${noteId}`;
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', endpoint);
return (0, DataHelpers_1.convertNumericStrings)(response.note);
}
async function getAllNotes(context, itemIndex) {
const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false);
const limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, 50);
const options = (0, ApiHelpers_1.getOptionalParam)(context, 'options', itemIndex, {});
const query = (0, DataHelpers_1.buildQueryFromOptions)(options);
if (returnAll) {
const result = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'notes', 'GET', '/notes', {}, query);
return (0, DataHelpers_1.convertNumericStrings)(result);
}
else {
query.limit = limit;
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/notes', {}, query);
const data = Object.values(response.notes || {});
return (0, DataHelpers_1.convertNumericStrings)(data);
}
}
async function deleteNote(context, itemIndex) {
const noteId = (0, ApiHelpers_1.getRequiredParam)(context, 'noteId', itemIndex);
const endpoint = `/notes/${noteId}/delete`;
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', endpoint);
return response.note;
}