Skip to content

Commit 509f8f9

Browse files
authored
Merge pull request #603 from OpenSignLabs/plan_sub
refactor: update extra-info of user
2 parents c172a7c + 5b85d5b commit 509f8f9

File tree

8 files changed

+188
-114
lines changed

8 files changed

+188
-114
lines changed

apps/OpenSign/src/constant/Utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export async function fetchSubscription() {
2626
};
2727
const params = { extUserId: jsonSender[0].objectId };
2828
const tenatRes = await axios.post(url, params, { headers: headers });
29-
const plan = tenatRes.data?.result?.result?.PlanName;
29+
const plan = tenatRes.data?.result?.result?.PlanCode;
3030
const billingDate = tenatRes.data?.result?.result?.Next_billing_date?.iso;
3131
return { plan, billingDate };
3232
} catch (err) {

apps/OpenSign/src/pages/Pgsignup.js

Lines changed: 15 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,8 @@ const PgSignUp = () => {
4141
const url = window.location.href;
4242
let paramString = url.split("?")[1];
4343
let queryString = new URLSearchParams(paramString);
44-
// console.log("url ", queryString);
45-
4644
let obj = { ...formData };
4745
for (let pair of queryString.entries()) {
48-
// console.log("Key is: " + pair[0]);
49-
// console.log("Value is: " + pair[1]);
5046
obj = { ...obj, [pair[0]]: pair[1] };
5147
}
5248
const zohoRes = await axios.post(
@@ -61,34 +57,27 @@ const PgSignUp = () => {
6157
}
6258
}
6359
);
64-
// console.log("zohoRes ", zohoRes);
6560
const userSettings = JSON.parse(localStorage.getItem("userSettings"));
66-
const extClass = userSettings[0].extended_class;
67-
// console.log("extClass ", extClass);
68-
const params = { email: userDetails.email };
69-
const res = await Parse.Cloud.run("getUserDetails", params);
70-
// console.log("res", res);
71-
if (res) {
72-
const updateQuery = new Parse.Object(extClass);
73-
updateQuery.id = res.id;
74-
updateQuery.set(
75-
"Next_billing_date",
76-
new Date(zohoRes.data.result.nextBillingDate)
77-
);
78-
updateQuery.set("Plan", zohoRes.data.result.plan);
79-
updateQuery.set("Customer_id", zohoRes.data.result.customer_id);
80-
updateQuery.set(
81-
"Subscription_id",
82-
zohoRes.data.result.subscription_id
83-
);
84-
const updateRes = await updateQuery.save();
85-
if (updateRes) {
61+
const params = { subscription: zohoRes.data.result.subscription };
62+
const baseurl = `${parseBaseUrl}functions/savesubscription`;
63+
try {
64+
const res = await axios.post(baseurl, params, {
65+
headers: {
66+
"Content-Type": "application/json",
67+
"X-Parse-Application-Id": parseAppId,
68+
sessiontoken: localStorage.getItem("accesstoken")
69+
}
70+
});
71+
if (res) {
8672
localStorage.removeItem("userDetails");
8773
navigate(
8874
"/" + userSettings[0].pageType + "/" + userSettings[0].pageId
8975
);
9076
setIsLoader(false);
9177
}
78+
} catch (err) {
79+
console.log("err ", err.message);
80+
setIsLoader(false);
9281
}
9382
} catch (err) {
9483
console.log("err ", err);
@@ -108,12 +97,8 @@ const PgSignUp = () => {
10897
const url = window.location.href;
10998
let paramString = url.split("?")[1];
11099
let queryString = new URLSearchParams(paramString);
111-
// console.log("url ", queryString);
112-
113100
let obj = { ...formData };
114101
for (let pair of queryString.entries()) {
115-
// console.log("Key is: " + pair[0]);
116-
// console.log("Value is: " + pair[1]);
117102
obj = { ...obj, [pair[0]]: pair[1] };
118103
}
119104
saveUser(obj);
@@ -157,19 +142,8 @@ const PgSignUp = () => {
157142
email: zohoRes.data.result.email,
158143
phone: zohoRes.data.result.phone,
159144
role: obj.role
160-
// "pincode": "",
161-
// "address": "",
162-
// "country": "",
163-
// "state": "",
164-
// "city": ""
165145
},
166-
167-
planDetails: {
168-
plan: zohoRes.data.result.plan || {},
169-
nextBillingDate: zohoRes.data.result.nextBillingDate || "",
170-
customer_id: zohoRes.data.result.customer_id || "",
171-
subscription_id: zohoRes.data.result.subscription_id || ""
172-
}
146+
subscription: zohoRes.data.result.subscription
173147
};
174148
const usersignup = await Parse.Cloud.run("usersignup", params);
175149
// console.log("usersignup ", usersignup);

apps/OpenSignServer/cloud/customRoute/saveSubscription.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ export default async function saveSubscription(request, response) {
33
const body = request.body;
44
const Email = request.body.data.subscription.customer.email;
55
const Next_billing_date = request.body.data.subscription.next_billing_at;
6-
const planName = request.body.data.subscription.plan.name;
6+
const planCode = request.body.data.subscription.plan.plan_code
7+
78
try {
89
const extUserCls = new Parse.Query('contracts_Users');
910
extUserCls.equalTo('Email', Email);
@@ -19,9 +20,10 @@ export default async function saveSubscription(request, response) {
1920
if (subscription) {
2021
const updateSubscription = new Parse.Object('contracts_Subscriptions');
2122
updateSubscription.id = subscription.id;
23+
updateSubscription.set('SubscriptionId', SubscriptionId);
2224
updateSubscription.set('SubscriptionDetails', body);
2325
updateSubscription.set('Next_billing_date', new Date(Next_billing_date));
24-
updateSubscription.set('PlanName', planName);
26+
updateSubscription.set('PlanCode', planCode);
2527
await updateSubscription.save(null, { useMasterKey: true });
2628
return response.status(200).json({ status: 'update subscription!' });
2729
} else {
@@ -44,7 +46,7 @@ export default async function saveSubscription(request, response) {
4446
objectId: extUser.get('TenantId').id,
4547
});
4648
createSubscription.set('Next_billing_date', new Date(Next_billing_date));
47-
createSubscription.set('PlanName', planName);
49+
createSubscription.set('PlanCode', planCode);
4850
await createSubscription.save(null, { useMasterKey: true });
4951
return response.status(200).json({ status: 'create subscription!' });
5052
}

apps/OpenSignServer/cloud/main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import getInvoices from './parsefunction/getInvoices.js';
3333
import getPayments from './parsefunction/getPayments.js';
3434
import getSubscriptions from './parsefunction/getSubscriptions.js';
3535
import TenantAterFind from './parsefunction/TenantAfterFind.js';
36+
import saveSubscriptio from './parsefunction/saveSubscription.js';
3637

3738
Parse.Cloud.define('AddUserToRole', addUserToGroups);
3839
Parse.Cloud.define('UserGroups', getUserGroups);
@@ -69,3 +70,4 @@ Parse.Cloud.afterFind('contracts_Document', DocumentBeforeFind);
6970
Parse.Cloud.afterFind('contracts_Template', TemplateAfterFind);
7071
Parse.Cloud.afterFind('contracts_Signature', SignatureAfterFind);
7172
Parse.Cloud.afterFind('partners_Tenant', TenantAterFind);
73+
Parse.Cloud.define('savesubscription', saveSubscriptio);

apps/OpenSignServer/cloud/parsefunction/SubscribeFree.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ export default async function SubscribeFree(request) {
1414
});
1515
subscriptionCls.descending('createdAt');
1616
const subcripitions = await subscriptionCls.first({ useMasterKey: true });
17-
if (subcripitions?.get('PlanName') === 'freeplan') {
17+
if (subcripitions?.get('PlanCode') === 'freeplan') {
1818
return { status: 'success', result: 'already subscribed!' };
1919
} else if (subcripitions?.get('Next_billing_date') < new Date()) {
2020
try {
2121
const updateSubscription = new Parse.Object('contracts_Subscriptions');
2222
updateSubscription.id = subcripitions.id;
23-
updateSubscription.set('PlanName', 'freeplan');
23+
updateSubscription.set('PlanCode', 'freeplan');
2424
await updateSubscription.save(null, { useMasterKey: true });
2525
return { status: 'success', result: 'subscribed!' };
2626
} catch (err) {
@@ -32,7 +32,7 @@ export default async function SubscribeFree(request) {
3232
} else {
3333
try {
3434
const createSubscription = new Parse.Object('contracts_Subscriptions');
35-
createSubscription.set('PlanName', 'freeplan');
35+
createSubscription.set('PlanCode', 'freeplan');
3636
createSubscription.set('ExtUserPtr', {
3737
__type: 'Pointer',
3838
className: 'contracts_Users',

apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,9 @@ export default async function ZohoDetails(request) {
3030
headers: {
3131
Authorization: 'Zoho-oauthtoken ' + res.data.access_token,
3232
'X-com-zoho-subscriptions-organizationid': process.env.ZOHO_BILLING_ORG_ID,
33-
// 'X-com-zoho-billing-organizationid': process.env.ZOHO_BILLING_ORG_ID,
3433
},
3534
});
36-
// console.log(
37-
// "userData.data.data.subscription.contactpersons ",
38-
// userData.data.data.subscription.contactpersons
39-
// );
4035

41-
// console.log("userData.data.expiring_time ", userData.data.expiring_time);
4236
const first_name = userData.data.data.subscription.contactpersons[0].first_name || '';
4337
const last_name = userData.data.data.subscription.contactpersons[0].last_name || '';
4438
const company_name =
@@ -59,6 +53,7 @@ export default async function ZohoDetails(request) {
5953
customer_id: userData.data.data.subscription.customer_id,
6054
subscription_id: userData.data.data.subscription.subscription_id,
6155
jobTitle: jobTitle,
56+
subscription: userData.data,
6257
};
6358
return resData;
6459
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import axios from 'axios';
2+
export default async function saveSubscriptio(request) {
3+
const serverUrl = process.env.SERVER_URL;
4+
const appId = process.env.APP_ID;
5+
const subscription = request.params.subscription;
6+
const SubscriptionId = subscription.data.subscription.subscription_id;
7+
const body = subscription;
8+
const Next_billing_date = subscription.data.subscription.next_billing_at;
9+
const planCode = subscription.data.subscription.plan.plan_code;
10+
11+
try {
12+
const userRes = await axios.get(serverUrl + '/users/me', {
13+
headers: {
14+
'X-Parse-Application-Id': appId,
15+
'X-Parse-Session-Token': request.headers['sessiontoken'],
16+
},
17+
});
18+
if (userRes.data && userRes.data.objectId) {
19+
const extUserCls = new Parse.Query('contracts_Users');
20+
extUserCls.equalTo('UserId', {
21+
__type: 'Pointer',
22+
className: '_User',
23+
objectId: userRes.data.objectId,
24+
});
25+
const extUser = await extUserCls.first({ useMasterKey: true });
26+
if (extUser) {
27+
const subcriptionCls = new Parse.Query('contracts_Subscriptions');
28+
subcriptionCls.equalTo('TenantId', {
29+
__type: 'Pointer',
30+
className: 'partners_Tenant',
31+
objectId: extUser.get('TenantId').id,
32+
});
33+
const subscription = await subcriptionCls.first({ useMasterKey: true });
34+
if (subscription) {
35+
const updateSubscription = new Parse.Object('contracts_Subscriptions');
36+
updateSubscription.id = subscription.id;
37+
updateSubscription.set('SubscriptionId', SubscriptionId);
38+
updateSubscription.set('SubscriptionDetails', body);
39+
updateSubscription.set('Next_billing_date', new Date(Next_billing_date));
40+
updateSubscription.set('PlanCode', planCode);
41+
await updateSubscription.save(null, { useMasterKey: true });
42+
return { status: 'update subscription!' };
43+
} else {
44+
const createSubscription = new Parse.Object('contracts_Subscriptions');
45+
createSubscription.set('SubscriptionId', SubscriptionId);
46+
createSubscription.set('SubscriptionDetails', body);
47+
createSubscription.set('ExtUserPtr', {
48+
__type: 'Pointer',
49+
className: 'contracts_Users',
50+
objectId: extUser.id,
51+
});
52+
createSubscription.set('CreatedBy', {
53+
__type: 'Pointer',
54+
className: '_User',
55+
objectId: extUser.get('UserId').id,
56+
});
57+
createSubscription.set('TenantId', {
58+
__type: 'Pointer',
59+
className: 'partners_Tenant',
60+
objectId: extUser.get('TenantId').id,
61+
});
62+
createSubscription.set('Next_billing_date', new Date(Next_billing_date));
63+
createSubscription.set('PlanCode', planCode);
64+
await createSubscription.save(null, { useMasterKey: true });
65+
return { status: 'create subscription!' };
66+
}
67+
} else {
68+
return { status: 'user not found!' };
69+
}
70+
} else {
71+
return { status: 'user not found!' };
72+
}
73+
} catch (err) {
74+
console.log('Err in save subscription', err);
75+
throw new Error(err.message);
76+
}
77+
}

0 commit comments

Comments
 (0)