UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

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

200 lines 7.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProductResourceHandler = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ResourceHandlerBase_1 = require("./ResourceHandlerBase"); const GenericFunctions_1 = require("../GenericFunctions"); /** * Handle Bitrix24 CRM Product operations */ class ProductResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase { constructor(executeFunctions, returnData, options = {}) { super(executeFunctions, returnData, options); this.resourceEndpoints = { add: "crm.product.add", update: "crm.product.update", delete: "crm.product.delete", get: "crm.product.get", list: "crm.product.list", fields: "crm.product.fields", }; } /** * Process product 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 Product 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 Product resource`); } return endpoint; } /** * Handle getting product 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 a product */ async handleCreate(itemIndex) { const productFields = this.getNodeParameter("productFields", itemIndex, {}); // Make API call const endpoint = this.getEndpoint("create"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { fields: productFields }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle updating a product */ async handleUpdate(itemIndex) { const productId = this.getNodeParameter("productId", itemIndex); const productFields = this.getNodeParameter("productFields", itemIndex, {}); // Make API call const endpoint = this.getEndpoint("update"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { id: productId, fields: productFields, }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle deleting a product */ async handleDelete(itemIndex) { const productId = this.getNodeParameter("productId", itemIndex); const endpoint = this.getEndpoint("delete"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, { id: productId }, itemIndex); this.returnData.push({ json: responseData, }); } /** * Handle getting a product */ async handleGet(itemIndex) { const productId = this.getNodeParameter("productId", itemIndex); // Get options const options = this.getNodeParameter("options", itemIndex, {}); const params = { id: productId }; // 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.returnData.push({ json: responseData, }); } /** * Handle getting all products */ async handleGetAll(itemIndex) { const options = this.getNodeParameter("options", itemIndex, {}); const additionalOptions = this.getNodeParameter("additionalOptions", 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 (additionalOptions.order) { try { params.order = typeof additionalOptions.order === "string" ? JSON.parse(additionalOptions.order) : additionalOptions.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; } // Add pagination parameters if (additionalOptions.start) { params.start = additionalOptions.start; } // Check for returnAll parameter const returnAll = this.getNodeParameter("returnAll", itemIndex, false); if (!returnAll) { const limit = this.getNodeParameter("limit", itemIndex, 50); params.limit = limit; } const endpoint = this.getEndpoint("getAll"); const responseData = await GenericFunctions_1.makeStandardBitrix24Call.call(this.executeFunctions, endpoint, params, itemIndex); this.returnData.push({ json: responseData, }); } } exports.ProductResourceHandler = ProductResourceHandler; //# sourceMappingURL=ProductResourceHandler.js.map