UNPKG

n8n-nodes-mautic-advanced

Version:

Enhanced n8n node for Mautic with comprehensive API coverage including tags, campaigns, categories, and advanced contact management

164 lines (163 loc) 6.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeUserOperation = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ApiHelpers_1 = require("../utils/ApiHelpers"); const DataHelpers_1 = require("../utils/DataHelpers"); async function executeUserOperation(context, operation, i) { let responseData; try { switch (operation) { case 'create': responseData = await createUser(context, i); break; case 'update': responseData = await updateUser(context, i); break; case 'get': responseData = await getUser(context, i); break; case 'getAll': responseData = await getAllUsers(context, i); break; case 'delete': responseData = await deleteUser(context, i); break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for User resource.`, { itemIndex: i }); } return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData)); } catch (error) { return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'User'); } } exports.executeUserOperation = executeUserOperation; async function createUser(context, itemIndex) { const username = (0, ApiHelpers_1.getRequiredParam)(context, 'username', itemIndex); const email = (0, ApiHelpers_1.getRequiredParam)(context, 'email', itemIndex); const body = { username, email, }; const firstName = (0, ApiHelpers_1.getOptionalParam)(context, 'firstName', itemIndex, undefined); const lastName = (0, ApiHelpers_1.getOptionalParam)(context, 'lastName', itemIndex, undefined); if (firstName) body.firstName = firstName; if (lastName) body.lastName = lastName; // Password const plainPassword = (0, ApiHelpers_1.getOptionalParam)(context, 'plainPassword', itemIndex, undefined); if (plainPassword && plainPassword.passwordValues) { const { passwordValues } = plainPassword; const password = passwordValues.password; const confirm = passwordValues.confirm; if (password || confirm) { body.plainPassword = { password, confirm, }; } } const role = (0, ApiHelpers_1.getOptionalParam)(context, 'role', itemIndex, undefined); if (role !== undefined) { body.role = role; } const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const { isPublished, position, timezone, locale, onlineStatus, signature, ...rest } = additionalFields; if (isPublished !== undefined) body.isPublished = isPublished; if (position) body.position = position; if (timezone) body.timezone = timezone; if (locale) body.locale = locale; if (onlineStatus) body.onlineStatus = onlineStatus; if (signature) body.signature = signature; Object.assign(body, rest); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', '/users/new', body); const result = response.user ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function updateUser(context, itemIndex) { const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex); const body = {}; const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {}); const { username, email, firstName, lastName, role, plainPassword, isPublished, position, timezone, locale, onlineStatus, signature, ...rest } = updateFields; if (username) body.username = username; if (email) body.email = email; if (firstName) body.firstName = firstName; if (lastName) body.lastName = lastName; if (role !== undefined) body.role = role; if (isPublished !== undefined) body.isPublished = isPublished; if (position) body.position = position; if (timezone) body.timezone = timezone; if (locale) body.locale = locale; if (onlineStatus) body.onlineStatus = onlineStatus; if (signature) body.signature = signature; if (plainPassword && plainPassword.passwordValues) { const { passwordValues } = plainPassword; const password = passwordValues.password; const confirm = passwordValues.confirm; if (password || confirm) { body.plainPassword = { password, confirm, }; } } Object.assign(body, rest); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'PATCH', `/users/${userId}/edit`, body); const result = response.user ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function getUser(context, itemIndex) { const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/users/${userId}`); const result = response.user ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function getAllUsers(context, itemIndex) { const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false); const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const qs = (0, DataHelpers_1.buildQueryFromOptions)(additionalFields); if (!qs.orderBy) qs.orderBy = 'id'; if (!qs.orderByDir) qs.orderByDir = 'asc'; let responseData; if (returnAll) { const limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, undefined); responseData = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'users', 'GET', '/users', {}, qs, limit); } else { const limit = (0, ApiHelpers_1.getRequiredParam)(context, 'limit', itemIndex); qs.limit = limit; const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/users', {}, qs); const usersContainer = response.users ?? []; responseData = Array.isArray(usersContainer) ? usersContainer : Object.values(usersContainer); } return (0, DataHelpers_1.convertNumericStrings)(responseData); } async function deleteUser(context, itemIndex) { const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/users/${userId}/delete`); const result = response.user ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); }