From 47eb0e00e3215ebf6ed5db51e27b0ad8d58b4f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Tue, 16 Jan 2024 17:48:24 +0300 Subject: [PATCH] feat(vtiger-crm): add new cases trigger --- packages/backend/src/apps/vtiger-crm/index.js | 2 + .../src/apps/vtiger-crm/triggers/index.js | 3 ++ .../vtiger-crm/triggers/new-cases/index.js | 41 +++++++++++++++++++ packages/docs/pages/.vitepress/config.js | 5 ++- .../docs/pages/apps/vtiger-crm/triggers.md | 12 ++++++ packages/docs/pages/guide/available-apps.md | 1 + 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/vtiger-crm/triggers/index.js create mode 100644 packages/backend/src/apps/vtiger-crm/triggers/new-cases/index.js create mode 100644 packages/docs/pages/apps/vtiger-crm/triggers.md diff --git a/packages/backend/src/apps/vtiger-crm/index.js b/packages/backend/src/apps/vtiger-crm/index.js index 50ce24c0..f1f6fceb 100644 --- a/packages/backend/src/apps/vtiger-crm/index.js +++ b/packages/backend/src/apps/vtiger-crm/index.js @@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app.js'; import addAuthHeader from './common/add-auth-header.js'; import setBaseUrl from './common/set-base-url.js'; import auth from './auth/index.js'; +import triggers from './triggers/index.js'; export default defineApp({ name: 'Vtiger CRM', @@ -14,4 +15,5 @@ export default defineApp({ primaryColor: '39a86d', beforeRequest: [setBaseUrl, addAuthHeader], auth, + triggers, }); diff --git a/packages/backend/src/apps/vtiger-crm/triggers/index.js b/packages/backend/src/apps/vtiger-crm/triggers/index.js new file mode 100644 index 00000000..8a8dd0b7 --- /dev/null +++ b/packages/backend/src/apps/vtiger-crm/triggers/index.js @@ -0,0 +1,3 @@ +import newCases from './new-cases/index.js'; + +export default [newCases]; diff --git a/packages/backend/src/apps/vtiger-crm/triggers/new-cases/index.js b/packages/backend/src/apps/vtiger-crm/triggers/new-cases/index.js new file mode 100644 index 00000000..c94a3027 --- /dev/null +++ b/packages/backend/src/apps/vtiger-crm/triggers/new-cases/index.js @@ -0,0 +1,41 @@ +import defineTrigger from '../../../../helpers/define-trigger.js'; + +export default defineTrigger({ + name: 'New cases', + key: 'newCases', + pollInterval: 15, + description: 'Triggers when a new case is created.', + + async run($) { + let offset = 0; + const limit = 100; + let hasMore = true; + + const params = { + operation: 'query', + sessionName: $.auth.data.sessionName, + query: `SELECT * FROM Cases 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/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 35d2846f..1bbb537e 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -452,7 +452,10 @@ export default defineConfig({ text: 'Vtiger CRM', collapsible: true, collapsed: true, - items: [{ text: 'Connection', link: '/apps/vtiger-crm/connection' }], + items: [ + { text: 'Triggers', link: '/apps/vtiger-crm/triggers' }, + { text: 'Connection', link: '/apps/vtiger-crm/connection' }, + ], }, { text: 'Webhooks', diff --git a/packages/docs/pages/apps/vtiger-crm/triggers.md b/packages/docs/pages/apps/vtiger-crm/triggers.md new file mode 100644 index 00000000..967e6b26 --- /dev/null +++ b/packages/docs/pages/apps/vtiger-crm/triggers.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/vtiger-crm.svg +items: + - name: New cases + desc: Triggers when a new case is created. +--- + + + + diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index 90f8ba0a..1c5d2cc4 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -47,6 +47,7 @@ The following integrations are currently supported by Automatisch. - [Twilio](/apps/twilio/triggers) - [Twitter](/apps/twitter/triggers) - [Typeform](/apps/typeform/triggers) +- [Vtiger CRM](/apps/vtiger-crm/triggers) - [Webhooks](/apps/webhooks/triggers) - [WordPress](/apps/wordpress/triggers) - [Xero](/apps/xero/triggers)