tango-app-api-trax 3.4.0-alpha-5 → 3.4.0-beta-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { logger, signedUrl, fileUpload, getOtp, sendEmailWithSES, getUuid } from 'tango-app-api-middleware';
1
+ import { logger, signedUrl, fileUpload, getOtp, sendEmailWithSES, getUuid, insertOpenSearchData } from 'tango-app-api-middleware';
2
2
  import * as processedchecklist from '../services/processedchecklist.services.js';
3
3
  import * as processedtask from '../services/processedTaskList.service.js';
4
4
  import * as PCLconfig from '../services/processedchecklistconfig.services.js';
@@ -27,6 +27,7 @@ dayjs.extend( timeZone );
27
27
  import isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';
28
28
  dayjs.extend( isSameOrBefore );
29
29
 
30
+
30
31
  export async function storeList( req, res ) {
31
32
  try {
32
33
  if ( !req.query?.date ) {
@@ -221,7 +222,7 @@ export async function startChecklistv1( req, res ) {
221
222
  coverage: getBeforeChecklist[0].coverage || '',
222
223
  };
223
224
  await checklistLogs.create( logInsertData );
224
- let getchecklist = getupdatedchecklist;
225
+ let getchecklist = JSON.parse( JSON.stringify( getupdatedchecklist ) );
225
226
  let questions = [];
226
227
  // function processQuestion( question, section, questions, nested=false ) {
227
228
  // let findExists = questions.find( ( item ) => item?.qno && item.qno == question.qno );
@@ -245,13 +246,15 @@ export async function startChecklistv1( req, res ) {
245
246
  for ( let [ index, data ] of getchecklist.entries() ) {
246
247
  for ( let [ secIndex, section ] of data.questionAnswers.entries() ) {
247
248
  questions = [];
249
+ let count = 0;
248
250
  for ( let [ questionIndex, question ] of section.questions.entries() ) {
249
251
  let linkedQuestions;
250
252
  let uniqueShow = false;
251
253
  if ( !question.linkType ) {
252
254
  if ( !question?.uniqueNo ) {
255
+ count = count + 1;
253
256
  uniqueShow = true;
254
- question.uniqueNo = parseInt( getOtp() ) + Date.now() + questionIndex;
257
+ question.uniqueNo = parseInt( getOtp() ) + Date.now() + questionIndex + count;
255
258
  }
256
259
  questions.push( question );
257
260
  linkedQuestions = [];
@@ -268,11 +271,12 @@ export async function startChecklistv1( req, res ) {
268
271
  let nesedQuestion = [];
269
272
  answer.oldNestedQuestion = !uniqueShow ? JSON.parse( JSON.stringify( answer.oldNestedQuestion ) ) : JSON.parse( JSON.stringify( answer.nestedQuestion ) );
270
273
  answer.nestedQuestion.forEach( ( qn, qidx ) => {
274
+ count = count + 1;
271
275
  let getQn = questionList.get( qn );
272
276
  if ( getQn ) {
273
277
  let randomNo;
274
278
  if ( !getQn?.uniqueNo || uniqueShow ) {
275
- randomNo = parseInt( getOtp() ) + Date.now() + qidx;
279
+ randomNo = parseInt( getOtp() ) + Date.now() + qidx + count;
276
280
  } else {
277
281
  randomNo = getQn?.uniqueNo;
278
282
  }
@@ -516,6 +520,27 @@ export async function startChecklist( req, res ) {
516
520
  getchecklist[index].questionAnswers[secIndex].questions = questions;
517
521
  }
518
522
  }
523
+ let openSearch = JSON.parse( process.env.OPENSEARCH );
524
+ console.log( 'openSearch', openSearch );
525
+ let inserttraxlogs = {
526
+ client_id: req.user.clientId,
527
+ createAt: new Date(),
528
+ sourceCheckList_id: getBeforeChecklist[0]?.sourceCheckList_id || '',
529
+ checkListName: getBeforeChecklist[0]?.checkListName || '',
530
+ fromCheckListName: '',
531
+ type: 'checkList',
532
+ action: 'start',
533
+ storeName: getBeforeChecklist[0]?.storeName || '',
534
+ store_id: getBeforeChecklist[0]?.store_id || '',
535
+ createdByEmail: getBeforeChecklist[0]?.userEmail || '',
536
+ createdBy: getBeforeChecklist[0]?.userName || '',
537
+ coverage: getBeforeChecklist[0]?.coverage || '',
538
+ logDetails: {},
539
+ };
540
+ // let insertOS = await insertOpenSearchData( 'test-traxlogs', inserttraxlogs );
541
+ console.log( 'inserttraxlogs', inserttraxlogs );
542
+ let insertOS = await insertOpenSearchData( openSearch.traxActivityLog, inserttraxlogs );
543
+ console.log( 'insertOS', insertOS );
519
544
  return res.sendSuccess( getchecklist );
520
545
  } else {
521
546
  return res.sendError( 'something went wrong please try again', 500 );
@@ -687,6 +712,27 @@ export async function startTask( req, res ) {
687
712
  };
688
713
  await checklistLogs.create( logData );
689
714
 
715
+ let openSearch = JSON.parse( process.env.OPENSEARCH );
716
+ console.log( 'openSearch', openSearch );
717
+ let inserttraxlogs = {
718
+ client_id: req.user.clientId,
719
+ createAt: new Date(),
720
+ sourceCheckList_id: task.sourceCheckList_id || '',
721
+ checkListName: task.checkListName || '',
722
+ fromCheckListName: '',
723
+ type: 'task',
724
+ action: 'start',
725
+ storeName: task.storeName || '',
726
+ store_id: task.store_id || '',
727
+ createdByEmail: task.userEmail || '',
728
+ createdBy: task.userName || '',
729
+ coverage: task.coverage || '',
730
+ logDetails: {},
731
+ };
732
+ // let insertOS = await insertOpenSearchData( 'test-traxlogs', inserttraxlogs );
733
+ console.log( 'inserttraxlogs', inserttraxlogs );
734
+ let insertOS = await insertOpenSearchData( openSearch.traxActivityLog, inserttraxlogs );
735
+ console.log( 'insertOS', insertOS );
690
736
  return res.sendSuccess( getUpdatedTask );
691
737
  } catch ( error ) {
692
738
  logger.error( { function: 'startTask', error, body: req.body } );
@@ -2466,7 +2512,7 @@ export async function submitChecklist( req, res ) {
2466
2512
  userName: getchecklist[0].userName || '',
2467
2513
  coverage: getchecklist[0].coverage || '',
2468
2514
  };
2469
- console.log( 'logInsertData=>', logInsertData );
2515
+ // console.log( 'logInsertData=>', logInsertData );s
2470
2516
  await checklistLogs.create( logInsertData );
2471
2517
  // let time = dayjs().format( 'HH:mm:ss' );
2472
2518
  // let [ hours, minutes ] = time.split( ':' ).map( Number );
@@ -2501,8 +2547,32 @@ export async function submitChecklist( req, res ) {
2501
2547
  // await detectionService.create( detectionData );
2502
2548
  if ( requestData.submittype == 'submit' ) {
2503
2549
  updateOpenSearch( req.user, requestData );
2550
+
2551
+ let openSearch = JSON.parse( process.env.OPENSEARCH );
2552
+ console.log( 'openSearch', openSearch );
2553
+ let inserttraxlogs = {
2554
+ client_id: req.user.clientId,
2555
+ createAt: new Date(),
2556
+ sourceCheckList_id: getchecklist[0].sourceCheckList_id,
2557
+ checkListName: getchecklist[0].checkListName,
2558
+ type: 'checkList',
2559
+ action: requestData?.submittype === 'draft' ? 'save' : 'submit',
2560
+ storeName: getchecklist[0].storeName,
2561
+ store_id: getchecklist[0].store_id,
2562
+ userName: getchecklist[0].userName,
2563
+ userEmail: getchecklist[0].userEmail,
2564
+ createdByEmail: getchecklist[0].userEmail,
2565
+ createdBy: getchecklist[0].userName,
2566
+ coverage: getchecklist[0].coverage,
2567
+ checkListType: getchecklist[0].checkListType,
2568
+ logDetails: {},
2569
+ };
2570
+ console.log( 'inserttraxlogs', inserttraxlogs );
2571
+ let insertOS = await insertOpenSearchData( openSearch.traxActivityLog, inserttraxlogs );
2572
+ console.log( 'insertOS', insertOS );
2504
2573
  }
2505
2574
 
2575
+
2506
2576
  return res.sendSuccess( 'Checklist Updated Successfully' );
2507
2577
  } else {
2508
2578
  return res.sendError( 'something went wrong please try again', 500 );
@@ -2667,6 +2737,29 @@ export async function submitTask( req, res ) {
2667
2737
 
2668
2738
  if ( submittype == 'submit' ) {
2669
2739
  updateOpenSearchTask( user, requestData );
2740
+
2741
+ let openSearch = JSON.parse( process.env.OPENSEARCH );
2742
+ console.log( 'openSearch', openSearch );
2743
+ let inserttraxlogs = {
2744
+ client_id: req.user.clientId,
2745
+ createAt: new Date(),
2746
+ sourceCheckList_id: checklist.sourceCheckList_id,
2747
+ checkListName: checklist.checkListName,
2748
+ type: 'task',
2749
+ action: requestData?.submittype === 'draft' ? 'save' : 'submit',
2750
+ storeName: checklist.storeName,
2751
+ store_id: checklist.store_id,
2752
+ userName: checklist.userName,
2753
+ userEmail: checklist.userEmail,
2754
+ createdByEmail: checklist.userEmail,
2755
+ createdBy: checklist.userName,
2756
+ coverage: checklist.coverage,
2757
+ checkListType: checklist.checkListType,
2758
+ logDetails: {},
2759
+ };
2760
+ console.log( 'inserttraxlogs', inserttraxlogs );
2761
+ let insertOS = await insertOpenSearchData( openSearch.traxActivityLog, inserttraxlogs );
2762
+ console.log( 'insertOS', insertOS );
2670
2763
  }
2671
2764
 
2672
2765
  return res.sendSuccess( 'Task Updated Successfully' );
@@ -3227,90 +3320,6 @@ export async function questionListv1( req, res ) {
3227
3320
  } else {
3228
3321
  logger.info( `v5 => Checklist Continue => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
3229
3322
  // let bucket = JSON.parse( process.env.BUCKET );
3230
- for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
3231
- for ( let [ questionIndex, question ] of section.questions.entries() ) {
3232
- let Multianswer = [];
3233
- if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage !='' ) {
3234
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = await signedUrl( { file_path: decodeURIComponent( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage ), Bucket: bucket.sop } );
3235
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage;
3236
- }
3237
- for ( let [ ansIndex, answer ] of question.answers.entries() ) {
3238
- if ( question.answerType == 'multiplechoicemultiple' ) {
3239
- let checkvalidation = null;
3240
- if ( answer.validationAnswer && answer.validationAnswer !='' ) {
3241
- if ( answer.validationType != 'Descriptive Answer' ) {
3242
- // checkvalidation = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
3243
- checkvalidation = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.validationAnswer;
3244
- } else {
3245
- checkvalidation = answer.validationAnswer;
3246
- }
3247
- }
3248
- Multianswer.push( { 'answer': answer.answer, 'no': ansIndex, 'validationAnswer': checkvalidation } );
3249
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].index = ansIndex;
3250
- }
3251
- if ( answer.referenceImage != '' ) {
3252
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( answer.referenceImage ), Bucket: bucket.sop } );
3253
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.referenceImage;
3254
- }
3255
- if ( ( answer.validationType == 'Capture Image' || answer.validationType == 'Capture Video' ) && answer.validationAnswer && answer.validationAnswer != '' ) {
3256
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
3257
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.validationAnswer;
3258
- }
3259
- }
3260
- if ( question?.userAnswer ) {
3261
- for ( let [ userAnsIndex, userAns ] of question.userAnswer.entries() ) {
3262
- if ( ( userAns.validationType == 'Capture Image' || userAns.validationType == 'Capture Video' ) && userAns.validationAnswer && userAns.validationAnswer != '' ) {
3263
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( userAns.validationAnswer ), Bucket: bucket.sop } );
3264
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.validationAnswer;
3265
- }
3266
- if ( [ 'image', 'descriptiveImage', 'video' ].includes( question.answerType ) && userAns.answer != '' ) {
3267
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
3268
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.answer;
3269
- }
3270
- if ( userAns.referenceImage != '' ) {
3271
- // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( userAns.referenceImage ), Bucket: bucket.sop } );
3272
- getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.referenceImage;
3273
- }
3274
- if ( question.answerType == 'multiplechoicemultiple' ) {
3275
- let ansIndex = Multianswer.findIndex( ( item ) => item.answer == userAns.answer );
3276
- if ( ansIndex ) {
3277
- Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
3278
- }
3279
- }
3280
- if ( question.answerType == 'multipleImage' ) {
3281
- if ( userAns && userAns.answer && userAns.answer !='' ) {
3282
- // let manswer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
3283
- let manswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.answer;
3284
- Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
3285
- } else {
3286
-
3287
- }
3288
- }
3289
- }
3290
- }
3291
- if ( question.answerType == 'multiplechoicemultiple' ) {
3292
- Multianswer.forEach( ( item ) => {
3293
- if ( item.validationAnswer == null ) {
3294
- item.answer = null;
3295
- }
3296
- } );
3297
- if ( Multianswer.length ) {
3298
- question.Multianswer = Multianswer;
3299
- } else {
3300
- question.Multianswer = Multianswer;
3301
- }
3302
- }
3303
- if ( question.answerType == 'multipleImage' ) {
3304
- if ( Multianswer.length ) {
3305
- question.Multianswer = Multianswer;
3306
- } else {
3307
- Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null } );
3308
- question.Multianswer = Multianswer;
3309
- }
3310
- }
3311
- }
3312
- }
3313
-
3314
3323
  let questions = [];
3315
3324
  // function processQuestion( question, section, questions, nested=false ) {
3316
3325
  // let findExists = questions.find( ( item ) => item?.qno && item.qno == question.qno );
@@ -3343,13 +3352,15 @@ export async function questionListv1( req, res ) {
3343
3352
  for ( let [ index, data ] of getchecklist.entries() ) {
3344
3353
  for ( let [ secIndex, section ] of data.questionAnswers.entries() ) {
3345
3354
  questions = [];
3355
+ let count = 0;
3346
3356
  for ( let [ questionIndex, question ] of section.questions.entries() ) {
3347
3357
  let linkedQuestions;
3348
3358
  let uniqueShow = false;
3349
3359
  if ( !question.linkType ) {
3350
3360
  if ( !question?.uniqueNo ) {
3361
+ count = count + 1;
3351
3362
  uniqueShow = true;
3352
- question.uniqueNo = parseInt( getOtp() ) + Date.now() + questionIndex;
3363
+ question.uniqueNo = parseInt( getOtp() ) + Date.now() + questionIndex + count;
3353
3364
  }
3354
3365
  questions.push( question );
3355
3366
  linkedQuestions = [];
@@ -3366,11 +3377,12 @@ export async function questionListv1( req, res ) {
3366
3377
  let nesedQuestion = [];
3367
3378
  answer.oldNestedQuestion = !uniqueShow ? JSON.parse( JSON.stringify( answer.oldNestedQuestion ) ) : JSON.parse( JSON.stringify( answer.nestedQuestion ) );
3368
3379
  answer.nestedQuestion.forEach( ( qn, qidx ) => {
3380
+ count = count + 1;
3369
3381
  let getQn = questionList.get( qn );
3370
3382
  if ( getQn ) {
3371
3383
  let randomNo;
3372
3384
  if ( !getQn?.uniqueNo || uniqueShow ) {
3373
- randomNo = parseInt( getOtp() ) + Date.now() + qidx;
3385
+ randomNo = parseInt( getOtp() ) + Date.now() + qidx + count;
3374
3386
  } else {
3375
3387
  randomNo = getQn?.uniqueNo;
3376
3388
  }
@@ -3421,6 +3433,90 @@ export async function questionListv1( req, res ) {
3421
3433
  await processedchecklist.updateOne( { _id: requestData.processedcheckListId }, { questionAnswers: getchecklist[0].questionAnswers } );
3422
3434
  }
3423
3435
 
3436
+ for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
3437
+ for ( let [ questionIndex, question ] of section.questions.entries() ) {
3438
+ let Multianswer = [];
3439
+ if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage !='' ) {
3440
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = await signedUrl( { file_path: decodeURIComponent( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage ), Bucket: bucket.sop } );
3441
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage;
3442
+ }
3443
+ for ( let [ ansIndex, answer ] of question.answers.entries() ) {
3444
+ if ( question.answerType == 'multiplechoicemultiple' ) {
3445
+ let checkvalidation = null;
3446
+ if ( answer.validationAnswer && answer.validationAnswer !='' ) {
3447
+ if ( answer.validationType != 'Descriptive Answer' ) {
3448
+ // checkvalidation = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
3449
+ checkvalidation = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.validationAnswer;
3450
+ } else {
3451
+ checkvalidation = answer.validationAnswer;
3452
+ }
3453
+ }
3454
+ Multianswer.push( { 'answer': answer.answer, 'no': ansIndex, 'validationAnswer': checkvalidation } );
3455
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].index = ansIndex;
3456
+ }
3457
+ if ( answer.referenceImage != '' ) {
3458
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( answer.referenceImage ), Bucket: bucket.sop } );
3459
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.referenceImage;
3460
+ }
3461
+ if ( ( answer.validationType == 'Capture Image' || answer.validationType == 'Capture Video' ) && answer.validationAnswer && answer.validationAnswer != '' ) {
3462
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
3463
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + answer.validationAnswer;
3464
+ }
3465
+ }
3466
+ if ( question?.userAnswer ) {
3467
+ for ( let [ userAnsIndex, userAns ] of question.userAnswer.entries() ) {
3468
+ if ( ( userAns.validationType == 'Capture Image' || userAns.validationType == 'Capture Video' ) && userAns.validationAnswer && userAns.validationAnswer != '' ) {
3469
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( userAns.validationAnswer ), Bucket: bucket.sop } );
3470
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.validationAnswer;
3471
+ }
3472
+ if ( [ 'image', 'descriptiveImage', 'video' ].includes( question.answerType ) && userAns.answer != '' ) {
3473
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
3474
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.answer;
3475
+ }
3476
+ if ( userAns.referenceImage != '' ) {
3477
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( userAns.referenceImage ), Bucket: bucket.sop } );
3478
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.referenceImage;
3479
+ }
3480
+ if ( question.answerType == 'multiplechoicemultiple' ) {
3481
+ let ansIndex = Multianswer.findIndex( ( item ) => item.answer == userAns.answer );
3482
+ if ( ansIndex ) {
3483
+ Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
3484
+ }
3485
+ }
3486
+ if ( question.answerType == 'multipleImage' ) {
3487
+ if ( userAns && userAns.answer && userAns.answer !='' ) {
3488
+ // let manswer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
3489
+ let manswer = JSON.parse( process.env.CDNURL )?.TraxAnswerCDN + userAns.answer;
3490
+ Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
3491
+ } else {
3492
+
3493
+ }
3494
+ }
3495
+ }
3496
+ }
3497
+ if ( question.answerType == 'multiplechoicemultiple' ) {
3498
+ Multianswer.forEach( ( item ) => {
3499
+ if ( item.validationAnswer == null ) {
3500
+ item.answer = null;
3501
+ }
3502
+ } );
3503
+ if ( Multianswer.length ) {
3504
+ question.Multianswer = Multianswer;
3505
+ } else {
3506
+ question.Multianswer = Multianswer;
3507
+ }
3508
+ }
3509
+ if ( question.answerType == 'multipleImage' ) {
3510
+ if ( Multianswer.length ) {
3511
+ question.Multianswer = Multianswer;
3512
+ } else {
3513
+ Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null } );
3514
+ question.Multianswer = Multianswer;
3515
+ }
3516
+ }
3517
+ }
3518
+ }
3519
+
3424
3520
  return res.sendSuccess( getchecklist );
3425
3521
  }
3426
3522
  } catch ( e ) {