UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

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

135 lines 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DuplicateResourceHandler = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ResourceHandlerBase_1 = require("./ResourceHandlerBase"); const GenericFunctions_1 = require("../GenericFunctions"); /** * Handler for Bitrix24 duplicate detection operations */ class DuplicateResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase { constructor(executeFunctions, returnData, options = {}) { super(executeFunctions, returnData, options); this.resourceEndpoints = { findByCommunication: "crm.duplicate.findbycomm", findDuplicates: "crm.entity.findduplicates", }; } /** * Process duplicate detection operations */ async process() { for (let i = 0; i < this.items.length; i++) { try { const operation = this.getNodeParameter("operation", i); switch (operation) { case "findByCommunication": await this.handleFindByCommunication(i); break; case "findDuplicates": await this.handleFindDuplicates(i); break; default: throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `The operation "${operation}" is not supported for duplicate detection`, { itemIndex: i }); } } catch (error) { if (this.executeFunctions.continueOnFail()) { this.returnData.push({ json: { error: error.message } }); continue; } throw error; } } return this.returnData; } /** * Get endpoint for a specific operation */ getResourceOperation(operation) { if (!this.resourceEndpoints[operation]) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `The operation "${operation}" is not supported for duplicate detection`); } return this.resourceEndpoints[operation]; } /** * Handle find by communication operation */ async handleFindByCommunication(itemIndex) { const entityType = this.getNodeParameter("entityType", itemIndex); const commType = this.getNodeParameter("commType", itemIndex); const commValue = this.getNodeParameter("commValue", itemIndex); const options = this.getNodeParameter("options", itemIndex, {}); const params = { ENTITY_TYPE: entityType.toUpperCase(), TYPE: commType, VALUES: [commValue], }; if (options.entityId) { params.ENTITY_ID = options.entityId; } if (options.customParameters) { this.processCustomParameters(options, params, itemIndex); } try { const endpoint = this.getResourceOperation("findByCommunication"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, params, {}, itemIndex); this.returnData.push({ json: responseData, }); } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Error finding duplicates by communication: ${error.message}`, { itemIndex }); } } /** * Handle find duplicates operation */ async handleFindDuplicates(itemIndex) { const entityType = this.getNodeParameter("entityType", itemIndex); const entityData = this.getNodeParameter("entityData", itemIndex); const options = this.getNodeParameter("options", itemIndex, {}); const params = { ENTITY_TYPE: entityType.toUpperCase(), ENTITY_DATA: entityData, }; if (options.entityId) { params.ENTITY_ID = options.entityId; } if (options.customParameters) { this.processCustomParameters(options, params, itemIndex); } try { const endpoint = this.getResourceOperation("findDuplicates"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, params, {}, itemIndex); this.returnData.push({ json: responseData, }); } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Error finding duplicates: ${error.message}`, { itemIndex }); } } /** * Process custom parameters */ processCustomParameters(options, params, itemIndex) { if (!options.customParameters) return; try { const customParams = typeof options.customParameters === "string" ? this.parseJsonParameter(options.customParameters, "Custom Parameters", itemIndex) : options.customParameters; for (const key in customParams) { if (Object.prototype.hasOwnProperty.call(customParams, key)) { params[key] = customParams[key]; } } } catch (error) { throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `Error parsing custom parameters: ${error.message}`, { itemIndex }); } } } exports.DuplicateResourceHandler = DuplicateResourceHandler; //# sourceMappingURL=DuplicateResourceHandler.js.map