From 17a0c6123a594608504229290086e4a849dc7575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Tue, 16 Jan 2024 18:12:55 +0300 Subject: [PATCH] feat(vtiger-crm): add new todos trigger --- .../src/apps/vtiger-crm/triggers/index.js | 10 ++++- .../vtiger-crm/triggers/new-todos/index.js | 41 +++++++++++++++++++ .../docs/pages/apps/vtiger-crm/triggers.md | 2 + 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/vtiger-crm/triggers/new-todos/index.js diff --git a/packages/backend/src/apps/vtiger-crm/triggers/index.js b/packages/backend/src/apps/vtiger-crm/triggers/index.js index 2d82ec9d..faf1bff6 100644 --- a/packages/backend/src/apps/vtiger-crm/triggers/index.js +++ b/packages/backend/src/apps/vtiger-crm/triggers/index.js @@ -3,5 +3,13 @@ import newContacts from './new-contacts/index.js'; import newInvoices from './new-invoices/index.js'; import newLeads from './new-leads/index.js'; import newOpportunities from './new-opportunities/index.js'; +import newTodos from './new-todos/index.js'; -export default [newCases, newContacts, newInvoices, newLeads, newOpportunities]; +export default [ + newCases, + newContacts, + newInvoices, + newLeads, + newOpportunities, + newTodos, +]; diff --git a/packages/backend/src/apps/vtiger-crm/triggers/new-todos/index.js b/packages/backend/src/apps/vtiger-crm/triggers/new-todos/index.js new file mode 100644 index 00000000..4372b4b9 --- /dev/null +++ b/packages/backend/src/apps/vtiger-crm/triggers/new-todos/index.js @@ -0,0 +1,41 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New todos', + key: 'newTodos', + pollInterval: 15, + description: 'Triggers when a new todo is created.', + + async run($) { + let offset = 0; + const limit = 100; + let hasMore = true; + + const params = { + operation: 'query', + sessionName: $.auth.data.sessionName, + query: `SELECT * FROM Calendar 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 3b7fa35e..57e88698 100644 --- a/packages/docs/pages/apps/vtiger-crm/triggers.md +++ b/packages/docs/pages/apps/vtiger-crm/triggers.md @@ -11,6 +11,8 @@ items: desc: Triggers when a new lead is created. - name: New opportunities desc: Triggers when a new opportunity is created. + - name: New todos + desc: Triggers when a new todo is created. ---