@@ -2,9 +2,9 @@ import axios from 'axios';
2
2
export default async function createContact ( request , response ) {
3
3
const serverUrl = process . env . SERVER_URL ;
4
4
const appId = process . env . APP_ID ;
5
- const name = request . body . Name ;
6
- const phone = request . body . Phone ;
7
- const email = request . body . Email ;
5
+ const name = request . body . name ;
6
+ const phone = request . body . phone ;
7
+ const email = request . body . email ;
8
8
const reqToken = request . headers [ 'x-api-token' ] ;
9
9
if ( ! reqToken ) {
10
10
return response . status ( 400 ) . json ( { error : 'Please Provide API Token' } ) ;
@@ -16,127 +16,143 @@ export default async function createContact(request, response) {
16
16
// Valid Token then proceed request
17
17
const userPtr = token . get ( 'userId' ) ;
18
18
try {
19
- const Tenant = new Parse . Query ( 'partners_Tenant ' ) ;
20
- Tenant . equalTo ( 'UserId ' , userPtr ) ;
21
- const tenantRes = await Tenant . first ( { useMasterKey : true } ) ;
19
+ const contactbook = new Parse . Query ( 'contracts_Contactbook ' ) ;
20
+ contactbook . equalTo ( 'Email ' , email ) ;
21
+ contactbook . equalTo ( 'CreatedBy' , userPtr ) ;
22
22
23
- const contactQuery = new Parse . Object ( 'contracts_Contactbook' ) ;
24
- contactQuery . set ( 'Name' , name ) ;
25
- contactQuery . set ( 'Phone' , phone ) ;
26
- contactQuery . set ( 'Email' , email ) ;
27
- contactQuery . set ( 'UserRole' , 'contracts_Guest' ) ;
28
- if ( tenantRes && tenantRes . id ) {
29
- contactQuery . set ( 'TenantId' , {
30
- __type : 'Pointer' ,
31
- className : 'partners_Tenant' ,
32
- objectId : tenantRes . id ,
33
- } ) ;
34
- }
35
- try {
36
- const _users = Parse . Object . extend ( 'User' ) ;
37
- const _user = new _users ( ) ;
38
- _user . set ( 'name' , name ) ;
39
- _user . set ( 'username' , email ) ;
40
- _user . set ( 'email' , email ) ;
41
- _user . set ( 'phone' , phone ) ;
42
- _user . set ( 'password' , phone ) ;
23
+ const userExists = await contactbook . first ( { useMasterKey : true } ) ;
43
24
44
- const user = await _user . save ( ) ;
45
- if ( user ) {
46
- const roleurl = `${ serverUrl } /functions/AddUserToRole` ;
47
- const headers = {
48
- 'Content-Type' : 'application/json' ,
49
- 'X-Parse-Application-Id' : appId ,
50
- // sessionToken: localStorage.getItem('accesstoken'),
51
- } ;
52
- const body = {
53
- appName : 'contracts' ,
54
- roleName : 'contracts_Guest' ,
55
- userId : user . id ,
56
- } ;
57
- await axios . post ( roleurl , body , { headers : headers } ) ;
58
- const currentUser = userPtr ;
59
- contactQuery . set ( 'CreatedBy' , currentUser ) ;
60
- contactQuery . set ( 'UserId' , user ) ;
25
+ if ( userExists ) {
26
+ return response
27
+ . status ( 401 )
28
+ . json ( { error : 'Contact already exists!' , objectId : userExists . id } ) ;
29
+ } else {
30
+ try {
31
+ const Tenant = new Parse . Query ( 'partners_Tenant' ) ;
32
+ Tenant . equalTo ( 'UserId' , userPtr ) ;
33
+ const tenantRes = await Tenant . first ( { useMasterKey : true } ) ;
61
34
62
- const acl = new Parse . ACL ( ) ;
63
- acl . setReadAccess ( userPtr . id , true ) ;
64
- acl . setWriteAccess ( userPtr . id , true ) ;
65
- acl . setReadAccess ( user . id , true ) ;
66
- acl . setWriteAccess ( user . id , true ) ;
67
- contactQuery . setACL ( acl ) ;
35
+ const contactQuery = new Parse . Object ( 'contracts_Contactbook' ) ;
36
+ contactQuery . set ( 'Name' , name ) ;
37
+ contactQuery . set ( 'Phone' , phone ) ;
38
+ contactQuery . set ( 'Email' , email ) ;
39
+ contactQuery . set ( 'UserRole' , 'contracts_Guest' ) ;
40
+ if ( tenantRes && tenantRes . id ) {
41
+ contactQuery . set ( 'TenantId' , {
42
+ __type : 'Pointer' ,
43
+ className : 'partners_Tenant' ,
44
+ objectId : tenantRes . id ,
45
+ } ) ;
46
+ }
47
+ try {
48
+ const _users = Parse . Object . extend ( 'User' ) ;
49
+ const _user = new _users ( ) ;
50
+ _user . set ( 'name' , name ) ;
51
+ _user . set ( 'username' , email ) ;
52
+ _user . set ( 'email' , email ) ;
53
+ _user . set ( 'phone' , phone ) ;
54
+ _user . set ( 'password' , phone ) ;
68
55
69
- const contactRes = await contactQuery . save ( ) ;
70
- const parseRes = JSON . parse ( JSON . stringify ( contactRes ) ) ;
71
- return response . json ( {
72
- objectId : parseRes . objectId ,
73
- Name : parseRes . Name ,
74
- Email : parseRes . Email ,
75
- Phone : parseRes . Phone ,
76
- createdAt : parseRes . createdAt ,
77
- updatedAt : parseRes . updatedAt ,
78
- } ) ;
79
- }
80
- } catch ( err ) {
81
- console . log ( 'err in' , err ) ;
82
- if ( err . code === 202 ) {
83
- const params = { email : email } ;
84
- const userRes = await Parse . Cloud . run ( 'getUserId' , params ) ;
85
- const roleurl = `${ serverUrl } /functions/AddUserToRole` ;
86
- const headers = {
87
- 'Content-Type' : 'application/json' ,
88
- 'X-Parse-Application-Id' : appId ,
89
- // sessionToken: localStorage.getItem('accesstoken'),
90
- } ;
91
- const body = {
92
- appName : 'contracts' ,
93
- roleName : 'contracts_Guest' ,
94
- userId : userRes . id ,
95
- } ;
96
- await axios . post ( roleurl , body , { headers : headers } ) ;
97
- contactQuery . set ( 'CreatedBy' , userPtr ) ;
98
- contactQuery . set ( 'UserId' , {
99
- __type : 'Pointer' ,
100
- className : '_User' ,
101
- objectId : userRes . id ,
102
- } ) ;
103
- const acl = new Parse . ACL ( ) ;
104
- acl . setReadAccess ( userPtr . id , true ) ;
105
- acl . setWriteAccess ( userPtr . id , true ) ;
106
- acl . setReadAccess ( userRes . id , true ) ;
107
- acl . setWriteAccess ( userRes . id , true ) ;
56
+ const user = await _user . save ( ) ;
57
+ if ( user ) {
58
+ const roleurl = `${ serverUrl } /functions/AddUserToRole` ;
59
+ const headers = {
60
+ 'Content-Type' : 'application/json' ,
61
+ 'X-Parse-Application-Id' : appId ,
62
+ // sessionToken: localStorage.getItem('accesstoken'),
63
+ } ;
64
+ const body = {
65
+ appName : 'contracts' ,
66
+ roleName : 'contracts_Guest' ,
67
+ userId : user . id ,
68
+ } ;
69
+ await axios . post ( roleurl , body , { headers : headers } ) ;
70
+ const currentUser = userPtr ;
71
+ contactQuery . set ( 'CreatedBy' , currentUser ) ;
72
+ contactQuery . set ( 'UserId' , user ) ;
108
73
109
- contactQuery . setACL ( acl ) ;
110
- const contactRes = await contactQuery . save ( ) ;
111
- if ( contactRes ) {
112
- const parseRes = JSON . parse ( JSON . stringify ( contactRes ) ) ;
113
- return response . json ( {
114
- objectId : parseRes . objectId ,
115
- Name : parseRes . Name ,
116
- Email : parseRes . Email ,
117
- Phone : parseRes . Phone ,
118
- createdAt : parseRes . createdAt ,
119
- updatedAt : parseRes . updatedAt ,
120
- } ) ;
74
+ const acl = new Parse . ACL ( ) ;
75
+ acl . setReadAccess ( userPtr . id , true ) ;
76
+ acl . setWriteAccess ( userPtr . id , true ) ;
77
+ acl . setReadAccess ( user . id , true ) ;
78
+ acl . setWriteAccess ( user . id , true ) ;
79
+ contactQuery . setACL ( acl ) ;
80
+
81
+ const contactRes = await contactQuery . save ( ) ;
82
+ const parseRes = JSON . parse ( JSON . stringify ( contactRes ) ) ;
83
+ return response . json ( {
84
+ objectId : parseRes . objectId ,
85
+ Name : parseRes . Name ,
86
+ Email : parseRes . Email ,
87
+ Phone : parseRes . Phone ,
88
+ createdAt : parseRes . createdAt ,
89
+ updatedAt : parseRes . updatedAt ,
90
+ } ) ;
91
+ }
92
+ } catch ( err ) {
93
+ console . log ( 'err in' , err ) ;
94
+ if ( err . code === 202 ) {
95
+ const params = { email : email } ;
96
+ const userRes = await Parse . Cloud . run ( 'getUserId' , params ) ;
97
+ const roleurl = `${ serverUrl } /functions/AddUserToRole` ;
98
+ const headers = {
99
+ 'Content-Type' : 'application/json' ,
100
+ 'X-Parse-Application-Id' : appId ,
101
+ // sessionToken: localStorage.getItem('accesstoken'),
102
+ } ;
103
+ const body = {
104
+ appName : 'contracts' ,
105
+ roleName : 'contracts_Guest' ,
106
+ userId : userRes . id ,
107
+ } ;
108
+ await axios . post ( roleurl , body , { headers : headers } ) ;
109
+ contactQuery . set ( 'CreatedBy' , userPtr ) ;
110
+ contactQuery . set ( 'UserId' , {
111
+ __type : 'Pointer' ,
112
+ className : '_User' ,
113
+ objectId : userRes . id ,
114
+ } ) ;
115
+ const acl = new Parse . ACL ( ) ;
116
+ acl . setReadAccess ( userPtr . id , true ) ;
117
+ acl . setWriteAccess ( userPtr . id , true ) ;
118
+ acl . setReadAccess ( userRes . id , true ) ;
119
+ acl . setWriteAccess ( userRes . id , true ) ;
120
+
121
+ contactQuery . setACL ( acl ) ;
122
+ const contactRes = await contactQuery . save ( ) ;
123
+ if ( contactRes ) {
124
+ const parseRes = JSON . parse ( JSON . stringify ( contactRes ) ) ;
125
+ return response . json ( {
126
+ objectId : parseRes . objectId ,
127
+ Name : parseRes . Name ,
128
+ Email : parseRes . Email ,
129
+ Phone : parseRes . Phone ,
130
+ createdAt : parseRes . createdAt ,
131
+ updatedAt : parseRes . updatedAt ,
132
+ } ) ;
133
+ }
134
+ } else {
135
+ if ( err . code === 137 ) {
136
+ return response . status ( 401 ) . json ( { error : 'Contact already exists!' } ) ;
137
+ }
138
+ return response
139
+ . status ( 400 )
140
+ . json ( { error : 'Something went wrong, please try again later!' } ) ;
141
+ }
121
142
}
122
- } else {
143
+ } catch ( err ) {
144
+ console . log ( 'err ' , err ) ;
123
145
if ( err . code === 137 ) {
124
146
return response . status ( 401 ) . json ( { error : 'Contact already exists!' } ) ;
147
+ } else {
148
+ return response
149
+ . status ( 400 )
150
+ . json ( { error : 'Something went wrong, please try again later!' } ) ;
125
151
}
126
- return response
127
- . status ( 400 )
128
- . json ( { error : 'Something went wrong, please try again later!' } ) ;
129
152
}
130
153
}
131
154
} catch ( err ) {
132
- console . log ( 'err ' , err ) ;
133
- if ( err . code === 137 ) {
134
- return response . status ( 401 ) . json ( { error : 'Contact already exists!' } ) ;
135
- } else {
136
- return response
137
- . status ( 400 )
138
- . json ( { error : 'Something went wrong, please try again later!' } ) ;
139
- }
155
+ return response . status ( 400 ) . json ( { error : 'Something went wrong, please try again later!' } ) ;
140
156
}
141
157
} else {
142
158
return response . status ( 405 ) . json ( { error : 'Invalid API Token!' } ) ;
0 commit comments