UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

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

259 lines 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DocumentGeneratorResourceHandler = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ResourceHandlerBase_1 = require("./ResourceHandlerBase"); /** * Handles Document Generator operations in Bitrix24 */ class DocumentGeneratorResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase { constructor(executeFunctions, returnData, options = {}) { super(executeFunctions, returnData, options); this.resourceEndpoints = { template: { list: "documentgenerator.template.list", get: "documentgenerator.template.get", add: "documentgenerator.template.add", update: "documentgenerator.template.update", delete: "documentgenerator.template.delete", }, document: { get: "documentgenerator.document.get", add: "documentgenerator.document.add", delete: "documentgenerator.document.delete", download: "documentgenerator.document.download", }, fields: { get: "documentgenerator.template.getFields", }, }; } /** * Process all items with document generator operations */ async process() { for (let itemIndex = 0; itemIndex < this.items.length; itemIndex++) { try { const operation = this.getNodeParameter("operation", itemIndex); switch (operation) { // Template operations case "getTemplates": await this.handleGetTemplates(itemIndex); break; case "getTemplate": await this.handleGetTemplate(itemIndex); break; case "addTemplate": await this.handleAddTemplate(itemIndex); break; case "updateTemplate": await this.handleUpdateTemplate(itemIndex); break; case "deleteTemplate": await this.handleDeleteTemplate(itemIndex); break; // Document operations case "generateDocument": await this.handleGenerateDocument(itemIndex); break; case "getDocument": await this.handleGetDocument(itemIndex); break; case "deleteDocument": await this.handleDeleteDocument(itemIndex); break; case "downloadDocument": await this.handleDownloadDocument(itemIndex); break; // Field operations case "getFields": await this.handleGetFields(itemIndex); break; default: throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Operation ${operation} is not supported for resource documentgenerator`); } } catch (error) { if (this.continueOnFail()) { this.addErrorToReturnData(error, itemIndex); } else { throw error; } } } return this.returnData; } /** * Handle 'getTemplates' operation */ async handleGetTemplates(itemIndex) { const filter = this.getNodeParameter("filter", itemIndex, {}); const options = this.getNodeParameter("options", itemIndex, {}); const requestParams = {}; if (Object.keys(filter).length) { requestParams.filter = filter; } if (options.select) { requestParams.select = options.select; } if (options.order) { if (typeof options.order === "string" && options.order.trim() !== "") { requestParams.order = this.parseJsonParameter(options.order, "order", itemIndex); } else if (typeof options.order === "object") { requestParams.order = options.order; } } const endpoint = this.resourceEndpoints.template.list; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'getTemplate' operation */ async handleGetTemplate(itemIndex) { const templateId = this.getNodeParameter("templateId", itemIndex); const requestParams = { id: templateId, }; const endpoint = this.resourceEndpoints.template.get; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'addTemplate' operation */ async handleAddTemplate(itemIndex) { const templateData = this.getNodeParameter("templateData", itemIndex); if (!templateData || templateData.trim() === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Template data must not be empty", { itemIndex }); } const fields = this.parseJsonParameter(templateData, "templateData", itemIndex); const requestParams = { fields, }; const endpoint = this.resourceEndpoints.template.add; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'updateTemplate' operation */ async handleUpdateTemplate(itemIndex) { const templateId = this.getNodeParameter("templateId", itemIndex); const templateData = this.getNodeParameter("templateData", itemIndex); if (!templateData || templateData.trim() === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Template data must not be empty", { itemIndex }); } const fields = this.parseJsonParameter(templateData, "templateData", itemIndex); const requestParams = { id: templateId, fields, }; const endpoint = this.resourceEndpoints.template.update; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'deleteTemplate' operation */ async handleDeleteTemplate(itemIndex) { const templateId = this.getNodeParameter("templateId", itemIndex); const requestParams = { id: templateId, }; const endpoint = this.resourceEndpoints.template.delete; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'generateDocument' operation */ async handleGenerateDocument(itemIndex) { const templateId = this.getNodeParameter("templateId", itemIndex); const valuesJson = this.getNodeParameter("values", itemIndex); const format = this.getNodeParameter("format", itemIndex); if (!valuesJson || valuesJson.trim() === "") { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), "Values must not be empty", { itemIndex }); } const values = this.parseJsonParameter(valuesJson, "values", itemIndex); const requestParams = { templateId, values, format, }; const endpoint = this.resourceEndpoints.document.add; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'getDocument' operation */ async handleGetDocument(itemIndex) { const documentId = this.getNodeParameter("documentId", itemIndex); const requestParams = { id: documentId, }; const endpoint = this.resourceEndpoints.document.get; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'deleteDocument' operation */ async handleDeleteDocument(itemIndex) { const documentId = this.getNodeParameter("documentId", itemIndex); const requestParams = { id: documentId, }; const endpoint = this.resourceEndpoints.document.delete; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } /** * Handle 'downloadDocument' operation */ async handleDownloadDocument(itemIndex) { const documentId = this.getNodeParameter("documentId", itemIndex); const binaryPropertyName = this.getNodeParameter("binaryPropertyName", itemIndex); const requestParams = { id: documentId, }; // Make API call to download the document const endpoint = this.resourceEndpoints.document.download; const response = await this.makeApiCall(endpoint, requestParams, { returnBinary: true }, itemIndex); // Add the binary data to the return data const newItem = { json: { ...this.items[itemIndex].json }, binary: { ...(this.items[itemIndex].binary || {}), }, }; if (response.fileName && response.fileContent) { newItem.binary[binaryPropertyName] = { data: response.fileContent, mimeType: response.mimeType || "application/octet-stream", fileName: response.fileName, }; } // Replace the item at the given index with the new item this.returnData[itemIndex] = newItem; } /** * Handle 'getFields' operation */ async handleGetFields(itemIndex) { const moduleId = this.getNodeParameter("moduleId", itemIndex); const entityTypeName = this.getNodeParameter("entityTypeName", itemIndex); const requestParams = { moduleId, entityTypeName, }; const endpoint = this.resourceEndpoints.fields.get; const responseData = await this.makeApiCall(endpoint, requestParams, {}, itemIndex); this.addResponseToReturnData(responseData, itemIndex); } } exports.DocumentGeneratorResourceHandler = DocumentGeneratorResourceHandler; //# sourceMappingURL=DocumentGeneratorResourceHandler.js.map