tango-app-api-trax 3.7.2-multireff-1 → 3.7.2-multireff-3

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-api-trax",
3
- "version": "3.7.2-multireff-1",
3
+ "version": "3.7.2-multireff-3",
4
4
  "description": "Trax",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1183,6 +1183,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
1183
1183
  structure.linkquestionenabled = requestSection[i].linkquestionenabled;
1184
1184
  structure.parentanswer = requestSection[i].parentanswer;
1185
1185
  structure.questionReferenceImage = qaAnswers[j].questionReferenceImage;
1186
+ structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage;
1186
1187
  structure.descriptivetype = qaAnswers[j].descriptivetype;
1187
1188
  // structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
1188
1189
  structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
@@ -1236,6 +1237,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
1236
1237
  structure.linkquestionenabled = requestSection[i].linkquestionenabled;
1237
1238
  structure.parentanswer = requestSection[i].parentanswer;
1238
1239
  structure.questionReferenceImage = qaAnswers[j].questionReferenceImage;
1240
+ structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage;
1239
1241
  structure.descriptivetype = qaAnswers[j].descriptivetype;
1240
1242
  // structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
1241
1243
  structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
@@ -1293,6 +1295,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
1293
1295
  structure.linkquestionenabled = requestSection[i].linkquestionenabled;
1294
1296
  structure.parentanswer = requestSection[i].parentanswer;
1295
1297
  structure.questionReferenceImage = qaAnswers[j].questionReferenceImage;
1298
+ structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage;
1296
1299
  structure.descriptivetype = qaAnswers[j].descriptivetype;
1297
1300
  // structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
1298
1301
  structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
@@ -1355,6 +1358,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
1355
1358
  structure.linkquestionenabled = requestSection[i].linkquestionenabled;
1356
1359
  structure.parentanswer = requestSection[i].parentanswer;
1357
1360
  structure.questionReferenceImage = qaAnswers[j].questionReferenceImage;
1361
+ structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage;
1358
1362
  structure.descriptivetype = qaAnswers[j].descriptivetype;
1359
1363
  // structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
1360
1364
  structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
@@ -1415,6 +1419,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
1415
1419
  structure.linkquestionenabled = requestSection[i].linkquestionenabled;
1416
1420
  structure.parentanswer = requestSection[i].parentanswer;
1417
1421
  structure.questionReferenceImage = qaAnswers[j].questionReferenceImage;
1422
+ structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage;
1418
1423
  structure.descriptivetype = qaAnswers[j].descriptivetype;
1419
1424
  // structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
1420
1425
  structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
@@ -3912,3 +3917,203 @@ export async function updatePlanoStatus( req, res ) {
3912
3917
  }
3913
3918
  }
3914
3919
 
3920
+ export async function questionListV1( req, res ) {
3921
+ try {
3922
+ let requestData = req.query;
3923
+ if ( !requestData.processedcheckListId ) {
3924
+ res.sendError( 'processedcheckListId is Required', 400 );
3925
+ }
3926
+
3927
+ let findQuery = [];
3928
+ let findAndQuery = [];
3929
+ findAndQuery.push( { _id: new ObjectId( requestData.processedcheckListId ) } );
3930
+ findQuery.push( { $match: { $and: findAndQuery } } );
3931
+
3932
+ findQuery.push( {
3933
+ $project: {
3934
+ checkListName: { $ifNull: [ '$checkListName', '' ] },
3935
+ scheduleStartTime: { $ifNull: [ '$scheduleStartTime', '' ] },
3936
+ scheduleStartTime_iso: { $ifNull: [ '$scheduleStartTime_iso', '' ] },
3937
+ scheduleEndTime: { $ifNull: [ '$scheduleEndTime', '' ] },
3938
+ scheduleEndTime_iso: { $ifNull: [ '$scheduleEndTime_iso', '' ] },
3939
+ checklistStatus: { $ifNull: [ '$checklistStatus', '' ] },
3940
+ checkListId: { $ifNull: [ '$checkListId', '' ] },
3941
+ startTime: { $ifNull: [ '$startTime', '' ] },
3942
+ submitTime: { $ifNull: [ '$submitTime', '' ] },
3943
+ allowedOverTime: { $ifNull: [ '$allowedOverTime', '' ] },
3944
+ // allowedStoreLocation: { $ifNull: [ '$allowedStoreLocation', '' ] },
3945
+ allowedStoreLocation: {
3946
+ $cond: {
3947
+ if: { $eq: [ '$client_id', '11' ] },
3948
+ then: false,
3949
+ else: {
3950
+ '$cond': {
3951
+ 'if': { '$eq': [ '$coverage', 'user' ] },
3952
+ 'then': false,
3953
+ 'else': { '$ifNull': [ '$allowedStoreLocation', false ] },
3954
+ },
3955
+ },
3956
+ },
3957
+ },
3958
+ reinitiateStatus: { $ifNull: [ '$reinitiateStatus', '' ] },
3959
+ questionAnswers: { $ifNull: [ '$questionAnswers', '' ] },
3960
+ getchecklist: { $ifNull: [ '$getchecklist', '' ] },
3961
+ userEmail: { $ifNull: [ '$userEmail', '' ] },
3962
+ storeName: { $ifNull: [ '$storeName', '' ] },
3963
+ redoStatus: { $ifNull: [ '$redoStatus', false ] },
3964
+ rawImageUpload: { $ifNull: [ '$rawImageUpload', false ] },
3965
+ rawVideoUpload: { $ifNull: [ '$rawVideoUpload', false ] },
3966
+ taskType: { $ifNull: [ '$planoType', '' ] },
3967
+ streamId: { $ifNull: [ '$streamId', '' ] },
3968
+ },
3969
+ } );
3970
+
3971
+ let getchecklist = await processedchecklist.aggregate( findQuery );
3972
+ if ( !getchecklist.length ) {
3973
+ return res.sendError( 'Check List Got Edited Please Fill Again', 422 );
3974
+ } else {
3975
+ logger.info( `v5 => Checklist Continue => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
3976
+ // let bucket = JSON.parse( process.env.BUCKET );
3977
+ let cdnurl = JSON.parse( process.env.CDNURL );
3978
+ for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
3979
+ for ( let [ questionIndex, question ] of section.questions.entries() ) {
3980
+ let Multianswer = [];
3981
+ // if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage !='' ) {
3982
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = await signedUrl( { file_path: decodeURIComponent( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage ), Bucket: bucket.sop } );
3983
+ // }
3984
+ if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage.length>0 ) {
3985
+ let questionReff = getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage;
3986
+ for ( let qri = 0; qri < questionReff.length; qri++ ) {
3987
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage[qri].imageURL = `${cdnurl.TraxAnswerCDN}${getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage[qri].imageURL}`;
3988
+ }
3989
+ } else {
3990
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage = [];
3991
+ }
3992
+ for ( let [ ansIndex, answer ] of question.answers.entries() ) {
3993
+ if ( question.answerType == 'multiplechoicemultiple' ) {
3994
+ let checkvalidation = null;
3995
+ if ( answer.validationAnswer && answer.validationAnswer !='' ) {
3996
+ if ( answer.validationType != 'Descriptive Answer' ) {
3997
+ // checkvalidation = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
3998
+ checkvalidation = `${cdnurl.TraxAnswerCDN}${answer.validationAnswer}`;
3999
+ } else {
4000
+ checkvalidation = answer.validationAnswer;
4001
+ }
4002
+ }
4003
+ Multianswer.push( { 'answer': answer.answer, 'no': ansIndex, 'validationAnswer': checkvalidation } );
4004
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].index = ansIndex;
4005
+ }
4006
+ // if ( answer.referenceImage != '' ) {
4007
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( answer.referenceImage ), Bucket: bucket.sop } );
4008
+ // }
4009
+ if ( answer.multiReferenceImage && answer.multiReferenceImage.length >0 ) {
4010
+ let ReffImg = answer.multiReferenceImage;
4011
+ for ( let ri = 0; ri < ReffImg.length; ri++ ) {
4012
+ answer.multiReferenceImage[ri].imageURL = `${cdnurl.TraxAnswerCDN}${answer.multiReferenceImage[ri].imageURL}`;
4013
+ }
4014
+ }
4015
+ if ( ( answer.validationType == 'Capture Image' || answer.validationType == 'Capture Video' ) && answer.validationAnswer && answer.validationAnswer != '' ) {
4016
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
4017
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = `${cdnurl.TraxAnswerCDN}${answer.validationAnswer}`;
4018
+ }
4019
+ }
4020
+ if ( question?.userAnswer ) {
4021
+ for ( let [ userAnsIndex, userAns ] of question.userAnswer.entries() ) {
4022
+ if ( ( userAns.validationType == 'Capture Image' || userAns.validationType == 'Capture Video' ) && userAns.validationAnswer && userAns.validationAnswer != '' ) {
4023
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( userAns.validationAnswer ), Bucket: bucket.sop } );
4024
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = `${cdnurl.TraxAnswerCDN}${userAns.validationAnswer}`;
4025
+ }
4026
+ if ( [ 'image', 'descriptiveImage', 'video' ].includes( question.answerType ) && userAns.answer != '' ) {
4027
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
4028
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = `${cdnurl.TraxAnswerCDN}${userAns.answer}`;
4029
+ }
4030
+ if ( userAns.referenceImage != '' ) {
4031
+ // getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( userAns.referenceImage ), Bucket: bucket.sop } );
4032
+ getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = `${cdnurl.TraxAnswerCDN}${userAns.referenceImage}`;
4033
+ }
4034
+ if ( question.answerType == 'multiplechoicemultiple' ) {
4035
+ let ansIndex = Multianswer.findIndex( ( item ) => item.answer == userAns.answer );
4036
+ if ( ansIndex ) {
4037
+ Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
4038
+ }
4039
+ }
4040
+ if ( question.answerType == 'multipleImage' ) {
4041
+ if ( userAns && userAns.answer && userAns.answer !='' ) {
4042
+ // let manswer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
4043
+ let manswer = `${cdnurl.TraxAnswerCDN}${userAns.answer}`;
4044
+ Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
4045
+ } else {
4046
+
4047
+ }
4048
+ }
4049
+ }
4050
+ }
4051
+ if ( question.answerType == 'multiplechoicemultiple' ) {
4052
+ Multianswer.forEach( ( item ) => {
4053
+ if ( item.validationAnswer == null ) {
4054
+ item.answer = null;
4055
+ }
4056
+ } );
4057
+ if ( Multianswer.length ) {
4058
+ question.Multianswer = Multianswer;
4059
+ } else {
4060
+ question.Multianswer = Multianswer;
4061
+ }
4062
+ }
4063
+ if ( question.answerType == 'multipleImage' ) {
4064
+ if ( Multianswer.length ) {
4065
+ question.Multianswer = Multianswer;
4066
+ } else {
4067
+ Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null } );
4068
+ question.Multianswer = Multianswer;
4069
+ }
4070
+ }
4071
+ }
4072
+ }
4073
+
4074
+ let questions = [];
4075
+ function processQuestion( question, section, questions, nested=false ) {
4076
+ let findExists = questions.find( ( item ) => item?.qno && item.qno == question.qno );
4077
+ if ( findExists && nested ) {
4078
+ let findIndex = questions.findIndex( ( item ) => item?.qno && item.qno == question.qno );
4079
+ questions.splice( findIndex, 1 );
4080
+ questions.push( question );
4081
+ for ( let answer of question.answers ) {
4082
+ if ( answer.showLinked && answer?.linkedQuestion != '' ) {
4083
+ let linkedQuestion = section.questions.find( ( item ) => item.qno == answer.linkedQuestion );
4084
+ if ( linkedQuestion ) {
4085
+ processQuestion( linkedQuestion, section, questions, true );
4086
+ }
4087
+ }
4088
+ }
4089
+ }
4090
+ if ( !findExists ) {
4091
+ questions.push( question );
4092
+ for ( let answer of question.answers ) {
4093
+ if ( answer.showLinked && answer?.linkedQuestion != '' ) {
4094
+ let linkedQuestion = section.questions.find( ( item ) => item.qno == answer.linkedQuestion );
4095
+ if ( linkedQuestion ) {
4096
+ processQuestion( linkedQuestion, section, questions, true );
4097
+ }
4098
+ }
4099
+ }
4100
+ }
4101
+ }
4102
+ for ( let [ index, data ] of getchecklist.entries() ) {
4103
+ for ( let [ secIndex, section ] of data.questionAnswers.entries() ) {
4104
+ questions = [];
4105
+ for ( let question of section.questions ) {
4106
+ processQuestion( question, section, questions );
4107
+ }
4108
+ getchecklist[index].questionAnswers[secIndex].questions = questions;
4109
+ }
4110
+ }
4111
+
4112
+ return res.sendSuccess( getchecklist );
4113
+ }
4114
+ } catch ( e ) {
4115
+ logger.error( { function: 'questionList', error: e, body: req.body } );
4116
+ return res.sendError( e, 500 );
4117
+ }
4118
+ }
4119
+
@@ -19,6 +19,7 @@ mobileRouter
19
19
  .get( '/checklist', isAllowedSessionHandler, validate( mobileChecklistValidation ), mobileController.checklist )
20
20
  .get( '/checklistv1', isAllowedSessionHandler, validate( mobileChecklistValidation ), mobileController.checklistv1 )
21
21
  .get( '/checklistQuestionList', isAllowedSessionHandler, mobileController.questionList )
22
+ .get( '/checklistQuestionListV1', isAllowedSessionHandler, mobileController.questionListV1 )
22
23
  .get( '/taskQuestionList', isAllowedSessionHandler, mobileController.taskQuestionList )
23
24
  .post( '/uploadAnswerImage', isAllowedSessionHandler, mobileController.uploadAnswerImage )
24
25
  .get( '/appVersion', mobileController.appVersion )