UNPKG

n8n-nodes-sevdesk-v2

Version:

n8n community node for SevDesk API v2 integration with 24 production-ready workflow templates. Direct API access without external dependencies - simplified, secure, and optimized for German accounting automation (n8n 1.101.1 compatible).

80 lines (79 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContactHandler = void 0; const BaseResourceHandler_1 = require("../base/BaseResourceHandler"); class ContactHandler extends BaseResourceHandler_1.CrudResourceHandler { constructor(executeFunctions) { super(executeFunctions, "Contact", "Contact"); this.config.idParameterName = "contactId"; } buildCustomRequest(baseOptions, baseURL, operation, itemIndex) { switch (operation) { case "getAll": const additionalFields = this.executeFunctions.getNodeParameter("additionalFields", itemIndex, {}); return { ...baseOptions, method: "GET", url: `${baseURL}/Contact`, qs: this.transformQueryParams(additionalFields), }; case "checkCustomerNumberAvailability": const customerNumber = this.executeFunctions.getNodeParameter("customerNumber", itemIndex); return { ...baseOptions, method: "GET", url: `${baseURL}/Contact/Mapper/checkCustomerNumberAvailability`, qs: { customerNumber }, }; case "findByCustomFieldValue": const customFieldSetting = this.executeFunctions.getNodeParameter("customFieldSetting", itemIndex); const value = this.executeFunctions.getNodeParameter("value", itemIndex); return { ...baseOptions, method: "GET", url: `${baseURL}/Contact/Factory/findContactByCustomFieldValue`, qs: { "customFieldSetting[id]": customFieldSetting.id, "customFieldSetting[objectName]": customFieldSetting.objectName, value, }, }; default: return super.buildCustomRequest(baseOptions, baseURL, operation, itemIndex); } } transformCreateData(data) { return data; } buildCreateRequest(baseOptions, baseURL, itemIndex) { const name = this.executeFunctions.getNodeParameter("name", itemIndex, ""); const additionalFields = this.executeFunctions.getNodeParameter("additionalFields", itemIndex, {}); const createData = { name, ...additionalFields, }; return { ...baseOptions, method: "POST", url: `${baseURL}/${this.config.apiEndpoint}`, body: this.transformCreateData(createData), }; } validateCreateData(itemIndex) { const name = this.executeFunctions.getNodeParameter("name", itemIndex, ""); const nameStr = String(name || ""); if (!nameStr || nameStr.trim() === "") { throw new Error("Contact name is required and cannot be empty"); } } async execute(operation, itemIndex) { if (operation === "create") { this.validateCreateData(itemIndex); } return super.execute(operation, itemIndex); } transformQueryParams(params) { return params; } } exports.ContactHandler = ContactHandler;