tango-app-api-trax 3.8.30 → 3.8.31
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.8.
|
|
3
|
+
"version": "3.8.31",
|
|
4
4
|
"description": "Trax",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"nodemon": "^3.1.4",
|
|
30
30
|
"path": "^0.12.7",
|
|
31
31
|
"puppeteer": "^24.39.1",
|
|
32
|
-
"tango-api-schema": "^2.5.
|
|
32
|
+
"tango-api-schema": "^2.5.96",
|
|
33
33
|
"tango-app-api-middleware": "^3.5.2",
|
|
34
34
|
"url": "^0.11.4",
|
|
35
35
|
"winston": "^3.13.1",
|
|
@@ -436,12 +436,14 @@ export async function redoChecklist( req, res ) {
|
|
|
436
436
|
}
|
|
437
437
|
|
|
438
438
|
|
|
439
|
-
let checklistDetails = await processedChecklist.findOne( { _id: req.body.payload._id }, { questionAnswers: 1, redoStatus: 1, checklistStatus: 1, client_id: 1, store_id: 1, storeName: 1, checkListType: 1, sourceCheckList_id: 1, checkListName: 1, submitTime: 1, userName: 1, answerType: 1, coverage: 1, userEmail: 1 } );
|
|
439
|
+
let checklistDetails = await processedChecklist.findOne( { _id: req.body.payload._id }, { questionAnswers: 1, redoStatus: 1, checklistStatus: 1, client_id: 1, store_id: 1, storeName: 1, checkListType: 1, sourceCheckList_id: 1, checkListName: 1, submitTime: 1, userName: 1, answerType: 1, coverage: 1, userEmail: 1, scheduleEndTime_iso: 1, redoEdit: 1 } );
|
|
440
|
+
|
|
440
441
|
if ( !checklistDetails ) {
|
|
441
442
|
return res.sendError( 'No data found', 204 );
|
|
442
443
|
}
|
|
443
444
|
let question = checklistDetails.questionAnswers;
|
|
444
445
|
|
|
446
|
+
let checklistConfigDetails = await checklistService.findOne( { _id: checklistDetails.sourceCheckList_id }, { redoValidity: 1 } );
|
|
445
447
|
|
|
446
448
|
let sectionIndex = question.findIndex( ( sec ) => sec.sectionName == req.body.payload.sectionName );
|
|
447
449
|
if ( sectionIndex == -1 ) {
|
|
@@ -450,7 +452,7 @@ export async function redoChecklist( req, res ) {
|
|
|
450
452
|
|
|
451
453
|
let findQuestion = question[sectionIndex].questions.findIndex( ( ele ) => ele.qno == req.body.payload.qno );
|
|
452
454
|
|
|
453
|
-
let data = { ...question[sectionIndex].questions[findQuestion], redo: true, redoComment: req.body.payload?.checklistDescription || '' };
|
|
455
|
+
let data = { ...question[sectionIndex].questions[findQuestion], redo: true, ...( !req.body.payload?.answerIndex && { redoComment: req.body.payload?.checklistDescription || '' } ) };
|
|
454
456
|
let answerIndex = req.body.payload?.answerIndex;
|
|
455
457
|
let isSingleAnswerRedo = answerIndex != null;
|
|
456
458
|
|
|
@@ -462,6 +464,11 @@ export async function redoChecklist( req, res ) {
|
|
|
462
464
|
let eleIndex = question[sectionIndex].questions.findIndex( ( qn ) => qn.qno == parseInt( ele ) );
|
|
463
465
|
let element = { ...question[sectionIndex].questions[eleIndex], redo: true, redoComment: '', linkquestionenabled: false };
|
|
464
466
|
question[sectionIndex].questions[eleIndex] = element;
|
|
467
|
+
question[sectionIndex].questions[eleIndex].answers.forEach( ( ans ) => {
|
|
468
|
+
ans.validationAnswer = '';
|
|
469
|
+
delete ans.redoComment;
|
|
470
|
+
delete ans.redo;
|
|
471
|
+
} );
|
|
465
472
|
question[sectionIndex].questions[eleIndex].userAnswer = [];
|
|
466
473
|
question[sectionIndex].questions[eleIndex].remarks = '';
|
|
467
474
|
} );
|
|
@@ -493,6 +500,7 @@ export async function redoChecklist( req, res ) {
|
|
|
493
500
|
if ( matchedAnsIdx !== -1 ) {
|
|
494
501
|
targetQuestion.answers[matchedAnsIdx].redo = true;
|
|
495
502
|
targetQuestion.answers[matchedAnsIdx].validationAnswer = '';
|
|
503
|
+
targetQuestion.answers[matchedAnsIdx].redoComment = req.body.payload?.checklistDescription || '';
|
|
496
504
|
targetQuestion.remarks = '';
|
|
497
505
|
}
|
|
498
506
|
targetQuestion.userAnswer.splice( targetUserAnswerIndex, 1 );
|
|
@@ -519,6 +527,13 @@ export async function redoChecklist( req, res ) {
|
|
|
519
527
|
}
|
|
520
528
|
} else {
|
|
521
529
|
question[sectionIndex].questions[findQuestion].userAnswer = [];
|
|
530
|
+
if ( Array.isArray( question[sectionIndex].questions[findQuestion].answers ) ) {
|
|
531
|
+
question[sectionIndex].questions[findQuestion].answers.forEach( ( ans ) => {
|
|
532
|
+
ans.validationAnswer = '';
|
|
533
|
+
delete ans.redoComment;
|
|
534
|
+
delete ans.redo;
|
|
535
|
+
} );
|
|
536
|
+
}
|
|
522
537
|
question[sectionIndex].questions[findQuestion].remarks = '';
|
|
523
538
|
}
|
|
524
539
|
checklistDetails.questionAnswers = question;
|
|
@@ -528,6 +543,7 @@ export async function redoChecklist( req, res ) {
|
|
|
528
543
|
reinitiateStatus: true,
|
|
529
544
|
questionAnswers: question,
|
|
530
545
|
...( checklistDetails.checklistStatus != 'submit' && checklistDetails.redoStatus ) ? { redoEdit: true } : {},
|
|
546
|
+
...( ( checklistDetails.redoEdit === undefined && checklistConfigDetails.redoValidity ) && { scheduleEndTime_iso: dayjs( checklistDetails.scheduleEndTime_iso ).add( checklistConfigDetails.redoValidity, 'day' ).format() } ),
|
|
531
547
|
};
|
|
532
548
|
|
|
533
549
|
let response = await processedChecklist.updateOne( { _id: req.body.payload._id }, updateData );
|
|
@@ -2643,6 +2643,9 @@ export async function updateRunAI( req, res ) {
|
|
|
2643
2643
|
if ( !req.body.qName ) {
|
|
2644
2644
|
return res.sendError( 'Question name is required', 400 );
|
|
2645
2645
|
}
|
|
2646
|
+
if ( !req.body.userAnswer ) {
|
|
2647
|
+
return res.sendError( 'answer is required', 400 );
|
|
2648
|
+
}
|
|
2646
2649
|
let getDetails = await processedchecklist.findOne( { _id: req.body.id } );
|
|
2647
2650
|
if ( !getDetails ) {
|
|
2648
2651
|
return res.sendError( 'No data found', 204 );
|
|
@@ -2651,7 +2654,7 @@ export async function updateRunAI( req, res ) {
|
|
|
2651
2654
|
let updateData = {};
|
|
2652
2655
|
|
|
2653
2656
|
for ( let k of Object.keys( req.body.data ) ) {
|
|
2654
|
-
let keyPath = `questionAnswers.$[section].questions.$[question].userAnswer
|
|
2657
|
+
let keyPath = `questionAnswers.$[section].questions.$[question].userAnswer.$[userAnswer].${k}`;
|
|
2655
2658
|
updateData[keyPath] = req.body.data[k];
|
|
2656
2659
|
}
|
|
2657
2660
|
|
|
@@ -2662,7 +2665,9 @@ export async function updateRunAI( req, res ) {
|
|
|
2662
2665
|
arrayFilters: [
|
|
2663
2666
|
{ 'section.section_id': new ObjectId( req.body.sectionId ) },
|
|
2664
2667
|
{ 'question.qname': req.body.qName },
|
|
2668
|
+
{ 'userAnswer.answer': req.body.userAnswer },
|
|
2665
2669
|
],
|
|
2670
|
+
strict: false,
|
|
2666
2671
|
},
|
|
2667
2672
|
);
|
|
2668
2673
|
return res.sendSuccess( 'RunAI details updated successfully' );
|
|
@@ -118,7 +118,7 @@ export async function startChecklist( req, res ) {
|
|
|
118
118
|
$and: [
|
|
119
119
|
{ _id: new ObjectId( requestData.processedcheckListId ) },
|
|
120
120
|
{ userId: req.user._id },
|
|
121
|
-
{ date_string: requestData.date },
|
|
121
|
+
{ $or: [ { date_string: requestData.date }, { redoStatus: true } ] },
|
|
122
122
|
],
|
|
123
123
|
},
|
|
124
124
|
} );
|
|
@@ -1177,24 +1177,29 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1177
1177
|
if ( qaAnswers[j].answerType == 'yes/no' ) {
|
|
1178
1178
|
let qaans = qaAnswers[j].answers;
|
|
1179
1179
|
let yn = [];
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
if (
|
|
1183
|
-
if (
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
splitImgUrl.
|
|
1189
|
-
|
|
1180
|
+
if ( ( getChecklistQA?.redoEdit && qaAnswers[j].redo == requestSection[i].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1181
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1182
|
+
if ( requestSection[i].answer == qaans[k].answer ) {
|
|
1183
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1184
|
+
if ( requestSection[i].validationAnswer ) {
|
|
1185
|
+
let validateAns = decodeURIComponent( requestSection[i].validationAnswer.split( '?' )[0] );
|
|
1186
|
+
if ( validateAns.length ) {
|
|
1187
|
+
let splitImgUrl = validateAns.split( '/' );
|
|
1188
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1189
|
+
splitImgUrl.splice( 0, 3 );
|
|
1190
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1191
|
+
}
|
|
1190
1192
|
}
|
|
1191
1193
|
}
|
|
1194
|
+
} else {
|
|
1195
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1196
|
+
qaans[k].validationAnswer = requestSection[i].validationAnswer || '';
|
|
1192
1197
|
}
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1198
|
+
if ( requestSection[i]?.runAIData && requestSection[i]?.runAIData?.length ) {
|
|
1199
|
+
qaans[k].runAIData = requestSection[i].runAIData;
|
|
1200
|
+
}
|
|
1201
|
+
yn.push( qaans[k] );
|
|
1196
1202
|
}
|
|
1197
|
-
yn.push( qaans[k] );
|
|
1198
1203
|
}
|
|
1199
1204
|
}
|
|
1200
1205
|
let structure = {};
|
|
@@ -1234,39 +1239,44 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1234
1239
|
} else if ( qaAnswers[j].answerType == 'multiplechoicesingle' || ( qaAnswers[j].answerType == 'dropdown' && !qaAnswers[j].allowMultiple ) ) {
|
|
1235
1240
|
let qaans = qaAnswers[j].answers;
|
|
1236
1241
|
let ms = [];
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
if (
|
|
1240
|
-
if (
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
splitImgUrl.
|
|
1246
|
-
|
|
1242
|
+
if ( ( getChecklistQA?.redoEdit && qaAnswers[j].redo == requestSection[i].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1243
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1244
|
+
if ( requestSection[i].answer == qaans[k].answer ) {
|
|
1245
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1246
|
+
if ( requestSection[i].validationAnswer ) {
|
|
1247
|
+
let validationAnswer = decodeURIComponent( requestSection[i].validationAnswer.split( '?' )[0] );
|
|
1248
|
+
if ( validationAnswer.length ) {
|
|
1249
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1250
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1251
|
+
splitImgUrl.splice( 0, 3 );
|
|
1252
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1253
|
+
}
|
|
1247
1254
|
}
|
|
1248
1255
|
}
|
|
1249
|
-
}
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1256
|
+
} else {
|
|
1257
|
+
if ( qaans[k].validationType == 'Capture Multiple Image with description' ) {
|
|
1258
|
+
qaans[k]['validationImage']=[];
|
|
1259
|
+
if ( requestSection[i].validationImage.length ) {
|
|
1260
|
+
for ( let image of requestSection[i].validationImage ) {
|
|
1261
|
+
let validationAnswer = decodeURIComponent( image.split( '?' )[0] );
|
|
1262
|
+
if ( validationAnswer.length ) {
|
|
1263
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1264
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1265
|
+
splitImgUrl.splice( 0, 3 );
|
|
1266
|
+
qaans[k].validationImage.push( splitImgUrl.join( '/' ) || '' );
|
|
1267
|
+
}
|
|
1268
|
+
};
|
|
1269
|
+
}
|
|
1263
1270
|
}
|
|
1264
1271
|
}
|
|
1272
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1273
|
+
qaans[k].validationAnswer = requestSection[i].validationAnswer || '';
|
|
1265
1274
|
}
|
|
1266
|
-
|
|
1267
|
-
|
|
1275
|
+
if ( requestSection[i]?.runAIData && requestSection[i]?.runAIData?.length ) {
|
|
1276
|
+
qaans[k].runAIData = requestSection[i].runAIData;
|
|
1277
|
+
}
|
|
1278
|
+
ms.push( qaans[k] );
|
|
1268
1279
|
}
|
|
1269
|
-
ms.push( qaans[k] );
|
|
1270
1280
|
}
|
|
1271
1281
|
}
|
|
1272
1282
|
let structure = {};
|
|
@@ -1307,29 +1317,33 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1307
1317
|
} else if ( qaAnswers[j].answerType == 'multiplechoicemultiple' || ( qaAnswers[j].answerType == 'dropdown' && qaAnswers[j].allowMultiple ) ) {
|
|
1308
1318
|
let qaans = qaAnswers[j].answers;
|
|
1309
1319
|
let mcmo = [];
|
|
1310
|
-
|
|
1311
|
-
let
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
if ( (
|
|
1315
|
-
if ( qaans[k].
|
|
1316
|
-
if (
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
splitImgUrl.
|
|
1322
|
-
|
|
1320
|
+
if ( ( getChecklistQA?.redoEdit && qaAnswers[j].redo == requestSection[i].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1321
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1322
|
+
let separatedArray = typeof requestSection[i].Multianswer == 'string' ? JSON.parse( requestSection[i].Multianswer ) : requestSection[i].Multianswer;
|
|
1323
|
+
for ( let s = 0; s < separatedArray.length; s++ ) {
|
|
1324
|
+
if ( ( separatedArray[s].answer == qaans[k].answer ) ) {
|
|
1325
|
+
if ( ( getChecklistQA?.redoEdit && qaans[k].redo == separatedArray[s].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1326
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1327
|
+
if ( separatedArray[s].validationAnswer ) {
|
|
1328
|
+
let validationAnswer = decodeURIComponent( separatedArray[s].validationAnswer.split( '?' )[0] );
|
|
1329
|
+
if ( validationAnswer.length ) {
|
|
1330
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1331
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1332
|
+
splitImgUrl.splice( 0, 3 );
|
|
1333
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1334
|
+
}
|
|
1323
1335
|
}
|
|
1324
1336
|
}
|
|
1337
|
+
} else {
|
|
1338
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1339
|
+
qaans[k].validationAnswer = separatedArray[s].validationAnswer || '';
|
|
1340
|
+
}
|
|
1341
|
+
if ( separatedArray[s]?.runAIData && separatedArray[s]?.runAIData?.length ) {
|
|
1342
|
+
qaans[k].runAIData = separatedArray[s].runAIData;
|
|
1325
1343
|
}
|
|
1326
|
-
} else {
|
|
1327
|
-
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1328
|
-
qaans[k].validationAnswer = separatedArray[s].validationAnswer || '';
|
|
1329
1344
|
}
|
|
1345
|
+
mcmo.push( qaans[k] );
|
|
1330
1346
|
}
|
|
1331
|
-
|
|
1332
|
-
mcmo.push( qaans[k] );
|
|
1333
1347
|
}
|
|
1334
1348
|
}
|
|
1335
1349
|
}
|
|
@@ -1377,37 +1391,42 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1377
1391
|
} else if ( [ 'image/video', 'multipleImage' ].includes( qaAnswers[j].answerType ) ) {
|
|
1378
1392
|
let separatedArray = typeof requestSection[i].Multianswer == 'string' ? JSON.parse( requestSection[i].Multianswer ) : requestSection[i].Multianswer;
|
|
1379
1393
|
let mcmi = [];
|
|
1394
|
+
if ( ( getChecklistQA?.redoEdit && qaAnswers[j].redo == requestSection[i].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1380
1395
|
// for (let k = 0; k < qaans.length; k++) {
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1396
|
+
for ( let s = 0; s < separatedArray.length; s++ ) {
|
|
1397
|
+
if ( separatedArray[s].answer && separatedArray[s].answer !='' ) {
|
|
1398
|
+
let newAnswer = {};
|
|
1399
|
+
let validationAnswer = decodeURIComponent( separatedArray[s].answer.split( '?' )[0] );
|
|
1400
|
+
if ( validationAnswer.length ) {
|
|
1401
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1402
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1403
|
+
splitImgUrl.splice( 0, 3 );
|
|
1404
|
+
newAnswer.answer = splitImgUrl.join( '/' ) || '';
|
|
1405
|
+
}
|
|
1390
1406
|
}
|
|
1391
|
-
}
|
|
1392
1407
|
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1408
|
+
newAnswer.answeroptionNumber = 0;
|
|
1409
|
+
newAnswer.sopFlag = false;
|
|
1410
|
+
newAnswer.validation = false;
|
|
1411
|
+
newAnswer.validationType = '';
|
|
1412
|
+
newAnswer.referenceImage = '';
|
|
1413
|
+
newAnswer.allowUploadfromGallery = false;
|
|
1414
|
+
newAnswer.descriptivetype = '';
|
|
1415
|
+
newAnswer.showLinked = false;
|
|
1416
|
+
newAnswer.linkedQuestion = 0;
|
|
1417
|
+
newAnswer.nestedQuestion = [];
|
|
1418
|
+
newAnswer.index = s;
|
|
1419
|
+
newAnswer.runAI = qaAnswers[j].answers[0]?.runAI || false;
|
|
1420
|
+
newAnswer.runAIFeatures = qaAnswers[j].answers[0]?.runAIFeatures || [];
|
|
1421
|
+
newAnswer.runAIDescription = qaAnswers[j].answers[0]?.runAIDescription || '';
|
|
1422
|
+
if ( qaAnswers[j].answerType == 'image/video' ) {
|
|
1423
|
+
newAnswer.answerType = separatedArray[s].answerType;
|
|
1424
|
+
}
|
|
1425
|
+
if ( separatedArray[s]?.runAIData && separatedArray[s]?.runAIData?.length ) {
|
|
1426
|
+
newAnswer.runAIData = separatedArray[s].runAIData;
|
|
1427
|
+
}
|
|
1428
|
+
mcmi.push( newAnswer );
|
|
1409
1429
|
}
|
|
1410
|
-
mcmi.push( newAnswer );
|
|
1411
1430
|
}
|
|
1412
1431
|
}
|
|
1413
1432
|
// }
|
|
@@ -1447,71 +1466,76 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1447
1466
|
newArray.push( structure );
|
|
1448
1467
|
} else {
|
|
1449
1468
|
let des = [];
|
|
1450
|
-
if (
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
if ( validationAnswer.length ) {
|
|
1456
|
-
let splitImgUrl = validationAnswer.split( '/' );
|
|
1457
|
-
if ( splitImgUrl.length > 1 ) {
|
|
1458
|
-
splitImgUrl.splice( 0, 3 );
|
|
1459
|
-
requestSection[i].answer = splitImgUrl.join( '/' );
|
|
1469
|
+
if ( ( getChecklistQA?.redoEdit && qaAnswers[j].redo == requestSection[i].redo ) || !getChecklistQA?.redoEdit ) {
|
|
1470
|
+
if ( requestSection[i].answer != 'null' && requestSection[i].answer != '' && requestSection[i].answer != null ) {
|
|
1471
|
+
let validationAnswer = '';
|
|
1472
|
+
if ( requestSection[i].answer.split( '?' ).length > 1 || requestSection[i].answer.includes( 'https://' ) ) {
|
|
1473
|
+
validationAnswer = decodeURIComponent( requestSection[i].answer.split( '?' )[0] );
|
|
1460
1474
|
}
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1475
|
+
if ( validationAnswer.length ) {
|
|
1476
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1477
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1478
|
+
splitImgUrl.splice( 0, 3 );
|
|
1479
|
+
requestSection[i].answer = splitImgUrl.join( '/' );
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
let ansstructure = {
|
|
1483
|
+
answer: requestSection[i].answer,
|
|
1484
|
+
answeroptionNumber: 1,
|
|
1485
|
+
sopFlag: false,
|
|
1486
|
+
validation: false,
|
|
1487
|
+
validationType: '',
|
|
1488
|
+
validationAnswer: '',
|
|
1489
|
+
referenceImage: qaAnswers[j].answers[0].referenceImage || '',
|
|
1490
|
+
multiReferenceImage: qaAnswers[j].answers[0].multiReferenceImage || [],
|
|
1491
|
+
showLinked: qaAnswers[j].answers[0].showLinked,
|
|
1492
|
+
linkedQuestion: qaAnswers[j].answers[0].linkedQuestion,
|
|
1493
|
+
runAI: qaAnswers[j].answers[0]?.runAI || false,
|
|
1494
|
+
runAIFeatures: qaAnswers[j]?.answers[0]?.runAIFeatures || [],
|
|
1495
|
+
runAIDescription: qaAnswers[j].answers[0]?.runAIDescription || '',
|
|
1496
|
+
};
|
|
1497
|
+
if ( qaAnswers[j].answerType == 'date' ) {
|
|
1498
|
+
ansstructure.dateRangeType = requestSection[i].dateRangeType || false;
|
|
1480
1499
|
if ( qaAnswers[j].compliance ) {
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1500
|
+
if ( qaAnswers[j].compliance ) {
|
|
1501
|
+
let ansArray = requestSection[i].answer.split( ',' );
|
|
1502
|
+
if ( ansArray.includes( '-' ) ) {
|
|
1503
|
+
ansArray = requestSection[i].answer.split( '-' );
|
|
1504
|
+
}
|
|
1505
|
+
if ( ansArray.length > 1 && ansArray.some( ( date ) => dayjs( date, 'DD MMM YYYY' ).format( 'DD-MM-YYYY' ) >= qaAnswers[j]?.answers[0]?.startDate && dayjs( date, 'DD MMM YYYY' ) <= qaAnswers[j]?.answers[0]?.endDate ) ) {
|
|
1506
|
+
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1507
|
+
} else if ( ansArray.length > 1 && ( dayjs( ansArray?.[0], 'DD MMM YYYY' ).format( 'DD-MM-YYYY' ) >= qaAnswers[j]?.answers[0]?.startDate && dayjs( ansArray?.[1], 'DD MMM YYYY' ).format( 'DD-MM-YYYY' ) <= qaAnswers[j]?.answers[0]?.endDate ) ) {
|
|
1508
|
+
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1509
|
+
} else if ( dayjs( requestSection[i].answer, 'DD MMM YYYY' ) >= qaAnswers[j]?.answers[0]?.startDate && dayjs( requestSection[i].answer, 'DD MMM YYYY' ) <= qaAnswers[j]?.answers[0]?.endDate ) {
|
|
1510
|
+
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1511
|
+
} else {
|
|
1512
|
+
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1513
|
+
}
|
|
1484
1514
|
}
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
if ( qaAnswers[j].answerType == 'linearscale' ) {
|
|
1518
|
+
if ( qaAnswers[j].compliance ) {
|
|
1519
|
+
let linearAnswer = requestSection[i].answer.split( 'to' );
|
|
1520
|
+
if ( parseInt( linearAnswer?.[0] ) >= qaAnswers[j]?.answers[0]?.minValue && parseInt( linearAnswer?.[1] ) <= qaAnswers[j]?.answers[0]?.maxValue ) {
|
|
1490
1521
|
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1491
1522
|
} else {
|
|
1492
1523
|
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1493
1524
|
}
|
|
1494
1525
|
}
|
|
1526
|
+
ansstructure.linearType = qaAnswers[j]?.answers[0]?.linearType;
|
|
1527
|
+
ansstructure.matchedCount = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1528
|
+
ansstructure.notMatchedCount = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1495
1529
|
}
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
let linearAnswer = requestSection[i].answer.split( 'to' );
|
|
1500
|
-
if ( parseInt( linearAnswer?.[0] ) >= qaAnswers[j]?.answers[0]?.minValue && parseInt( linearAnswer?.[1] ) <= qaAnswers[j]?.answers[0]?.maxValue ) {
|
|
1501
|
-
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1502
|
-
} else {
|
|
1503
|
-
ansstructure.complianceScore = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1504
|
-
}
|
|
1530
|
+
if ( qaAnswers[j].answerType == 'image' ) {
|
|
1531
|
+
ansstructure.matchedCount = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1532
|
+
ansstructure.notMatchedCount = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1505
1533
|
}
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
if ( qaAnswers[j].answerType == 'image' ) {
|
|
1511
|
-
ansstructure.matchedCount = qaAnswers[j]?.answers[0]?.matchedCount;
|
|
1512
|
-
ansstructure.notMatchedCount = qaAnswers[j]?.answers[0]?.notMatchedCount;
|
|
1534
|
+
if ( requestSection[i]?.runAIData && requestSection[i]?.runAIData?.length ) {
|
|
1535
|
+
ansstructure.runAIData = requestSection[i].runAIData;
|
|
1536
|
+
}
|
|
1537
|
+
des.push( ansstructure );
|
|
1513
1538
|
}
|
|
1514
|
-
des.push( ansstructure );
|
|
1515
1539
|
}
|
|
1516
1540
|
let structure = {};
|
|
1517
1541
|
structure.qno = qaAnswers[j].qno;
|
|
@@ -2962,6 +2986,9 @@ export async function dashboardv1( req, res ) {
|
|
|
2962
2986
|
// const { store_id, date } = req.query;
|
|
2963
2987
|
const { date } = req.query;
|
|
2964
2988
|
const userId = req.user._id;
|
|
2989
|
+
let fromDate = new Date( req.query.date );
|
|
2990
|
+
let toDate = new Date( req.query.date );
|
|
2991
|
+
toDate.setDate( toDate.getDate() + 1 );
|
|
2965
2992
|
|
|
2966
2993
|
// //Get User Based Checklist //
|
|
2967
2994
|
const clientId = { client_id: req.user.clientId };
|
|
@@ -2972,7 +2999,7 @@ export async function dashboardv1( req, res ) {
|
|
|
2972
2999
|
// eslint-disable-next-line camelcase
|
|
2973
3000
|
// store_id,
|
|
2974
3001
|
userId,
|
|
2975
|
-
date_string: date,
|
|
3002
|
+
$or: [ { date_string: date }, { $and: [ { redoStatus: true }, { scheduleEndTime_iso: { $gte: fromDate } } ] } ],
|
|
2976
3003
|
timeFlagStatus: true,
|
|
2977
3004
|
...clientId,
|
|
2978
3005
|
...storeMatch,
|
|
@@ -2998,9 +3025,7 @@ export async function dashboardv1( req, res ) {
|
|
|
2998
3025
|
},
|
|
2999
3026
|
];
|
|
3000
3027
|
|
|
3001
|
-
|
|
3002
|
-
let toDate = new Date( req.query.date );
|
|
3003
|
-
toDate.setDate( toDate.getDate() + 1 );
|
|
3028
|
+
|
|
3004
3029
|
const taskBaseMatch = {
|
|
3005
3030
|
// eslint-disable-next-line camelcase
|
|
3006
3031
|
// store_id,
|
|
@@ -3049,6 +3074,8 @@ export async function dashboardv1( req, res ) {
|
|
|
3049
3074
|
processedTask.aggregate( taskQuery ),
|
|
3050
3075
|
] );
|
|
3051
3076
|
|
|
3077
|
+
console.log( checklistResult );
|
|
3078
|
+
|
|
3052
3079
|
const checklistResultData =
|
|
3053
3080
|
checklistResult.status === 'fulfilled' ?
|
|
3054
3081
|
processResult( checklistResult.value ) :
|
|
@@ -3178,6 +3205,9 @@ export async function checklistv1( req, res ) {
|
|
|
3178
3205
|
// const { store_id, date, checklistStatus, searchValue } = req.query;
|
|
3179
3206
|
const { date, checklistStatus, searchValue } = req.query;
|
|
3180
3207
|
const userId = req.user._id;
|
|
3208
|
+
let fromDate = new Date( req.query.date );
|
|
3209
|
+
let toDate = new Date( req.query.date );
|
|
3210
|
+
toDate.setDate( toDate.getDate() + 1 );
|
|
3181
3211
|
|
|
3182
3212
|
// Get User Based Checklist //
|
|
3183
3213
|
const clientId = { client_id: req.user.clientId };
|
|
@@ -3189,16 +3219,23 @@ export async function checklistv1( req, res ) {
|
|
|
3189
3219
|
// eslint-disable-next-line camelcase
|
|
3190
3220
|
// { store_id },
|
|
3191
3221
|
{ userId },
|
|
3192
|
-
{ date_string: date },
|
|
3222
|
+
// { $or: [ { date_string: date }, { $and: [ { redoStatus: true }, { scheduleEndTime_iso: { $gte: fromDate } } ] } ] },
|
|
3193
3223
|
{ timeFlagStatus: true },
|
|
3194
3224
|
...matchExtraConditions,
|
|
3195
3225
|
clientId,
|
|
3196
3226
|
storeMatch,
|
|
3197
3227
|
];
|
|
3228
|
+
if ( checklistStatus != 'submit' ) {
|
|
3229
|
+
matchConditions.push( { $or: [ { date_string: date }, { $and: [ { redoStatus: true }, { scheduleEndTime_iso: { $gte: fromDate } } ] } ] } );
|
|
3230
|
+
}
|
|
3231
|
+
if ( checklistStatus == 'submit' ) {
|
|
3232
|
+
matchConditions.push( { date_string: date } );
|
|
3233
|
+
}
|
|
3198
3234
|
if ( checklistStatus ) {
|
|
3199
3235
|
matchConditions.push( { checklistStatus } );
|
|
3200
3236
|
}
|
|
3201
3237
|
|
|
3238
|
+
|
|
3202
3239
|
const pipeline = [
|
|
3203
3240
|
{ $match: { $and: matchConditions } },
|
|
3204
3241
|
...( searchValue ?
|
|
@@ -3251,9 +3288,7 @@ export async function checklistv1( req, res ) {
|
|
|
3251
3288
|
return pipeline;
|
|
3252
3289
|
};
|
|
3253
3290
|
|
|
3254
|
-
|
|
3255
|
-
let toDate = new Date( req.query.date );
|
|
3256
|
-
toDate.setDate( toDate.getDate() + 1 );
|
|
3291
|
+
|
|
3257
3292
|
const taskBuildPipeline = ( matchExtraConditions = [], projectExtraConditions = {} ) => {
|
|
3258
3293
|
const matchConditions = [
|
|
3259
3294
|
// eslint-disable-next-line camelcase
|
|
@@ -1729,6 +1729,7 @@ export const updateConfigure = async ( req, res ) => {
|
|
|
1729
1729
|
owner: inputBody?.checkListDetails?.owner || [],
|
|
1730
1730
|
restrictAttendance: inputBody?.checkListDetails?.restrictAttendance || false,
|
|
1731
1731
|
enableNewDeployedStore: inputBody?.checkListDetails?.enableNewDeployedStore || false,
|
|
1732
|
+
redoValidity: inputBody?.checkListDetails?.redoValidity || 7,
|
|
1732
1733
|
};
|
|
1733
1734
|
|
|
1734
1735
|
if ( inputBody?.checkListDetails?.approver.length ) {
|
|
@@ -3907,6 +3908,8 @@ async function insertPCBulkV4( getCLconfig, checklistId, currentdate, updatedche
|
|
|
3907
3908
|
}
|
|
3908
3909
|
}
|
|
3909
3910
|
getsubmitDetails[0].questionAnswers = sectionList;
|
|
3911
|
+
getsubmitDetails[0].scheduleEndTime = getCLconfig.scheduleEndTime;
|
|
3912
|
+
getsubmitDetails[0].scheduleEndTime_iso = endTimeIso.format();
|
|
3910
3913
|
if ( modifiedCount ) {
|
|
3911
3914
|
getsubmitDetails[0].checklistStatus = 'inprogress';
|
|
3912
3915
|
getsubmitDetails[0].date_string = dayjs( currentdate ).format( 'YYYY-MM-DD' );
|
|
@@ -4030,6 +4033,7 @@ async function insertPCBulkV4( getCLconfig, checklistId, currentdate, updatedche
|
|
|
4030
4033
|
}, { userId: 1, store_id: 1 } );
|
|
4031
4034
|
|
|
4032
4035
|
if ( inprogressData.length ) {
|
|
4036
|
+
await processedchecklist.updateMany( { _id: { $in: inprogressData.map( ( ele ) => new ObjectId( ele._id ) ) } }, { scheduleEndTime: getCLconfig.scheduleEndTime, scheduleEndTime_iso: endTimeIso.format() } );
|
|
4033
4037
|
inprogressData.forEach( ( item ) => {
|
|
4034
4038
|
let checkData = assignUserList.find( ( ele ) => ele.userId.toString() == item.userId.toString() && ele.store_id == item.store_id );
|
|
4035
4039
|
if ( !checkData ) {
|