diff --git a/apps/OpenSignServer/cloud/customRoute/customApp.js b/apps/OpenSignServer/cloud/customRoute/customApp.js index fca175c8e..87ee28f32 100644 --- a/apps/OpenSignServer/cloud/customRoute/customApp.js +++ b/apps/OpenSignServer/cloud/customRoute/customApp.js @@ -1,12 +1,22 @@ //--npm modules import express from 'express'; import cors from 'cors'; -export const app = express(); import dotenv from 'dotenv'; +import uploadFile from './uploadFile.js'; +import saveSubscription from './saveSubscription.js'; +import saveInvoice from './saveInvoice.js'; +import savePayments from './savePayments.js'; +export const app = express(); + dotenv.config(); app.use(cors()); -app.use(express.json()); -app.use(express.urlencoded({ extended: true })); -import uploadFile from './uploadFile.js'; +app.use(express.json({ limit: '50mb' })); +app.use(express.urlencoded({ limit: '50mb', extended: true })); app.post('/file_upload', uploadFile); + +app.post('/savesubscription', saveSubscription) +app.post('/saveinvoice', saveInvoice) +app.post('/savepayment', savePayments) + + diff --git a/apps/OpenSignServer/cloud/customRoute/saveInvoice.js b/apps/OpenSignServer/cloud/customRoute/saveInvoice.js new file mode 100644 index 000000000..4bc441a66 --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/saveInvoice.js @@ -0,0 +1,39 @@ +export default async function saveInvoice(request, response) { + const InvoiceId = request.body.data.invoice.invoice_id; + const body = request.body; + const customerId = request.body.data.customer_id; + try { + const extUserCls = new Parse.Query('contracts_Users'); + extUserCls.equalTo('Customer_id', customerId); + const extUser = await extUserCls.first({ useMasterKey: true }); + const invoiceCls = new Parse.Query('contracts_Invoices'); + invoiceCls.equalTo('InvoiceId', InvoiceId); + const invoice = await invoiceCls.first({ useMasterKey: true }); + if (invoice) { + const updateInvoice = new Parse.Object('contracts_Invoices'); + updateInvoice.id = invoice.id; + updateInvoice.set('InvoiceDetails', body); + await updateInvoice.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'update invoice!' }); + } else { + const createInvoice = new Parse.Object('contracts_Invoices'); + createInvoice.set('InvoiceId', InvoiceId); + createInvoice.set('InvoiceDetails', body); + createInvoice.set('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_Users', + objectId: extUser.id, + }); + createInvoice.set('CreatedBy', { + __type: 'Pointer', + className: '_User', + objectId: extUser.get('UserId').id, + }); + await createInvoice.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'create invoice!' }); + } + } catch (err) { + console.log('Err in save invoice', err); + return response.status(400).json({ status: 'error:' + err.message }); + } +} diff --git a/apps/OpenSignServer/cloud/customRoute/savePayments.js b/apps/OpenSignServer/cloud/customRoute/savePayments.js new file mode 100644 index 000000000..4eb5a35de --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/savePayments.js @@ -0,0 +1,39 @@ +export default async function savePayments(request, response) { + const PaymentId = request.body.data.payment.payment_id; + const body = request.body; + const customerId = request.body.data.payment.customer_id; + try { + const extUserCls = new Parse.Query('contracts_Users'); + extUserCls.equalTo('Customer_id', customerId); + const extUser = await extUserCls.first({ useMasterKey: true }); + const paymentCls = new Parse.Query('contracts_Payments'); + paymentCls.equalTo('PaymentId', PaymentId); + const payment = await paymentCls.first({ useMasterKey: true }); + if (payment) { + const updatePayment = new Parse.Object('contracts_Payments'); + updatePayment.id = payment.id; + updatePayment.set('PaymentDetails', body); + await updatePayment.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'update Payment!' }); + } else { + const createPayment = new Parse.Object('contracts_Payments'); + createPayment.set('PaymentId', PaymentId); + createPayment.set('PaymentDetails', body); + createPayment.set('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_Users', + objectId: extUser.id, + }); + createPayment.set('CreatedBy', { + __type: 'Pointer', + className: '_User', + objectId: extUser.get('UserId').id, + }); + await createPayment.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'create payments!' }); + } + } catch (err) { + console.log('Err in save payment', err); + return response.status(400).json({ status: 'error:' + err.message }); + } +} diff --git a/apps/OpenSignServer/cloud/customRoute/saveSubscription.js b/apps/OpenSignServer/cloud/customRoute/saveSubscription.js new file mode 100644 index 000000000..91a8d3af2 --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/saveSubscription.js @@ -0,0 +1,39 @@ +export default async function saveSubscription(request, response) { + const SubscriptionId = request.body.data.subscription.subscription_id; + const body = request.body; + const customerId = request.body.data.subscription.customer_id; + try { + const extUserCls = new Parse.Query('contracts_Users'); + extUserCls.equalTo('Customer_id', customerId); + const extUser = await extUserCls.first({ useMasterKey: true }); + const subcriptionCls = new Parse.Query('contracts_Subscriptions'); + subcriptionCls.equalTo('SubscriptionId', SubscriptionId); + const subscription = await subcriptionCls.first({ useMasterKey: true }); + if (subscription) { + const updateSubscription = new Parse.Object('contracts_Subscripitons'); + updateSubscription.id = subscription.id; + updateSubscription.set('SubscriptionDetails', body); + await updateSubscription.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'update subscription!' }); + } else { + const createSubscription = new Parse.Object('contracts_Subscripitons'); + createSubscription.set('SubscriptionId', SubscriptionId); + createSubscription.set('SubscriptionDetails', body); + createSubscription.set('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_Users', + objectId: extUser.id, + }); + createSubscription.set('CreatedBy', { + __type: 'Pointer', + className: '_User', + objectId: extUser.get('UserId').id, + }); + await createSubscription.save(null, { useMasterKey: true }); + return response.status(200).json({ status: 'create subscription!' }); + } + } catch (err) { + console.log('Err in save subscription', err); + return response.status(400).json({ status: 'error:' + err.message }); + } +} diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js index 90146e704..6b010f0ff 100644 --- a/apps/OpenSignServer/cloud/main.js +++ b/apps/OpenSignServer/cloud/main.js @@ -29,6 +29,9 @@ import DocumentBeforeFind from './parsefunction/DocumentAfterFind.js'; import TemplateAfterFind from './parsefunction/TemplateAfterFind.js'; import UserAfterFind from './parsefunction/UserAfterFInd.js'; import SignatureAfterFind from './parsefunction/SignatureAfterFind.js'; +import getInvoices from './parsefunction/getInvoice.js'; +import getPayments from './parsefunction/getPayments.js'; +import getSubscriptions from './parsefunction/getSubscriptions.js'; Parse.Cloud.define('AddUserToRole', addUserToGroups); Parse.Cloud.define('UserGroups', getUserGroups); @@ -51,6 +54,9 @@ Parse.Cloud.define('getTemplate', GetTemplate); Parse.Cloud.define('savewebhook', savewebhook); Parse.Cloud.define('callwebhook', callWebhook); Parse.Cloud.define('freesubscription', SubscribeFree); +Parse.Cloud.define('getInvoice', getInvoices); +Parse.Cloud.define('getPayments', getPayments); +Parse.Cloud.define('getSubscriptions', getSubscriptions); Parse.Cloud.afterSave('contracts_Document', DocumentAftersave); Parse.Cloud.afterSave('contracts_Contactbook', ContactbookAftersave); Parse.Cloud.afterSave('contracts_Users', ContractUsersAftersave); @@ -60,4 +66,4 @@ Parse.Cloud.beforeSave('contracts_Template', TemplateBeforeSave); Parse.Cloud.afterFind(Parse.User, UserAfterFind); Parse.Cloud.afterFind('contracts_Document', DocumentBeforeFind); Parse.Cloud.afterFind('contracts_Template', TemplateAfterFind); -Parse.Cloud.afterFind("contracts_Signature", SignatureAfterFind); +Parse.Cloud.afterFind('contracts_Signature', SignatureAfterFind); diff --git a/apps/OpenSignServer/cloud/parsefunction/getInvoice.js b/apps/OpenSignServer/cloud/parsefunction/getInvoice.js new file mode 100644 index 000000000..92f491470 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/getInvoice.js @@ -0,0 +1,26 @@ +export default async function getInvoices(request) { + const limit = request.params.limit || 100; + const skip = request.params.skip || 0; + const extUserId = request.params.extUserId; + try { + const invoiceCls = new Parse.Query('contracts_Invoices'); + invoiceCls.equalTo('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_User', + objectId: extUserId, + }); + invoiceCls.limit(limit); + invoiceCls.skip(skip); + invoiceCls.descending('createdAt'); + const invoices = await invoiceCls.find({ useMasterKey: true }); + if (invoices?.length > 0) { + const _invoices = JSON.parse(JSON.stringify(invoices)); + return { status: 'success', result: _invoices }; + } else { + return { status: 'success', result: [] }; + } + } catch (err) { + console.log('Err in get invoices', err.message); + return { status: 'error', result: err.message }; + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/getPayments.js b/apps/OpenSignServer/cloud/parsefunction/getPayments.js new file mode 100644 index 000000000..54e9ba738 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/getPayments.js @@ -0,0 +1,26 @@ +export default async function getPayments(request) { + const limit = request.params.limit || 100; + const skip = request.params.skip || 0; + const extUserId = request.params.extUserId; + try { + const paymentsCls = new Parse.Query('contracts_Payments'); + paymentsCls.equalTo('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_User', + objectId: extUserId, + }); + paymentsCls.limit(limit); + paymentsCls.skip(skip); + paymentsCls.descending('createdAt'); + const payments = await paymentsCls.find({ useMasterKey: true }); + if (payments?.length > 0) { + const _payments = JSON.parse(JSON.stringify(payments)); + return { status: 'success', result: _payments }; + } else { + return { status: 'success', result: [] }; + } + } catch (err) { + console.log('Err in get Payments', err.message); + return { status: 'error', result: err.message }; + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/getSubscriptions.js b/apps/OpenSignServer/cloud/parsefunction/getSubscriptions.js new file mode 100644 index 000000000..488c00d1d --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/getSubscriptions.js @@ -0,0 +1,26 @@ +export default async function getSubscription(request) { + const limit = request.params.limit || 100; + const skip = request.params.skip || 0; + const extUserId = request.params.extUserId; + try { + const subscriptionCls = new Parse.Query('contracts_Subscriptions'); + subscriptionCls.equalTo('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_User', + objectId: extUserId, + }); + subscriptionCls.limit(limit); + subscriptionCls.skip(skip); + subscriptionCls.descending('createdAt'); + const subcripitions = await subscriptionCls.find({ useMasterKey: true }); + if (subcripitions?.length > 0) { + const _subcripitions = JSON.parse(JSON.stringify(subcripitions)); + return { status: 'success', result: _subcripitions }; + } else { + return { status: 'success', result: [] }; + } + } catch (err) { + console.log('Err in get subscription', err.message); + return { status: 'error', result: err.message }; + } +}