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
|
@@ -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 )
|