@@ -2,41 +2,96 @@ import axios from 'axios';
2
2
const serverUrl = process . env . SERVER_URL ;
3
3
const appId = process . env . APP_ID ;
4
4
export default async function getSubscription ( request ) {
5
- const extUserId = request . params . extUserId ;
6
- try {
7
- const userRes = await axios . get ( serverUrl + '/users/me' , {
8
- headers : {
9
- 'X-Parse-Application-Id' : appId ,
10
- 'X-Parse-Session-Token' : request . headers [ 'sessiontoken' ] ,
11
- } ,
12
- } ) ;
13
- const userId = userRes . data && userRes . data . objectId ;
14
- if ( userId ) {
15
- const subcriptionCls = new Parse . Query ( 'contracts_Users' ) ;
16
- const exUser = await subcriptionCls . get ( extUserId , { useMasterKey : true } ) ;
17
- if ( exUser ) {
18
- const subscriptionCls = new Parse . Query ( 'contracts_Subscriptions' ) ;
19
- subscriptionCls . equalTo ( 'TenantId' , {
20
- __type : 'Pointer' ,
21
- className : 'partners_Tenant' ,
22
- objectId : exUser . get ( 'TenantId' ) . id ,
23
- } ) ;
24
- subscriptionCls . descending ( 'createdAt' ) ;
25
- const subcripitions = await subscriptionCls . first ( { useMasterKey : true } ) ;
26
- if ( subcripitions ) {
27
- const _subcripitions = JSON . parse ( JSON . stringify ( subcripitions ) ) ;
28
- return { status : 'success' , result : _subcripitions } ;
5
+ const extUserId = request . params . extUserId || '' ;
6
+ const contactId = request . params . contactId || '' ;
7
+
8
+ if ( extUserId ) {
9
+ try {
10
+ const userRes = await axios . get ( serverUrl + '/users/me' , {
11
+ headers : {
12
+ 'X-Parse-Application-Id' : appId ,
13
+ 'X-Parse-Session-Token' : request . headers [ 'sessiontoken' ] ,
14
+ } ,
15
+ } ) ;
16
+ const userId = userRes . data && userRes . data . objectId ;
17
+ if ( userId ) {
18
+ const extCls = new Parse . Query ( 'contracts_Users' ) ;
19
+ const exUser = await extCls . get ( extUserId , { useMasterKey : true } ) ;
20
+ if ( exUser ) {
21
+ const subscriptionCls = new Parse . Query ( 'contracts_Subscriptions' ) ;
22
+ subscriptionCls . equalTo ( 'TenantId' , {
23
+ __type : 'Pointer' ,
24
+ className : 'partners_Tenant' ,
25
+ objectId : exUser . get ( 'TenantId' ) . id ,
26
+ } ) ;
27
+ subscriptionCls . descending ( 'createdAt' ) ;
28
+ const subcripitions = await subscriptionCls . first ( { useMasterKey : true } ) ;
29
+ if ( subcripitions ) {
30
+ const _subcripitions = JSON . parse ( JSON . stringify ( subcripitions ) ) ;
31
+ return { status : 'success' , result : _subcripitions } ;
32
+ } else {
33
+ return { status : 'success' , result : { } } ;
34
+ }
29
35
} else {
30
- return { status : 'success ' , result : { } } ;
36
+ return { status : 'error ' , result : 'User not found!' } ;
31
37
}
32
38
} else {
33
- return { status : 'error' , result : 'User not found !' } ;
39
+ return { status : 'error' , result : 'Invalid session token !' } ;
34
40
}
35
- } else {
36
- return { status : 'error' , result : 'Invalid session token!' } ;
41
+ } catch ( err ) {
42
+ console . log ( 'Err in get subscription' , err . message ) ;
43
+ return { status : 'error' , result : err . message } ;
37
44
}
38
- } catch ( err ) {
39
- console . log ( 'Err in get subscription' , err . message ) ;
40
- return { status : 'error' , result : err . message } ;
45
+ } else if ( contactId ) {
46
+ try {
47
+ const userRes = await axios . get ( serverUrl + '/users/me' , {
48
+ headers : {
49
+ 'X-Parse-Application-Id' : appId ,
50
+ 'X-Parse-Session-Token' : request . headers [ 'sessiontoken' ] ,
51
+ } ,
52
+ } ) ;
53
+
54
+ const userId = userRes . data && userRes . data . objectId ;
55
+ if ( userId ) {
56
+ const contactCls = new Parse . Query ( 'contracts_Contactbook' ) ;
57
+ const contactUser = await contactCls . get ( contactId , { useMasterKey : true } ) ;
58
+ if ( contactUser ) {
59
+ const subscriptionCls = new Parse . Query ( 'contracts_Subscriptions' ) ;
60
+ subscriptionCls . equalTo ( 'TenantId' , {
61
+ __type : 'Pointer' ,
62
+ className : 'partners_Tenant' ,
63
+ objectId : contactUser . get ( 'TenantId' ) . id ,
64
+ } ) ;
65
+ subscriptionCls . descending ( 'createdAt' ) ;
66
+ const subcripitions = await subscriptionCls . first ( { useMasterKey : true } ) ;
67
+
68
+ if ( subcripitions ) {
69
+ const _subcripitions = JSON . parse ( JSON . stringify ( subcripitions ) ) ;
70
+ if ( _subcripitions . PlanCode === 'freeplan' ) {
71
+ return { status : 'success' , result : { isSubscribed : false , plan : 'freeplan' } } ;
72
+ } else if ( _subcripitions ?. Next_billing_date ?. iso ) {
73
+ if ( new Date ( _subcripitions . Next_billing_date . iso ) > new Date ( ) ) {
74
+ return { status : 'success' , result : { isSubscribed : true } } ;
75
+ } else {
76
+ return { status : 'success' , result : { isSubscribed : false } } ;
77
+ }
78
+ } else {
79
+ return { status : 'success' , result : { isSubscribed : false } } ;
80
+ }
81
+ } else {
82
+ return { status : 'success' , result : { isSubscribed : false } } ;
83
+ }
84
+ } else {
85
+ return { status : 'error' , result : 'User not found!' } ;
86
+ }
87
+ } else {
88
+ return { status : 'error' , result : 'Invalid session token!' } ;
89
+ }
90
+ } catch ( err ) {
91
+ console . log ( 'Err in get subscription2' , err . message ) ;
92
+ return { status : 'error' , result : err . message } ;
93
+ }
94
+ } else {
95
+ return { status : 'error' , result : 'Invalid session token!' } ;
41
96
}
42
97
}
0 commit comments