diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js new file mode 100644 index 000000000..c6f38442c --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js @@ -0,0 +1,120 @@ +import axios from 'axios'; +export default async function createContact(request, response) { + const serverUrl = process.env.SERVER_URL; + const appId = process.env.APP_ID; + const name = request.body.name; + const phone = request.body.phone; + const email = request.body.email; + + const reqToken = request.headers['x-api-token']; + if (!reqToken) { + return response.json({ message: 'Please Provide API Token' }); + } + const tokenQuery = new Parse.Query('appToken'); + tokenQuery.equalTo('token', reqToken); + const token = await tokenQuery.first({ useMasterKey: true }); + if (token !== undefined) { + // Valid Token then proceed request + const id = token.get('Id'); + const userId = { __type: 'Pointer', className: '_User', objectId: id }; + try { + const Tenant = new Parse.Query('partners_Tenant'); + Tenant.equalTo('UserId', userId); + const tenantRes = Tenant.first({ useMasterKey: true }); + + const contactQuery = new Parse.Object('contracts_Contactbook'); + contactQuery.set('Name', name); + contactQuery.set('Phone', phone); + contactQuery.set('Email', email); + contactQuery.set('UserRole', 'contracts_Guest'); + + if (tenantRes) { + contactQuery.set('TenantId', { + __type: 'Pointer', + className: 'partners_Tenant', + objectId: tenantRes.id, + }); + } + try { + const _users = Parse.Object.extend('User'); + const _user = new _users(); + _user.set('name', name); + _user.set('username', email); + _user.set('email', email); + _user.set('phone', phone); + _user.set('password', phone); + + const user = await _user.save(); + if (user) { + const roleurl = `${serverUrl}/functions/AddUserToRole`; + const headers = { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': appId, + // sessionToken: localStorage.getItem('accesstoken'), + }; + const body = { + appName: 'contracts', + roleName: 'contracts_Guest', + userId: user.id, + }; + await axios.post(roleurl, body, { headers: headers }); + const currentUser = Parse.User.current(); + contactQuery.set('CreatedBy', Parse.User.createWithoutData(currentUser.id)); + + contactQuery.set('UserId', user); + const acl = new Parse.ACL(); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); + acl.setReadAccess(user.id, true); + acl.setWriteAccess(user.id, true); + + contactQuery.setACL(acl); + + await contactQuery.save(); + // const parseData = JSON.parse(JSON.stringify(res)); + return response.json({ code: 200, message: 'Contact create sucessfully!' }); + } + } catch (err) { + console.log('err ', err); + if (err.code === 202) { + const params = { email: email }; + const userRes = await Parse.Cloud.run('getUserId', params); + const roleurl = `${parseBaseUrl}functions/AddUserToRole`; + const headers = { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': parseAppId, + // sessionToken: localStorage.getItem('accesstoken'), + }; + const body = { + appName: 'contracts', + roleName: 'contracts_Guest', + userId: userRes.id, + }; + await axios.post(roleurl, body, { headers: headers }); + const currentUser = Parse.User.current(); + contactQuery.set('CreatedBy', Parse.User.createWithoutData(currentUser.id)); + + contactQuery.set('UserId', { + __type: 'Pointer', + className: '_User', + objectId: userRes.id, + }); + const acl = new Parse.ACL(); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); + acl.setReadAccess(userRes.id, true); + acl.setWriteAccess(userRes.id, true); + + contactQuery.setACL(acl); + await contactQuery.save(); + return response.json({ code: 200, message: 'Contact create sucessfully!' }); + // const parseData = JSON.parse(JSON.stringify(res)); + } + } + } catch (err) { + return response.json({ code: 404, message: 'Something went wrong, please try again later!' }); + } + } else { + return response.json({ code: 404, message: 'Invalid API Token!' }); + } +} diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js index 5c029019e..763505268 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js @@ -16,8 +16,8 @@ export default async function deletedTemplate(request, response) { template.equalTo('CreatedBy', userId); const res = await template.first({ useMasterKey: true }); if (res) { - const isDeleted = res.get('IsArchive'); - if (isDeleted && isDeleted) { + const isArchive = res.get('IsArchive'); + if (isArchive && isArchive) { return response.json({ code: 404, message: 'Record not found!' }); } else { const template = Parse.Object.extend('contracts_Template'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js index da8f0302b..e2a2762f0 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js @@ -11,8 +11,13 @@ export default async function getContactList(request, response) { // Valid Token then proceed request const id = token.get('Id'); const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const limit = request?.body?.limit ? request.body.limit : 100; + const skip = request?.body?.skip ? request.body.skip : 0; const Contactbook = new Parse.Query('contracts_Contactbook'); Contactbook.equalTo('CreatedBy', userId); + Contactbook.notEqualTo('IsDeleted', true); + Contactbook.limit(limit); + Contactbook.skip(skip); const res = await Contactbook.find({ useMasterKey: true }); if (res && res.length > 0) { return response.json({ code: 200, result: res }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js index 0756c28b4..d17387d74 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js @@ -17,8 +17,8 @@ export default async function getDocumentList(request, response) { // Valid Token then proceed request const userId = token.get('Id'); const docType = request.body.doctype; - const limit = request.body.limit; - const skip = request.body.skip; + const limit = request?.body?.limit ? request.body.limit : 100; + const skip = request?.body?.skip ? request.body.skip : 0; let reportId; switch (docType) { case 'draftDocuments': diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js index b94b4b65d..36a73bc91 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js @@ -1,5 +1,4 @@ import axios from 'axios'; -import reportJson from '../../../parsefunction/reportsJson.js'; import dotenv from 'dotenv'; dotenv.config(); @@ -16,8 +15,8 @@ export default async function getTemplatetList(request, response) { if (token !== undefined) { // Valid Token then proceed request const userId = token.get('Id'); - const limit = request.body.limit ? request.body.limit : 200; - const skip = request.body.skip ? request.body.skip : 0; + const limit = request?.body?.limit ? request.body.limit : 100; + const skip = request?.body?.skip ? request.body.skip : 0; const clsName = 'contracts_Template'; const params = {