tango-app-api-trax 3.7.2-multireff-8 → 3.7.2-multireff-10
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
|
@@ -2968,7 +2968,7 @@ export async function checklistv1( req, res ) {
|
|
|
2968
2968
|
}
|
|
2969
2969
|
}
|
|
2970
2970
|
|
|
2971
|
-
export async function
|
|
2971
|
+
export async function questionListBackup( req, res ) {
|
|
2972
2972
|
try {
|
|
2973
2973
|
let requestData = req.query;
|
|
2974
2974
|
if ( !requestData.processedcheckListId ) {
|
|
@@ -3146,6 +3146,223 @@ export async function questionList( req, res ) {
|
|
|
3146
3146
|
return res.sendError( e, 500 );
|
|
3147
3147
|
}
|
|
3148
3148
|
}
|
|
3149
|
+
export async function questionList( req, res ) {
|
|
3150
|
+
try {
|
|
3151
|
+
let requestData = req.query;
|
|
3152
|
+
if ( !requestData.processedcheckListId ) {
|
|
3153
|
+
res.sendError( 'processedcheckListId is Required', 400 );
|
|
3154
|
+
}
|
|
3155
|
+
|
|
3156
|
+
let findQuery = [];
|
|
3157
|
+
let findAndQuery = [];
|
|
3158
|
+
findAndQuery.push( { _id: new ObjectId( requestData.processedcheckListId ) } );
|
|
3159
|
+
findQuery.push( { $match: { $and: findAndQuery } } );
|
|
3160
|
+
|
|
3161
|
+
findQuery.push( {
|
|
3162
|
+
$project: {
|
|
3163
|
+
checkListName: { $ifNull: [ '$checkListName', '' ] },
|
|
3164
|
+
scheduleStartTime: { $ifNull: [ '$scheduleStartTime', '' ] },
|
|
3165
|
+
scheduleStartTime_iso: { $ifNull: [ '$scheduleStartTime_iso', '' ] },
|
|
3166
|
+
scheduleEndTime: { $ifNull: [ '$scheduleEndTime', '' ] },
|
|
3167
|
+
scheduleEndTime_iso: { $ifNull: [ '$scheduleEndTime_iso', '' ] },
|
|
3168
|
+
checklistStatus: { $ifNull: [ '$checklistStatus', '' ] },
|
|
3169
|
+
checkListId: { $ifNull: [ '$checkListId', '' ] },
|
|
3170
|
+
startTime: { $ifNull: [ '$startTime', '' ] },
|
|
3171
|
+
submitTime: { $ifNull: [ '$submitTime', '' ] },
|
|
3172
|
+
allowedOverTime: { $ifNull: [ '$allowedOverTime', '' ] },
|
|
3173
|
+
// allowedStoreLocation: { $ifNull: [ '$allowedStoreLocation', '' ] },
|
|
3174
|
+
allowedStoreLocation: {
|
|
3175
|
+
$cond: {
|
|
3176
|
+
if: { $eq: [ '$client_id', '11' ] },
|
|
3177
|
+
then: false,
|
|
3178
|
+
else: {
|
|
3179
|
+
'$cond': {
|
|
3180
|
+
'if': { '$eq': [ '$coverage', 'user' ] },
|
|
3181
|
+
'then': false,
|
|
3182
|
+
'else': { '$ifNull': [ '$allowedStoreLocation', false ] },
|
|
3183
|
+
},
|
|
3184
|
+
},
|
|
3185
|
+
},
|
|
3186
|
+
},
|
|
3187
|
+
reinitiateStatus: { $ifNull: [ '$reinitiateStatus', '' ] },
|
|
3188
|
+
questionAnswers: { $ifNull: [ '$questionAnswers', '' ] },
|
|
3189
|
+
getchecklist: { $ifNull: [ '$getchecklist', '' ] },
|
|
3190
|
+
userEmail: { $ifNull: [ '$userEmail', '' ] },
|
|
3191
|
+
storeName: { $ifNull: [ '$storeName', '' ] },
|
|
3192
|
+
redoStatus: { $ifNull: [ '$redoStatus', false ] },
|
|
3193
|
+
rawImageUpload: { $ifNull: [ '$rawImageUpload', false ] },
|
|
3194
|
+
rawVideoUpload: { $ifNull: [ '$rawVideoUpload', false ] },
|
|
3195
|
+
taskType: { $ifNull: [ '$planoType', '' ] },
|
|
3196
|
+
streamId: { $ifNull: [ '$streamId', '' ] },
|
|
3197
|
+
},
|
|
3198
|
+
} );
|
|
3199
|
+
|
|
3200
|
+
let getchecklist = await processedchecklist.aggregate( findQuery );
|
|
3201
|
+
if ( !getchecklist.length ) {
|
|
3202
|
+
return res.sendError( 'Check List Got Edited Please Fill Again', 422 );
|
|
3203
|
+
} else {
|
|
3204
|
+
logger.info( `v5 => Checklist Continue => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
|
|
3205
|
+
let bucket = JSON.parse( process.env.BUCKET );
|
|
3206
|
+
let cdnurl = JSON.parse( process.env.CDNURL );
|
|
3207
|
+
for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
|
|
3208
|
+
for ( let [ questionIndex, question ] of section.questions.entries() ) {
|
|
3209
|
+
let Multianswer = [];
|
|
3210
|
+
if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage !='' ) {
|
|
3211
|
+
// getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = await signedUrl( { file_path: decodeURIComponent( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage ), Bucket: bucket.sop } );
|
|
3212
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage = `${cdnurl.TraxAnswerCDN}${getchecklist[0].questionAnswers[secIndex].questions[questionIndex].questionReferenceImage}`;
|
|
3213
|
+
}
|
|
3214
|
+
|
|
3215
|
+
if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage && getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage.length>0 ) {
|
|
3216
|
+
let questionReff = getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage;
|
|
3217
|
+
for ( let qri = 0; qri < questionReff.length; qri++ ) {
|
|
3218
|
+
if ( getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage[qri].imageURL ) {
|
|
3219
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage[qri].imageURL = `${cdnurl.TraxAnswerCDN}${getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage[qri].imageURL}`;
|
|
3220
|
+
}
|
|
3221
|
+
}
|
|
3222
|
+
} else {
|
|
3223
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].multiQuestionReferenceImage = [];
|
|
3224
|
+
}
|
|
3225
|
+
|
|
3226
|
+
for ( let [ ansIndex, answer ] of question.answers.entries() ) {
|
|
3227
|
+
if ( question.answerType == 'multiplechoicemultiple' ) {
|
|
3228
|
+
let checkvalidation = null;
|
|
3229
|
+
if ( answer.validationAnswer && answer.validationAnswer !='' ) {
|
|
3230
|
+
if ( answer.validationType != 'Descriptive Answer' ) {
|
|
3231
|
+
checkvalidation = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
|
|
3232
|
+
} else {
|
|
3233
|
+
checkvalidation = answer.validationAnswer;
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
Multianswer.push( { 'answer': answer.answer, 'no': ansIndex, 'validationAnswer': checkvalidation } );
|
|
3237
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].index = ansIndex;
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
if ( answer.multiReferenceImage && answer.multiReferenceImage.length >0 ) {
|
|
3241
|
+
let ReffImg = answer.multiReferenceImage;
|
|
3242
|
+
for ( let ri = 0; ri < ReffImg.length; ri++ ) {
|
|
3243
|
+
answer.multiReferenceImage[ri].imageURL = `${cdnurl.TraxAnswerCDN}${answer.multiReferenceImage[ri].imageURL}`;
|
|
3244
|
+
}
|
|
3245
|
+
}
|
|
3246
|
+
|
|
3247
|
+
if ( answer.referenceImage && answer.referenceImage != '' ) {
|
|
3248
|
+
// getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( answer.referenceImage ), Bucket: bucket.sop } );
|
|
3249
|
+
answer.referenceImage= `${cdnurl.TraxAnswerCDN}${answer.referenceImage}`;
|
|
3250
|
+
}
|
|
3251
|
+
if ( ( answer.validationType == 'Capture Image' || answer.validationType == 'Capture Video' ) && answer.validationAnswer && answer.validationAnswer != '' ) {
|
|
3252
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].answers[ansIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( answer.validationAnswer ), Bucket: bucket.sop } );
|
|
3253
|
+
}
|
|
3254
|
+
}
|
|
3255
|
+
if ( question?.userAnswer ) {
|
|
3256
|
+
for ( let [ userAnsIndex, userAns ] of question.userAnswer.entries() ) {
|
|
3257
|
+
if ( ( userAns.validationType == 'Capture Image' || userAns.validationType == 'Capture Video' ) && userAns.validationAnswer && userAns.validationAnswer != '' ) {
|
|
3258
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].validationAnswer = await signedUrl( { file_path: decodeURIComponent( userAns.validationAnswer ), Bucket: bucket.sop } );
|
|
3259
|
+
}
|
|
3260
|
+
if ( [ 'image', 'descriptiveImage', 'video' ].includes( question.answerType ) && userAns.answer != '' ) {
|
|
3261
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].answer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
|
|
3262
|
+
}
|
|
3263
|
+
if ( userAns.referenceImage != '' ) {
|
|
3264
|
+
// getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = await signedUrl( { file_path: decodeURIComponent( userAns.referenceImage ), Bucket: bucket.sop } );
|
|
3265
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].referenceImage = `${cdnurl.TraxAnswerCDN}${userAns.referenceImage}`;
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
if ( Array.isArray( userAns.multiReferenceImage ) && userAns.multiReferenceImage.length ) {
|
|
3269
|
+
userAns.multiReferenceImage = userAns.multiReferenceImage.map( ( imgObj ) => {
|
|
3270
|
+
// Extract filename or path from the existing URL
|
|
3271
|
+
const path = imgObj.imageURL.split( '/checklist/' )[1]; // adjust if path structure differs
|
|
3272
|
+
return {
|
|
3273
|
+
...imgObj,
|
|
3274
|
+
imageURL: `${cdnurl.TraxAnswerCDN}/checklist/${path}`,
|
|
3275
|
+
};
|
|
3276
|
+
} );
|
|
3277
|
+
|
|
3278
|
+
getchecklist[0].questionAnswers[secIndex].questions[questionIndex].userAnswer[userAnsIndex].multiReferenceImage = userAns.multiReferenceImage;
|
|
3279
|
+
}
|
|
3280
|
+
|
|
3281
|
+
if ( question.answerType == 'multiplechoicemultiple' ) {
|
|
3282
|
+
let ansIndex = Multianswer.findIndex( ( item ) => item.answer == userAns.answer );
|
|
3283
|
+
if ( ansIndex ) {
|
|
3284
|
+
Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
|
|
3285
|
+
}
|
|
3286
|
+
}
|
|
3287
|
+
if ( question.answerType == 'multipleImage' ) {
|
|
3288
|
+
if ( userAns && userAns.answer && userAns.answer !='' ) {
|
|
3289
|
+
// let manswer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
|
|
3290
|
+
let manswer = `${cdnurl.TraxAnswerCDN}${userAns.answer}`;
|
|
3291
|
+
Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
|
|
3292
|
+
} else {
|
|
3293
|
+
|
|
3294
|
+
}
|
|
3295
|
+
}
|
|
3296
|
+
}
|
|
3297
|
+
}
|
|
3298
|
+
if ( question.answerType == 'multiplechoicemultiple' ) {
|
|
3299
|
+
Multianswer.forEach( ( item ) => {
|
|
3300
|
+
if ( item.validationAnswer == null ) {
|
|
3301
|
+
item.answer = null;
|
|
3302
|
+
}
|
|
3303
|
+
} );
|
|
3304
|
+
if ( Multianswer.length ) {
|
|
3305
|
+
question.Multianswer = Multianswer;
|
|
3306
|
+
} else {
|
|
3307
|
+
question.Multianswer = Multianswer;
|
|
3308
|
+
}
|
|
3309
|
+
}
|
|
3310
|
+
if ( question.answerType == 'multipleImage' ) {
|
|
3311
|
+
if ( Multianswer.length ) {
|
|
3312
|
+
question.Multianswer = Multianswer;
|
|
3313
|
+
} else {
|
|
3314
|
+
Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null } );
|
|
3315
|
+
question.Multianswer = Multianswer;
|
|
3316
|
+
}
|
|
3317
|
+
}
|
|
3318
|
+
}
|
|
3319
|
+
}
|
|
3320
|
+
|
|
3321
|
+
let questions = [];
|
|
3322
|
+
function processQuestion( question, section, questions, nested=false ) {
|
|
3323
|
+
let findExists = questions.find( ( item ) => item?.qno && item.qno == question.qno );
|
|
3324
|
+
if ( findExists && nested ) {
|
|
3325
|
+
let findIndex = questions.findIndex( ( item ) => item?.qno && item.qno == question.qno );
|
|
3326
|
+
questions.splice( findIndex, 1 );
|
|
3327
|
+
questions.push( question );
|
|
3328
|
+
for ( let answer of question.answers ) {
|
|
3329
|
+
if ( answer.showLinked && answer?.linkedQuestion != '' ) {
|
|
3330
|
+
let linkedQuestion = section.questions.find( ( item ) => item.qno == answer.linkedQuestion );
|
|
3331
|
+
if ( linkedQuestion ) {
|
|
3332
|
+
processQuestion( linkedQuestion, section, questions, true );
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
}
|
|
3337
|
+
if ( !findExists ) {
|
|
3338
|
+
questions.push( question );
|
|
3339
|
+
for ( let answer of question.answers ) {
|
|
3340
|
+
if ( answer.showLinked && answer?.linkedQuestion != '' ) {
|
|
3341
|
+
let linkedQuestion = section.questions.find( ( item ) => item.qno == answer.linkedQuestion );
|
|
3342
|
+
if ( linkedQuestion ) {
|
|
3343
|
+
processQuestion( linkedQuestion, section, questions, true );
|
|
3344
|
+
}
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
}
|
|
3348
|
+
}
|
|
3349
|
+
for ( let [ index, data ] of getchecklist.entries() ) {
|
|
3350
|
+
for ( let [ secIndex, section ] of data.questionAnswers.entries() ) {
|
|
3351
|
+
questions = [];
|
|
3352
|
+
for ( let question of section.questions ) {
|
|
3353
|
+
processQuestion( question, section, questions );
|
|
3354
|
+
}
|
|
3355
|
+
getchecklist[index].questionAnswers[secIndex].questions = questions;
|
|
3356
|
+
}
|
|
3357
|
+
}
|
|
3358
|
+
|
|
3359
|
+
return res.sendSuccess( getchecklist );
|
|
3360
|
+
}
|
|
3361
|
+
} catch ( e ) {
|
|
3362
|
+
logger.error( { function: 'questionList', error: e, body: req.body } );
|
|
3363
|
+
return res.sendError( e, 500 );
|
|
3364
|
+
}
|
|
3365
|
+
}
|
|
3149
3366
|
|
|
3150
3367
|
// export async function taskQuestionList( req, res ) {
|
|
3151
3368
|
// try {
|
|
@@ -3989,7 +4206,7 @@ export async function questionListV1( req, res ) {
|
|
|
3989
4206
|
return res.sendError( 'Check List Got Edited Please Fill Again', 422 );
|
|
3990
4207
|
} else {
|
|
3991
4208
|
logger.info( `v5 => Checklist Continue => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
|
|
3992
|
-
|
|
4209
|
+
let bucket = JSON.parse( process.env.BUCKET );
|
|
3993
4210
|
let cdnurl = JSON.parse( process.env.CDNURL );
|
|
3994
4211
|
for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
|
|
3995
4212
|
for ( let [ questionIndex, question ] of section.questions.entries() ) {
|