@@ -2,10 +2,6 @@ import { Request, Response } from 'express';
2
2
import ICMService from '../services/icm.service' ;
3
3
4
4
export class CommunicationsController {
5
- saveData ( req : Request , res : Response ) : void {
6
- res . json ( { endpoint : 'saveForm' , payload : req . body } ) ;
7
- }
8
-
9
5
async generateForm ( req : Request , res : Response ) : Promise < void > {
10
6
const originalServer = req . headers [ 'x-original-server' ] as string ;
11
7
const { token, username, ...params } = req . body ;
@@ -78,7 +74,7 @@ export class CommunicationsController {
78
74
}
79
75
}
80
76
81
- async clearICMLockedFlag ( req : Request , res : Response ) : Promise < void > {
77
+ async unlockICMData ( req : Request , res : Response ) : Promise < void > {
82
78
const { token, username, ...params } = req . body ;
83
79
84
80
const authHeader = req . headers . authorization ;
@@ -152,6 +148,29 @@ export class CommunicationsController {
152
148
}
153
149
}
154
150
151
+ async generatePortalForm ( req : Request , res : Response ) : Promise < void > {
152
+ const originalServer = req . headers [ 'x-original-server' ] as string ;
153
+ const { token, username, ...params } = req . body ;
154
+
155
+ const authHeader = req . headers . authorization ;
156
+ const authToken =
157
+ token ||
158
+ ( authHeader ?. startsWith ( 'Bearer ' )
159
+ ? authHeader . substring ( 7 )
160
+ : authHeader ) ;
161
+
162
+ const result = await ICMService . generatePortalForm (
163
+ { ...params , username, originalServer } ,
164
+ authToken
165
+ ) ;
166
+
167
+ if ( result . success ) {
168
+ res . status ( 200 ) . json ( result . data ) ;
169
+ } else {
170
+ res . status ( result . status || 500 ) . json ( { error : result . error } ) ;
171
+ }
172
+ }
173
+
155
174
async loadPortalForm ( req : Request , res : Response ) : Promise < void > {
156
175
try {
157
176
const requestData = req . body ;
@@ -187,12 +206,143 @@ export class CommunicationsController {
187
206
}
188
207
}
189
208
190
- generatePDFFromJson ( req : Request , res : Response ) : void {
191
- res . json ( { endpoint : 'generatePDFFromJson' , payload : req . body } ) ;
209
+ async loadBoundForm ( req : Request , res : Response ) : Promise < void > {
210
+ try {
211
+ const originalServer = req . headers [ 'x-original-server' ] as string ;
212
+ const { token, username, isPortalIntegrated, ...params } = req . body ;
213
+
214
+ const authHeader = req . headers . authorization ;
215
+ const authToken =
216
+ token ||
217
+ ( authHeader ?. startsWith ( 'Bearer ' )
218
+ ? authHeader . substring ( 7 )
219
+ : authHeader ) ;
220
+
221
+ let result ;
222
+ if ( isPortalIntegrated ) {
223
+ result = await ICMService . loadPortalForm (
224
+ { ...params } ,
225
+ authToken ,
226
+ originalServer
227
+ ) ;
228
+ } else {
229
+ result = await ICMService . loadICMData (
230
+ { ...params , username, originalServer } ,
231
+ authToken
232
+ ) ;
233
+ }
234
+
235
+ if ( result . success ) {
236
+ const boundData = await ICMService . bindFormData ( result . data ) ;
237
+ res . status ( 200 ) . json ( boundData ) ;
238
+ } else {
239
+ res . status ( result . status || 500 ) . json ( { error : result . error } ) ;
240
+ }
241
+ } catch ( error ) {
242
+ let errorMessage = 'Internal server error' ;
243
+ if ( error instanceof Error && error . message ) {
244
+ errorMessage = error . message ;
245
+ }
246
+ res . status ( 500 ) . json ( {
247
+ error : errorMessage ,
248
+ } ) ;
249
+ }
250
+ }
251
+
252
+ async bindPreviewForm ( req : Request , res : Response ) : Promise < void > {
253
+ try {
254
+ const { formData } = req . body ;
255
+
256
+ if ( ! formData ) {
257
+ res . status ( 400 ) . json ( { error : 'Form data is required' } ) ;
258
+ return ;
259
+ }
260
+
261
+ const boundData = await ICMService . bindFormData ( formData ) ;
262
+ res . status ( 200 ) . json ( boundData ) ;
263
+ } catch ( error ) {
264
+ let errorMessage = 'Internal server error' ;
265
+ if ( error instanceof Error && error . message ) {
266
+ errorMessage = error . message ;
267
+ }
268
+ res . status ( 500 ) . json ( {
269
+ error : errorMessage ,
270
+ } ) ;
271
+ }
272
+ }
273
+
274
+ async submitForPortalAction ( req : Request , res : Response ) : Promise < void > {
275
+ try {
276
+ const { tokenId, savedForm, config } = req . body ;
277
+
278
+ // TODO: Implement authentication/authorization when available
279
+
280
+ const result = await ICMService . submitForPortalAction ( {
281
+ tokenId,
282
+ savedForm,
283
+ config,
284
+ } ) ;
285
+
286
+ if ( result . success ) {
287
+ res . status ( 200 ) . json ( result . data ) ;
288
+ } else {
289
+ res . status ( result . status || 500 ) . json ( { error : result . error } ) ;
290
+ }
291
+ } catch ( error ) {
292
+ let errorMessage = 'Internal server error' ;
293
+ if ( error instanceof Error && error . message ) {
294
+ errorMessage = error . message ;
295
+ }
296
+ res . status ( 500 ) . json ( {
297
+ error : errorMessage ,
298
+ } ) ;
299
+ }
192
300
}
193
301
194
- generateNewTemplate ( req : Request , res : Response ) : void {
195
- res . json ( { endpoint : 'generateNewTemplate' , payload : req . body } ) ;
302
+ async saveFormData ( req : Request , res : Response ) : Promise < void > {
303
+ try {
304
+ const {
305
+ action,
306
+ formState,
307
+ groupState,
308
+ formDefinition,
309
+ metadata,
310
+ items,
311
+ sessionParams,
312
+ } = req . body ;
313
+
314
+ const authHeader = req . headers . authorization ;
315
+ const token = authHeader ?. startsWith ( 'Bearer ' )
316
+ ? authHeader . substring ( 7 )
317
+ : authHeader ;
318
+
319
+ const result = await ICMService . saveFormData (
320
+ {
321
+ action,
322
+ formState,
323
+ groupState,
324
+ formDefinition,
325
+ metadata,
326
+ items,
327
+ sessionParams,
328
+ } ,
329
+ token
330
+ ) ;
331
+
332
+ if ( result . success ) {
333
+ res . status ( 200 ) . json ( result . data ) ;
334
+ } else {
335
+ res . status ( result . status || 500 ) . json ( { error : result . error } ) ;
336
+ }
337
+ } catch ( error ) {
338
+ let errorMessage = 'Internal server error' ;
339
+ if ( error instanceof Error && error . message ) {
340
+ errorMessage = error . message ;
341
+ }
342
+ res . status ( 500 ) . json ( {
343
+ error : errorMessage ,
344
+ } ) ;
345
+ }
196
346
}
197
347
}
198
348
0 commit comments