UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

Comprehensive n8n community node for Bitrix24 API integration with CRM, Tasks, Chat, Telephony, and more

312 lines 12.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActivityResourceHandler = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ResourceHandlerBase_1 = require("./ResourceHandlerBase"); const GenericFunctions_1 = require("../GenericFunctions"); /** * Handle Bitrix24 CRM Activity operations */ class ActivityResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase { constructor(executeFunctions, returnData, options = {}) { super(executeFunctions, returnData, options); this.resourceEndpoints = { add: "crm.activity.add", update: "crm.activity.update", delete: "crm.activity.delete", get: "crm.activity.get", list: "crm.activity.list", fields: "crm.activity.fields", }; } /** * Process activity operations */ async process() { for (let i = 0; i < this.items.length; i++) { try { const operation = this.getNodeParameter("operation", i); switch (operation) { case "create": await this.handleCreate(i); break; case "update": await this.handleUpdate(i); break; case "delete": await this.handleDelete(i); break; case "get": await this.handleGet(i); break; case "getAll": await this.handleGetAll(i); break; case "getFields": await this.handleGetFields(i); break; default: throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Unsupported operation "${operation}" for Activity resource`, { itemIndex: i }); } } catch (error) { if (this.executeFunctions.continueOnFail()) { this.returnData.push({ json: { error: error.message } }); continue; } throw error; } } return this.returnData; } /** * Get endpoint for the specified operation */ getEndpoint(operation) { const endpointMap = { create: "add", update: "update", delete: "delete", get: "get", getAll: "list", getFields: "fields", }; const endpoint = this.resourceEndpoints[endpointMap[operation]]; if (!endpoint) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Unsupported operation "${operation}" for Activity resource`); } return endpoint; } /** * Format communications array for Bitrix24 API */ formatCommunications(communications) { if (!Array.isArray(communications) || communications.length === 0) { return []; } return communications.map((comm) => { const { type, value } = comm.communicationValues; return { TYPE: type, VALUE: value, }; }); } /** * Handle getting activity fields */ async handleGetFields(itemIndex) { const endpoint = this.getEndpoint("getFields"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, {}, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle creating an activity */ async handleCreate(itemIndex) { const fields = {}; // Get main fields fields.SUBJECT = this.getNodeParameter("subject", itemIndex); fields.OWNER_TYPE_ID = this.getNodeParameter("ownerType", itemIndex); fields.OWNER_ID = this.getNodeParameter("ownerId", itemIndex); fields.TYPE_ID = this.getNodeParameter("type", itemIndex); // Get optional fields const direction = this.getNodeParameter("direction", itemIndex, null); if (direction) { fields.DIRECTION = direction; } const startTime = this.getNodeParameter("startTime", itemIndex, null); if (startTime) { fields.START_TIME = startTime; } const endTime = this.getNodeParameter("endTime", itemIndex, null); if (endTime) { fields.END_TIME = endTime; } const completed = this.getNodeParameter("completed", itemIndex, false); fields.COMPLETED = completed ? "Y" : "N"; const description = this.getNodeParameter("description", itemIndex, null); if (description) { fields.DESCRIPTION = description; } const responsibleId = this.getNodeParameter("responsibleId", itemIndex, null); if (responsibleId) { fields.RESPONSIBLE_ID = responsibleId; } const priority = this.getNodeParameter("priority", itemIndex, null); if (priority) { fields.PRIORITY = priority; } const status = this.getNodeParameter("status", itemIndex, null); if (status) { fields.STATUS = status; } // Handle additional fields const additionalFields = this.getNodeParameter("additionalFields", itemIndex, {}); // Process communications if (additionalFields.communications && typeof additionalFields.communications === "object" && additionalFields.communications.communicationValues) { const communications = additionalFields.communications .communicationValues; if (Array.isArray(communications) && communications.length > 0) { fields.COMMUNICATIONS = this.formatCommunications(communications); } } // Set notify if (additionalFields.notify !== undefined) { fields.NOTIFY_TYPE = additionalFields.notify ? 1 : 0; } // Make API call const endpoint = this.getEndpoint("create"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { fields }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle updating an activity */ async handleUpdate(itemIndex) { const activityId = this.getNodeParameter("activityId", itemIndex); const fields = {}; // Get main fields const subject = this.getNodeParameter("subject", itemIndex, null); if (subject) { fields.SUBJECT = subject; } const type = this.getNodeParameter("type", itemIndex, null); if (type) { fields.TYPE_ID = type; } // Get optional fields const direction = this.getNodeParameter("direction", itemIndex, null); if (direction) { fields.DIRECTION = direction; } const startTime = this.getNodeParameter("startTime", itemIndex, null); if (startTime) { fields.START_TIME = startTime; } const endTime = this.getNodeParameter("endTime", itemIndex, null); if (endTime) { fields.END_TIME = endTime; } const completed = this.getNodeParameter("completed", itemIndex, null); if (completed !== null) { fields.COMPLETED = completed ? "Y" : "N"; } const description = this.getNodeParameter("description", itemIndex, null); if (description) { fields.DESCRIPTION = description; } const responsibleId = this.getNodeParameter("responsibleId", itemIndex, null); if (responsibleId) { fields.RESPONSIBLE_ID = responsibleId; } const priority = this.getNodeParameter("priority", itemIndex, null); if (priority) { fields.PRIORITY = priority; } const status = this.getNodeParameter("status", itemIndex, null); if (status) { fields.STATUS = status; } // Handle additional fields const additionalFields = this.getNodeParameter("additionalFields", itemIndex, {}); // Process communications if (additionalFields.communications && typeof additionalFields.communications === "object" && additionalFields.communications.communicationValues) { const communications = additionalFields.communications .communicationValues; if (Array.isArray(communications) && communications.length > 0) { fields.COMMUNICATIONS = this.formatCommunications(communications); } } // Set notify if (additionalFields.notify !== undefined) { fields.NOTIFY_TYPE = additionalFields.notify ? 1 : 0; } // Make API call const endpoint = this.getEndpoint("update"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { id: activityId, fields, }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle deleting an activity */ async handleDelete(itemIndex) { const activityId = this.getNodeParameter("activityId", itemIndex); const endpoint = this.getEndpoint("delete"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { id: activityId }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle getting an activity */ async handleGet(itemIndex) { const activityId = this.getNodeParameter("activityId", itemIndex); // Get options const options = this.getNodeParameter("options", itemIndex, {}); const params = { id: activityId }; // Add select fields if specified if (options.select) { params.select = options.select; } const endpoint = this.getEndpoint("get"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, params, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle getting all activities */ async handleGetAll(itemIndex) { const options = this.getNodeParameter("options", itemIndex, {}); const params = {}; // Add filter if provided if (options.filter) { try { params.filter = typeof options.filter === "string" ? JSON.parse(options.filter) : options.filter; } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Filter must be a valid JSON", { itemIndex }); } } // Add order if provided if (options.order) { try { params.order = typeof options.order === "string" ? JSON.parse(options.order) : options.order; } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Order must be a valid JSON", { itemIndex }); } } // Add select fields if specified if (options.select) { params.select = options.select; } const endpoint = this.getEndpoint("getAll"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, params, itemIndex); this.returnData.push({ json: responseData, }); } } exports.ActivityResourceHandler = ActivityResourceHandler; //# sourceMappingURL=ActivityResourceHandler.js.map