tango-app-api-trax 3.7.2-multireff-2 → 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-2",
3
+ "version": "3.7.2-multireff-3",
4
4
  "description": "Trax",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -3917,3 +3917,203 @@ export async function updatePlanoStatus( req, res ) {
3917
3917
  }
3918
3918
  }
3919
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 )