n8n-nodes-everest-tms
Version:
Everest TMS n8n integration
174 lines • 9.63 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeMissionOperations = executeMissionOperations;
const GenericFunctions_1 = require("../GenericFunctions");
async function executeMissionOperations(itemIndex) {
const operation = this.getNodeParameter('operation', itemIndex);
if (operation === 'get') {
const ref = this.getNodeParameter('ref', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ ref }, ['ref']);
return await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/get', { ref });
}
if (operation === 'getMany') {
const options = this.getNodeParameter('options', itemIndex, {});
let body = (0, GenericFunctions_1.cleanObject)(options);
// Handle statuses array conversion
if (body.statuses && typeof body.statuses === 'string') {
const statusesString = body.statuses;
if (statusesString.trim()) {
body.statuses = statusesString.split(',').map(status => status.trim()).filter(status => status.length > 0);
}
else {
delete body.statuses;
}
}
// Handle date conversion for Europe/Paris timezone using the utility function
body = (0, GenericFunctions_1.convertDateFieldsToParisTimezone)(body, ['date_between_start', 'date_between_end']);
// Handle pagination for get all items
if (body.limit && body.limit > 0) {
// Use custom limit_start if provided, otherwise default to 0
const limitStart = body.limit_start || 0;
body.limit_start = limitStart;
body.limit_end = limitStart + body.limit;
delete body.limit;
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions', body);
return response.missions || [];
}
else {
return await GenericFunctions_1.everestApiRequestAllItems.call(this, 'missions', 'POST', '/missions', body);
}
}
if (operation === 'getManyByRefs') {
const refs = this.getNodeParameter('refs', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ refs }, ['refs']);
const refsArray = refs.split(',').map(ref => ref.trim());
const body = { refs: refsArray };
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/get-many', body);
return response.missions || [];
}
if (operation === 'create') {
const serviceId = this.getNodeParameter('service_id', itemIndex);
const addressStart = this.getNodeParameter('address_start', itemIndex);
const addressEnd = this.getNodeParameter('address_end', itemIndex);
const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {});
const startAddressDetails = this.getNodeParameter('startAddressDetails', itemIndex, {});
const endAddressDetails = this.getNodeParameter('endAddressDetails', itemIndex, {});
const customInfos = this.getNodeParameter('custom_infos', itemIndex, {});
const packages = this.getNodeParameter('packages', itemIndex, {});
(0, GenericFunctions_1.validateRequiredFields)({ service_id: serviceId, address_start: addressStart, address_end: addressEnd }, ['service_id', 'address_start', 'address_end']);
let body = {
service_id: serviceId,
address_start: addressStart,
address_end: addressEnd,
...(0, GenericFunctions_1.cleanObject)(additionalFields),
...(0, GenericFunctions_1.cleanObject)(startAddressDetails),
...(0, GenericFunctions_1.cleanObject)(endAddressDetails),
};
// Handle date conversion using the utility function
body = (0, GenericFunctions_1.convertDateFieldsToParisTimezone)(body, ['start_date']);
// Handle custom infos
if (customInfos.info) {
body.custom_infos = (0, GenericFunctions_1.formatCustomInfos)(customInfos.info);
}
// Handle packages
if (packages.package) {
body.packages = (0, GenericFunctions_1.formatPackages)(packages.package);
}
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/create', body);
return response.mission || response;
}
if (operation === 'update') {
const ref = this.getNodeParameter('ref', itemIndex);
const addressStart = this.getNodeParameter('address_start', itemIndex, '');
const addressEnd = this.getNodeParameter('address_end', itemIndex, '');
const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {});
const startAddressDetails = this.getNodeParameter('startAddressDetails', itemIndex, {});
const endAddressDetails = this.getNodeParameter('endAddressDetails', itemIndex, {});
const customInfos = this.getNodeParameter('custom_infos', itemIndex, {});
const packages = this.getNodeParameter('packages', itemIndex, {});
(0, GenericFunctions_1.validateRequiredFields)({ ref }, ['ref']);
let body = {
ref,
...(0, GenericFunctions_1.cleanObject)(additionalFields),
...(0, GenericFunctions_1.cleanObject)(startAddressDetails),
...(0, GenericFunctions_1.cleanObject)(endAddressDetails),
};
// Only add addresses if they are provided (not empty)
if (addressStart)
body.address_start = addressStart;
if (addressEnd)
body.address_end = addressEnd;
// Handle date conversion using the utility function
body = (0, GenericFunctions_1.convertDateFieldsToParisTimezone)(body, ['start_date']);
// Handle custom infos
if (customInfos.info) {
body.custom_infos = (0, GenericFunctions_1.formatCustomInfos)(customInfos.info);
}
// Handle packages
if (packages.package) {
body.packages = (0, GenericFunctions_1.formatPackages)(packages.package);
}
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/update', body);
return response.mission || response;
}
if (operation === 'delete') {
const ref = this.getNodeParameter('ref', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ ref }, ['ref']);
return await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/delete', { ref });
}
if (operation === 'cancel') {
const ref = this.getNodeParameter('ref', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ ref }, ['ref']);
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/cancel', { ref });
return response.mission || response;
}
if (operation === 'estimate') {
const serviceId = this.getNodeParameter('service_id', itemIndex);
const addressStart = this.getNodeParameter('address_start', itemIndex);
const addressEnd = this.getNodeParameter('address_end', itemIndex);
const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {});
(0, GenericFunctions_1.validateRequiredFields)({ service_id: serviceId, address_start: addressStart, address_end: addressEnd }, ['service_id', 'address_start', 'address_end']);
let body = {
service_id: serviceId,
address_start: addressStart,
address_end: addressEnd,
...(0, GenericFunctions_1.cleanObject)(additionalFields),
};
// Handle date conversion using the utility function
body = (0, GenericFunctions_1.convertDateFieldsToParisTimezone)(body, ['start_date']);
return await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/estimate', body);
}
if (operation === 'accept') {
const ref = this.getNodeParameter('ref', itemIndex);
const agentId = this.getNodeParameter('agent_id', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ ref, agent_id: agentId }, ['ref', 'agent_id']);
const body = {
ref,
agent_id: agentId,
};
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/accept', body);
return response.mission || response;
}
if (operation === 'setStatus') {
const refsString = this.getNodeParameter('refs', itemIndex);
const status = this.getNodeParameter('status', itemIndex);
const statusDetails = this.getNodeParameter('statusDetails', itemIndex, {});
(0, GenericFunctions_1.validateRequiredFields)({ refs: refsString, status }, ['refs', 'status']);
const refs = refsString.split(',').map(ref => ref.trim());
const body = {
refs,
status,
...(0, GenericFunctions_1.cleanObject)(statusDetails),
};
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/status', body);
return response.mission || response;
}
if (operation === 'markSeen') {
const ref = this.getNodeParameter('ref', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ ref }, ['ref']);
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/missions/seen', { ref });
return response.mission || response;
}
throw new Error(`The operation "${operation}" is not known!`);
}
//# sourceMappingURL=MissionOperations.js.map