UNPKG

n8n-nodes-everest-tms

Version:

Everest TMS n8n integration

174 lines 9.63 kB
"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