8
8
sanitizeFileName ,
9
9
cloudServerUrl ,
10
10
} from '../../../../Utils.js' ;
11
+ import uploadFileToS3 from '../../../parsefunction/uploadFiletoS3.js' ;
11
12
12
13
// `sendDoctoWebhook` is used to send res data of document on webhook
13
14
async function sendDoctoWebhook ( doc , WebhookUrl , userId ) {
@@ -88,6 +89,7 @@ export default async function createDocumentwithCoordinate(request, response) {
88
89
} ;
89
90
const extUsers = new Parse . Query ( 'contracts_Users' ) ;
90
91
extUsers . equalTo ( 'UserId' , userPtr ) ;
92
+ extUsers . include ( 'TenantId' ) ;
91
93
const extUser = await extUsers . first ( { useMasterKey : true } ) ;
92
94
93
95
const subscription = new Parse . Query ( 'contracts_Subscriptions' ) ;
@@ -115,6 +117,7 @@ export default async function createDocumentwithCoordinate(request, response) {
115
117
. status ( 400 )
116
118
. json ( { error : 'Please add at least one signature widget for all signers' } ) ;
117
119
}
120
+ const parseExtUser = JSON . parse ( JSON . stringify ( extUser ) ) ;
118
121
let fileUrl ;
119
122
if ( request . files ?. [ 0 ] ) {
120
123
const base64 = fileData ?. toString ( 'base64' ) ;
@@ -127,23 +130,32 @@ export default async function createDocumentwithCoordinate(request, response) {
127
130
saveFileUsage ( buffer . length , fileUrl , parseUser . userId . objectId ) ;
128
131
} else {
129
132
const filename = sanitizeFileName ( `${ name } .pdf` ) ;
130
- const file = new Parse . File ( filename , { base64 : base64File } , 'application/pdf' ) ;
131
- await file . save ( { useMasterKey : true } ) ;
132
- fileUrl = file . url ( ) ;
133
+ if ( parseExtUser ?. TenantId ?. ActiveFileAdapter ) {
134
+ const adapter = {
135
+ fileAdapter : parseExtUser ?. TenantId ?. ActiveFileAdapter ,
136
+ bucketName : parseExtUser ?. TenantId ?. FileAdapter ?. bucketName ,
137
+ region : parseExtUser ?. TenantId ?. FileAdapter ?. region ,
138
+ endpoint : parseExtUser ?. TenantId ?. FileAdapter ?. endpoint ,
139
+ accessKeyId : parseExtUser ?. TenantId ?. FileAdapter ?. accessKeyId ,
140
+ secretAccessKey : parseExtUser ?. TenantId ?. FileAdapter ?. secretAccessKey ,
141
+ baseUrl : parseExtUser ?. TenantId ?. FileAdapter ?. baseUrl ,
142
+ } ;
143
+ const filedata = Buffer . from ( base64File , 'base64' ) ;
144
+ // `uploadFileToS3` is used to save document in user's file storage
145
+ fileUrl = await uploadFileToS3 ( filedata , filename , 'application/pdf' , adapter ) ;
146
+ } else {
147
+ const file = new Parse . File ( filename , { base64 : base64File } , 'application/pdf' ) ;
148
+ await file . save ( { useMasterKey : true } ) ;
149
+ fileUrl = file . url ( ) ;
150
+ }
133
151
const buffer = Buffer . from ( base64File , 'base64' ) ;
134
152
saveFileUsage ( buffer . length , fileUrl , parseUser . userId . objectId ) ;
135
153
}
136
- const contractsUser = new Parse . Query ( 'contracts_Users' ) ;
137
- contractsUser . equalTo ( 'UserId' , userPtr ) ;
138
- const extUser = await contractsUser . first ( { useMasterKey : true } ) ;
139
- const parseExtUser = JSON . parse ( JSON . stringify ( extUser ) ) ;
140
-
141
154
const extUserPtr = {
142
155
__type : 'Pointer' ,
143
156
className : 'contracts_Users' ,
144
157
objectId : extUser . id ,
145
158
} ;
146
-
147
159
const object = new Parse . Object ( 'contracts_Document' ) ;
148
160
object . set ( 'Name' , name ) ;
149
161
@@ -167,6 +179,11 @@ export default async function createDocumentwithCoordinate(request, response) {
167
179
object . set ( 'IsEnableOTP' , IsEnableOTP ) ;
168
180
object . set ( 'IsTourEnabled' , isTourEnabled ) ;
169
181
object . set ( 'IsSendMail' , send_email ) ;
182
+ if ( parseExtUser ?. TenantId ?. ActiveFileAdapter ) {
183
+ object . set ( 'IsFileAdapter' , true ) ;
184
+ } else {
185
+ object . set ( 'IsFileAdapter' , false ) ;
186
+ }
170
187
let contact = [ ] ;
171
188
if ( signers && signers . length > 0 ) {
172
189
let parseSigners ;
0 commit comments