@traien/n8n-nodes-espocrm
Version:
n8n integration with EspoCRM
105 lines • 4.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContactHandler = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const GenericFunctions_1 = require("../GenericFunctions");
const Utils_1 = require("./Utils");
class ContactHandler {
async create(index) {
const entityData = {};
entityData.firstName = this.getNodeParameter('firstName', index, '');
entityData.lastName = this.getNodeParameter('lastName', index, '');
const additionalFields = this.getNodeParameter('additionalFields', index, {});
Object.assign(entityData, additionalFields);
if (additionalFields.address) {
const address = additionalFields.address.details;
Object.assign(entityData, (0, Utils_1.processAddressFields)('address', address));
delete entityData.address;
}
const endpoint = '/contact';
const responseData = await GenericFunctions_1.espoApiRequest.call(this, 'POST', endpoint, entityData);
return responseData;
}
async get(index) {
const contactId = this.getNodeParameter('contactId', index);
const endpoint = `/contact/${contactId}`;
const responseData = await GenericFunctions_1.espoApiRequest.call(this, 'GET', endpoint);
return responseData;
}
async update(index) {
const contactId = this.getNodeParameter('contactId', index);
const updateFields = this.getNodeParameter('updateFields', index, {});
const entityData = { ...updateFields };
if (updateFields.address) {
const address = updateFields.address.details;
Object.assign(entityData, (0, Utils_1.processAddressFields)('address', address));
delete entityData.address;
}
const endpoint = `/contact/${contactId}`;
const responseData = await GenericFunctions_1.espoApiRequest.call(this, 'PATCH', endpoint, entityData);
return responseData;
}
async delete(index) {
const contactId = this.getNodeParameter('contactId', index);
const endpoint = `/contact/${contactId}`;
await GenericFunctions_1.espoApiRequest.call(this, 'DELETE', endpoint);
return {
success: true,
entityType: 'contact',
id: contactId,
message: 'Contact deleted successfully'
};
}
async getAll(index) {
const returnAll = this.getNodeParameter('returnAll', index);
const endpoint = '/contact';
const qs = {};
const filterOptions = this.getNodeParameter('filterOptions', index, {});
if (filterOptions.where) {
if (typeof filterOptions.where === 'string') {
try {
qs.where = JSON.parse(filterOptions.where);
}
catch (e) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid JSON in 'where' parameter: ${e.message}`);
}
}
else {
qs.where = filterOptions.where;
}
}
if (filterOptions.orderBy) {
qs.orderBy = filterOptions.orderBy;
}
if (filterOptions.order) {
qs.order = filterOptions.order;
}
if (filterOptions.select) {
qs.select = filterOptions.select;
}
if (filterOptions.offset) {
qs.offset = filterOptions.offset;
}
if (filterOptions.boolFilterList) {
qs.boolFilterList = filterOptions.boolFilterList;
}
if (filterOptions.primaryFilter) {
qs.primaryFilter = filterOptions.primaryFilter;
}
const headers = {};
if (filterOptions.skipTotalCount === true) {
headers['X-No-Total'] = 'true';
}
if (returnAll === true) {
return await GenericFunctions_1.espoApiRequestAllItems.call(this, 'GET', endpoint, {}, qs);
}
else {
const limit = this.getNodeParameter('limit', index);
qs.maxSize = limit;
const response = await GenericFunctions_1.espoApiRequest.call(this, 'GET', endpoint, {}, qs, undefined, headers);
return response.list;
}
}
}
exports.ContactHandler = ContactHandler;
//# sourceMappingURL=ContactHandler.js.map