From 741f66b019a4e227cb355cd99e9118eed775df0e Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Sun, 31 Mar 2024 08:28:17 +0530 Subject: [PATCH] feat: add documentCount and templateCount for user --- apps/OpenSign/src/pages/PlaceHolderSign.js | 1 - apps/OpenSignServer/cloud/main.js | 4 +++ .../cloud/parsefunction/DocumentBeforesave.js | 35 +++++++++++++++++++ .../cloud/parsefunction/SubscribeFree.js | 4 +-- .../cloud/parsefunction/TemplateBeforesave.js | 31 ++++++++++++++++ 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js index b176a043f..132f49934 100644 --- a/apps/OpenSign/src/pages/PlaceHolderSign.js +++ b/apps/OpenSign/src/pages/PlaceHolderSign.js @@ -762,7 +762,6 @@ function PlaceHolderSign() { const pdfUrl = pdfData.url(); const tenantId = localStorage.getItem("TenantId"); const buffer = atob(pdfBytes) - console.log("buffer", buffer.length) SaveFileSize(buffer.length, pdfUrl, tenantId); return pdfUrl; } catch (e) { diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js index 6e1141cdd..d6f0adaf6 100644 --- a/apps/OpenSignServer/cloud/main.js +++ b/apps/OpenSignServer/cloud/main.js @@ -24,6 +24,8 @@ import GetTemplate from './parsefunction/GetTemplate.js'; import savewebhook from './parsefunction/saveWebhook.js'; import callWebhook from './parsefunction/callWebhook.js'; import SubscribeFree from './parsefunction/SubscribeFree.js'; +import DocumentBeforesave from './parsefunction/DocumentBeforesave.js'; +import TemplateBeforeSave from './parsefunction/TemplateBeforesave.js'; Parse.Cloud.define('AddUserToRole', addUserToGroups); Parse.Cloud.define('UserGroups', getUserGroups); @@ -51,3 +53,5 @@ Parse.Cloud.afterSave('contracts_Document', DocumentAftersave); Parse.Cloud.afterSave('contracts_Contactbook', ContactbookAftersave); Parse.Cloud.afterSave('contracts_Users', ContractUsersAftersave); Parse.Cloud.afterSave('contracts_Template', TemplateAfterSave); +Parse.Cloud.beforeSave('contracts_Document', DocumentBeforesave); +Parse.Cloud.beforeSave('contracts_Template', TemplateBeforeSave); diff --git a/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js b/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js new file mode 100644 index 000000000..14358e098 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js @@ -0,0 +1,35 @@ +async function DocumentBeforesave(request) { + try { + // below code is used to update document when user sent document or self signed + const document = request.object; + const oldDocument = request.original; + + // Check if SignedUrl field has been added (transition from undefined to defined) + if (!oldDocument.get('SignedUrl') && document.get('SignedUrl')) { + const SignedUrl = document.get('SignedUrl'); + + // Update count in contracts_Users class + const query = new Parse.Query('contracts_Users'); + query.equalTo('objectId', oldDocument.get('ExtUserPtr').id); + + try { + const contractUser = await query.first({ useMasterKey: true }); + if (contractUser) { + contractUser.increment('DocumentCount', 1); + await contractUser.save(null, { useMasterKey: true }); + } else { + // Create new entry if not found + const ContractsUsers = Parse.Object.extend('contracts_users'); + const newContractUser = new ContractsUsers(); + newContractUser.set('DocumentCount', 1); + await newContractUser.save(null, { useMasterKey: true }); + } + } catch (error) { + console.log('Error updating document count in contracts_users: ' + error.message); + } + } + } catch (err) { + console.log('err in document beforesave', err.message); + } +} +export default DocumentBeforesave; diff --git a/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js b/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js index 2bcf48500..d2f63cdc5 100644 --- a/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js +++ b/apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js @@ -6,11 +6,11 @@ export default async function SubscribeFree(request) { extQuery.equalTo('UserId', userPtr); const extUser = await extQuery.first({ useMasterKey: true }); - if (extUser) { + if (extUser && extUser?.Next_billing_date < new Date()) { try { const extUpdate = new Parse.Object('contracts_Users'); extUpdate.id = extUser.id; - extUpdate.set('Plan', { plan_code: 'freeplan' }); + extUpdate.set('Plan', { plan_code: 'freeplan' }); const updatePlan = await extUpdate.save(null, { useMasterKey: true }); return { status: 'success', result: 'subscribed!' }; } catch (err) { diff --git a/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js b/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js new file mode 100644 index 000000000..b2ba6e3d3 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js @@ -0,0 +1,31 @@ +async function TemplateBeforeSave(request) { + try { + if (!request.original) { + // below code is used to update template when user sent template or self signed + const template = request.object; + + // Update count in contracts_Users class + const query = new Parse.Query('contracts_Users'); + query.equalTo('objectId', template.get('ExtUserPtr').id); + + try { + const contractUser = await query.first({ useMasterKey: true }); + if (contractUser) { + contractUser.increment('TemplateCount', 1); + await contractUser.save(null, { useMasterKey: true }); + } else { + // Create new entry if not found + const ContractsUsers = Parse.Object.extend('contracts_users'); + const newContractUser = new ContractsUsers(); + newContractUser.set('TemplateCount', 1); + await newContractUser.save(null, { useMasterKey: true }); + } + } catch (error) { + console.log('Error updating template count in contracts_users: ' + error.message); + } + } + } catch (err) { + console.log('err in template beforesave', err.message); + } +} +export default TemplateBeforeSave;