@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
JavaScript
"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