Merge pull request #576 from OpenSignLabs/patch-1

fix: save invoice and payment analytics
This commit is contained in:
prafull-opensignlabs
2024-04-09 11:30:34 +05:30
committed by GitHub
7 changed files with 102 additions and 60 deletions
@@ -1,11 +1,11 @@
export default async function saveInvoice(request, response) {
const InvoiceId = request.body.data.invoice.invoice_id;
const body = request.body;
const Email = request.body.data.email;
const Email = request.body.data.invoice.email
try {
const extUserCls = new Parse.Query('contracts_Users');
extUserCls.equalTo('Customer_id', Email);
extUserCls.equalTo('Email', Email);
const extUser = await extUserCls.first({ useMasterKey: true });
const invoiceCls = new Parse.Query('contracts_Invoices');
invoiceCls.equalTo('InvoiceId', InvoiceId);
@@ -33,6 +33,7 @@ export default async function saveInvoice(request, response) {
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 });
@@ -1,11 +1,10 @@
export default async function savePayments(request, response) {
const PaymentId = request.body.data.payment.payment_id;
const body = request.body;
const Email = request.body.data.email;
const Email = request.body.data.payment.email
try {
const extUserCls = new Parse.Query('contracts_Users');
extUserCls.equalTo('Customer_id', Email);
extUserCls.equalTo('Email', Email);
const extUser = await extUserCls.first({ useMasterKey: true });
const paymentCls = new Parse.Query('contracts_Payments');
paymentCls.equalTo('PaymentId', PaymentId);
+3 -3
View File
@@ -54,9 +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.define('getinvoices', 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);
@@ -1,26 +0,0 @@
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 };
}
}
@@ -0,0 +1,40 @@
import axios from 'axios';
const serverUrl = process.env.SERVER_URL;
const appId = process.env.APP_ID;
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 userRes = await axios.get(serverUrl + '/users/me', {
headers: {
'X-Parse-Application-Id': appId,
'X-Parse-Session-Token': request.headers['sessiontoken'],
},
});
const userId = userRes.data && userRes.data.objectId;
if (userId) {
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: [] };
}
} else {
return { status: 'error', result: 'Invalid session token!' };
}
} catch (err) {
console.log('Err in get invoices', err.message);
return { status: 'error', result: err.message };
}
}
@@ -1,23 +1,37 @@
import axios from 'axios';
const serverUrl = process.env.SERVER_URL;
const appId = process.env.APP_ID;
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,
const userRes = await axios.get(serverUrl + '/users/me', {
headers: {
'X-Parse-Application-Id': appId,
'X-Parse-Session-Token': request.headers['sessiontoken'],
},
});
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 };
const userId = userRes.data && userRes.data.objectId;
if (userId) {
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: [] };
}
} else {
return { status: 'success', result: [] };
return { status: 'error', result: 'Invalid session token!' };
}
} catch (err) {
console.log('Err in get Payments', err.message);
@@ -1,23 +1,37 @@
import axios from 'axios';
const serverUrl = process.env.SERVER_URL;
const appId = process.env.APP_ID;
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,
const userRes = await axios.get(serverUrl + '/users/me', {
headers: {
'X-Parse-Application-Id': appId,
'X-Parse-Session-Token': request.headers['sessiontoken'],
},
});
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 };
const userId = userRes.data && userRes.data.objectId;
if (userId) {
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: [] };
}
} else {
return { status: 'success', result: [] };
return { status: 'error', result: 'Invalid session token!' };
}
} catch (err) {
console.log('Err in get subscription', err.message);