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
JavaScript
;
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;