UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

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

236 lines 9.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatusResourceHandler = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ResourceHandlerBase_1 = require("./ResourceHandlerBase"); const GenericFunctions_1 = require("../GenericFunctions"); /** * Handler for Status resource operations in Bitrix24 */ class StatusResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase { constructor() { super(...arguments); this.resourceEndpoints = { create: "crm.status.add", update: "crm.status.update", delete: "crm.status.delete", get: "crm.status.get", getAll: "crm.status.list", getFields: "crm.status.fields", }; } /** * Process all operations related to Status */ 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(), `Operation '${operation}' is not supported for Status resource`, { itemIndex: i }); } } catch (error) { if (this.continueOnFail()) { this.addErrorToReturnData(error, i); continue; } throw error; } } return this.returnData; } /** * Handles the creation of a new status */ async handleCreate(itemIndex) { const fields = this.getNodeParameter("fields", itemIndex, {}); // Validate required fields if (!fields.ENTITY_ID || fields.ENTITY_ID === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Entity ID is required for creating a status", { itemIndex }); } if (!fields.STATUS_ID || fields.STATUS_ID === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Status ID is required for creating a status", { itemIndex }); } if (!fields.NAME || fields.NAME === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Name is required for creating a status", { itemIndex }); } // Build the request body according to Bitrix24 API const parameters = { fields: { ENTITY_ID: fields.ENTITY_ID, STATUS_ID: fields.STATUS_ID, NAME: fields.NAME, SORT: fields.SORT || 100, }, }; // Add extra parameters if provided if (fields.EXTRA) { try { const extra = typeof fields.EXTRA === "string" ? JSON.parse(fields.EXTRA) : fields.EXTRA; parameters.fields.EXTRA = extra; } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "EXTRA field must be valid JSON", { itemIndex }); } } const endpoint = this.resourceEndpoints.create; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, parameters, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handles updating a status */ async handleUpdate(itemIndex) { const statusId = this.getNodeParameter("statusId", itemIndex); const fields = this.getNodeParameter("fields", itemIndex, {}); // Build the request body according to Bitrix24 API const parameters = { id: statusId, fields: {}, }; const paramFields = parameters.fields; // Add only the fields that are provided if (fields.NAME) paramFields.NAME = fields.NAME; if (fields.SORT !== undefined) paramFields.SORT = fields.SORT; if (fields.EXTRA) { try { const extra = typeof fields.EXTRA === "string" ? JSON.parse(fields.EXTRA) : fields.EXTRA; paramFields.EXTRA = extra; } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "EXTRA field must be valid JSON", { itemIndex }); } } const endpoint = this.resourceEndpoints.update; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, parameters, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handles the deletion of a status */ async handleDelete(itemIndex) { const statusId = this.getNodeParameter("statusId", itemIndex); const parameters = { id: statusId, }; const endpoint = this.resourceEndpoints.delete; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, parameters, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handles retrieving a single status */ async handleGet(itemIndex) { const statusId = this.getNodeParameter("statusId", itemIndex); const parameters = { id: statusId, }; const endpoint = this.resourceEndpoints.get; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, parameters, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handles retrieving all statuses */ async handleGetAll(itemIndex) { const options = this.getNodeParameter("options", itemIndex, {}); const parameters = {}; // Add entity ID filter if specified if (options.entityId) { parameters.filter = { ENTITY_ID: options.entityId, }; } // Add filter if specified if (options.filter) { try { const filterJson = typeof options.filter === "string" ? JSON.parse(options.filter) : options.filter; if (parameters.filter) { Object.assign(parameters.filter, filterJson); } else { parameters.filter = filterJson; } } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Filter must be valid JSON", { itemIndex }); } } // Add order if specified if (options.order) { try { const orderJson = typeof options.order === "string" ? JSON.parse(options.order) : options.order; parameters.order = orderJson; } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Order must be valid JSON", { itemIndex }); } } // Add select fields if specified if (options.select) { parameters.select = options.select .split(",") .map((field) => field.trim()) .filter((field) => field.length > 0); } // Add language if specified if (options.lang) { parameters.lang = options.lang; } // Add custom parameters if specified if (options.customParameters) { try { const customParams = typeof options.customParameters === "string" ? JSON.parse(options.customParameters) : options.customParameters; Object.assign(parameters, customParams); } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Custom parameters must be valid JSON", { itemIndex }); } } const endpoint = this.resourceEndpoints.getAll; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, parameters, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handles getting status fields */ async handleGetFields(itemIndex) { const endpoint = this.resourceEndpoints.getFields; const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, {}, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } } exports.StatusResourceHandler = StatusResourceHandler; //# sourceMappingURL=StatusResourceHandler.js.map