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