diff --git a/packages/backend/src/apps/vtiger-crm/triggers/index.js b/packages/backend/src/apps/vtiger-crm/triggers/index.js index 8a8dd0b7..29dae04f 100644 --- a/packages/backend/src/apps/vtiger-crm/triggers/index.js +++ b/packages/backend/src/apps/vtiger-crm/triggers/index.js @@ -1,3 +1,4 @@ import newCases from './new-cases/index.js'; +import newContacts from './new-contacts/index.js'; -export default [newCases]; +export default [newCases, newContacts]; diff --git a/packages/backend/src/apps/vtiger-crm/triggers/new-contacts/index.js b/packages/backend/src/apps/vtiger-crm/triggers/new-contacts/index.js new file mode 100644 index 00000000..cf602140 --- /dev/null +++ b/packages/backend/src/apps/vtiger-crm/triggers/new-contacts/index.js @@ -0,0 +1,41 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New contacts', + key: 'newContacts', + pollInterval: 15, + description: 'Triggers when a new contact is created.', + + async run($) { + let offset = 0; + const limit = 100; + let hasMore = true; + + const params = { + operation: 'query', + sessionName: $.auth.data.sessionName, + query: `SELECT * FROM Contacts ORDER BY createdtime DESC LIMIT ${offset}, ${limit};`, + }; + + do { + const { data } = await $.http.get('/webservice.php', { + params, + }); + offset = limit + offset; + + if (!data?.result?.length) { + hasMore = false; + return; + } + + for (const item of data.result) { + $.pushTriggerItem({ + raw: item, + meta: { + internalId: item.id, + }, + }); + } + } while (hasMore); + }, +}); diff --git a/packages/docs/pages/apps/vtiger-crm/triggers.md b/packages/docs/pages/apps/vtiger-crm/triggers.md index 967e6b26..c76d8109 100644 --- a/packages/docs/pages/apps/vtiger-crm/triggers.md +++ b/packages/docs/pages/apps/vtiger-crm/triggers.md @@ -3,6 +3,8 @@ favicon: /favicons/vtiger-crm.svg items: - name: New cases desc: Triggers when a new case is created. + - name: New contacts + desc: Triggers when a new contact is created. ---