tango-app-api-trax 3.6.2-bulktask-12 → 3.7.2-multireff-2
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 +2 -3
- package/src/controllers/gallery.controller.js +28 -167
- package/src/controllers/mobileTrax.controller.js +6 -16
- package/src/controllers/trax.controller.js +63 -63
- package/src/dtos/validation.dtos.js +1 -1
- package/src/hbs/login-otp.hbs +943 -943
- package/src/routes/gallery.routes.js +2 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tango-app-api-trax",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.2-multireff-2",
|
|
4
4
|
"description": "Trax",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"body-parser": "^1.20.3",
|
|
18
18
|
"dayjs": "^1.11.13",
|
|
19
19
|
"dotenv": "^16.4.5",
|
|
20
|
-
"exceljs": "^4.4.0",
|
|
21
20
|
"express": "^4.21.1",
|
|
22
21
|
"express-fileupload": "^1.5.1",
|
|
23
22
|
"firebase-admin": "^13.0.0",
|
|
@@ -27,7 +26,7 @@
|
|
|
27
26
|
"mongodb": "^6.8.0",
|
|
28
27
|
"nodemon": "^3.1.4",
|
|
29
28
|
"path": "^0.12.7",
|
|
30
|
-
"tango-api-schema": "^2.2.
|
|
29
|
+
"tango-api-schema": "^2.2.197",
|
|
31
30
|
"tango-app-api-middleware": "^3.1.77",
|
|
32
31
|
"url": "^0.11.4",
|
|
33
32
|
"winston": "^3.13.1",
|
|
@@ -8,11 +8,11 @@ import * as processedchecklistconfigService from '../services/processedchecklist
|
|
|
8
8
|
import * as processedChecklist from '../services/processedchecklist.services.js';
|
|
9
9
|
import * as checklistLogs from '../services/checklistlog.service.js';
|
|
10
10
|
import * as ApproverModel from '../services/approver.service.js';
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
import mongoose from 'mongoose';
|
|
13
13
|
import dayjs from 'dayjs';
|
|
14
14
|
import { aggregateTeams, findteams } from '../services/teams.service.js';
|
|
15
|
-
import { aggregate
|
|
15
|
+
import { aggregate } from '../services/user.service.js';
|
|
16
16
|
// import axios from 'axios';
|
|
17
17
|
import timeZone from 'dayjs/plugin/timezone.js';
|
|
18
18
|
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
|
|
@@ -289,7 +289,7 @@ export async function approveChecklist( req, res ) {
|
|
|
289
289
|
toDate = new Date( toDate.getTime() - userTimezoneOffset );
|
|
290
290
|
toDate.setUTCHours( 23, 59, 59, 59 );
|
|
291
291
|
let query = { sourceCheckList_id: req.body.sourceCheckList_id, date_iso: { $gte: req.body.fromDate, $lte: toDate }, $or: [ { checklistStatus: 'submit' }, { redoStatus: true } ], approvalEnable: true };
|
|
292
|
-
if ( !( req.body.assignedStores && req.body.assignedStores.length >
|
|
292
|
+
if ( !( req.body.assignedStores && req.body.assignedStores.length >0 ) ) {
|
|
293
293
|
req.body.assignedStores = req.body.storeId;
|
|
294
294
|
}
|
|
295
295
|
if ( req.body?.storeId?.length ) {
|
|
@@ -318,13 +318,13 @@ export async function approveChecklist( req, res ) {
|
|
|
318
318
|
|
|
319
319
|
let teamsMsg;
|
|
320
320
|
let teamsAlertUrls = process.env.teamsAlertURL ? JSON.parse( process.env.teamsAlertURL ) : '';
|
|
321
|
-
teamsMsg = 'ClientId: '
|
|
321
|
+
teamsMsg = 'ClientId: '+ checklistDetails[0].client_id + ', Type: Checklist, Process: started, Action: Approval, ChecklistId: '+ checklistDetails[0].sourceCheckList_id + ', Checklist Name: '+ checklistDetails[0].checkListName +', UpDatedBy: '+ req.user.email;
|
|
322
322
|
if ( teamsAlertUrls && teamsAlertUrls.approvalAlert ) {
|
|
323
323
|
sendTeamsNotification( teamsAlertUrls.approvalAlert, teamsMsg );
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
if ( updateResponse.modifiedCount || updateResponse.matchedCount ) {
|
|
327
|
-
teamsMsg = 'ClientId: '
|
|
327
|
+
teamsMsg = 'ClientId: '+ checklistDetails[0].client_id + ', Type: Checklist, Process: Completed, Updated Count: '+updateResponse.modifiedCount+' Action: Approval, ChecklistId: '+ checklistDetails[0].sourceCheckList_id + ', Checklist Name: '+ checklistDetails[0].checkListName +', UpDatedBy: '+ req.user.email;
|
|
328
328
|
if ( teamsAlertUrls && teamsAlertUrls.approvalAlert ) {
|
|
329
329
|
sendTeamsNotification( teamsAlertUrls.approvalAlert, teamsMsg );
|
|
330
330
|
}
|
|
@@ -360,7 +360,7 @@ export async function approveChecklist( req, res ) {
|
|
|
360
360
|
let searchResponse = await fetch( url.approveChecklist, requestOptions );
|
|
361
361
|
// console.log( searchResponse );
|
|
362
362
|
const filteredStoreIds = req.body.storeId.filter( ( store ) => req.body.assignedStores.includes( store ) );
|
|
363
|
-
let logData
|
|
363
|
+
let logData= {
|
|
364
364
|
'client_id': checklistDetails[0].client_id,
|
|
365
365
|
'createAt': new Date(),
|
|
366
366
|
'sourceCheckList_id': req.body.sourceCheckList_id,
|
|
@@ -469,13 +469,13 @@ export async function redoChecklist( req, res ) {
|
|
|
469
469
|
let response = await processedChecklist.updateOne( { _id: req.body.payload._id }, updateData );
|
|
470
470
|
// console.log( response );
|
|
471
471
|
if ( response.modifiedCount || response.matchedCount ) {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
472
|
+
let storeTimeZone = await storeService.findOne( { storeName: checklistDetails.storeName }, { 'storeProfile.timeZone': 1 } );
|
|
473
|
+
let currentDateTime;
|
|
474
|
+
if ( storeTimeZone?.storeProfile?.timeZone ) {
|
|
475
|
+
currentDateTime = dayjs().tz( storeTimeZone?.storeProfile?.timeZone );
|
|
476
|
+
} else {
|
|
477
|
+
currentDateTime = dayjs();
|
|
478
|
+
}
|
|
479
479
|
data = {
|
|
480
480
|
checklistId: checklistDetails.sourceCheckList_id,
|
|
481
481
|
checkListName: checklistDetails.checkListName,
|
|
@@ -491,10 +491,10 @@ export async function redoChecklist( req, res ) {
|
|
|
491
491
|
type: checklistDetails.checkListType,
|
|
492
492
|
userAnswer: userAnswer,
|
|
493
493
|
initiatedBy: req.user.userName,
|
|
494
|
-
initiatedTime: dayjs.utc( ).format(),
|
|
494
|
+
initiatedTime: dayjs.utc( currentDateTime.format( 'hh:mm:ss A, DD MMM YYYY' ), 'hh:mm:ss A, DD MMM YYYY' ).format(),
|
|
495
495
|
answerType: question[sectionIndex].questions[findQuestion].answerType,
|
|
496
496
|
submitedBy: checklistDetails.userName,
|
|
497
|
-
submitTime:
|
|
497
|
+
submitTime: checklistDetails.submitTime,
|
|
498
498
|
};
|
|
499
499
|
await checklistLogs.create( data );
|
|
500
500
|
|
|
@@ -547,7 +547,7 @@ export async function redomultiChecklist( req, res ) {
|
|
|
547
547
|
try {
|
|
548
548
|
let inputData = req.body.payload.coverage === 'user' ? req.body.payload.userEmail : req.body.payload.storeName;
|
|
549
549
|
|
|
550
|
-
|
|
550
|
+
|
|
551
551
|
for ( let originalData of inputData ) {
|
|
552
552
|
if ( !originalData.checklistId ) {
|
|
553
553
|
return res.sendError( 'Id is Required', 400 );
|
|
@@ -559,15 +559,6 @@ export async function redomultiChecklist( req, res ) {
|
|
|
559
559
|
return res.sendError( 'Question number is Required', 400 );
|
|
560
560
|
}
|
|
561
561
|
|
|
562
|
-
let findcomment = {};
|
|
563
|
-
if ( !inputBody.payload.showcomment ) {
|
|
564
|
-
if ( inputBody.payload?.coverage === 'store' ) {
|
|
565
|
-
findcomment = inputBody.payload.excelData.find( ( ele ) => ele['Store Name'] === originalData.storeName );
|
|
566
|
-
} else if ( inputBody.payload?.coverage === 'users' ) {
|
|
567
|
-
findcomment = inputBody.payload.excelData.find( ( ele ) => ele['User Email'] === originalData.userEmail );
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
console.log( '****************', findcomment );
|
|
571
562
|
|
|
572
563
|
let checklistDetails = await processedChecklist.findOne( { _id: originalData.checklistId }, { 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 } );
|
|
573
564
|
if ( !checklistDetails ) {
|
|
@@ -583,7 +574,7 @@ export async function redomultiChecklist( req, res ) {
|
|
|
583
574
|
|
|
584
575
|
let findQuestion = question[sectionIndex].questions.findIndex( ( ele ) => ele.qno == req.body.payload.qno );
|
|
585
576
|
|
|
586
|
-
let data = { ...question[sectionIndex].questions[findQuestion], redo: true, redoComment: req.body.payload?.
|
|
577
|
+
let data = { ...question[sectionIndex].questions[findQuestion], redo: true, redoComment: req.body.payload?.checklistDescription || '' };
|
|
587
578
|
// if ( checklistDetails.client_id == '458' ) {
|
|
588
579
|
data.answers.forEach( ( item ) => {
|
|
589
580
|
if ( item.showLinked ) {
|
|
@@ -620,17 +611,17 @@ export async function redomultiChecklist( req, res ) {
|
|
|
620
611
|
let response = await processedChecklist.updateOne( { _id: originalData.checklistId }, updateData );
|
|
621
612
|
// console.log( response );
|
|
622
613
|
if ( response.modifiedCount || response.matchedCount ) {
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
614
|
+
let storeTimeZone = await storeService.findOne( { storeName: checklistDetails.storeName }, { 'storeProfile.timeZone': 1 } );
|
|
615
|
+
let currentDateTime;
|
|
616
|
+
if ( storeTimeZone?.storeProfile?.timeZone ) {
|
|
617
|
+
currentDateTime = dayjs().tz( storeTimeZone?.storeProfile?.timeZone );
|
|
618
|
+
} else {
|
|
619
|
+
currentDateTime = dayjs();
|
|
620
|
+
}
|
|
630
621
|
data = {
|
|
631
622
|
checklistId: checklistDetails.sourceCheckList_id,
|
|
632
623
|
checkListName: checklistDetails.checkListName,
|
|
633
|
-
checklistDescription: req.body.payload
|
|
624
|
+
checklistDescription: req.body.payload.checklistDescription,
|
|
634
625
|
sectionId: originalData.section_id,
|
|
635
626
|
sectionName: question[sectionIndex].sectionName,
|
|
636
627
|
questionName: question[sectionIndex].questions[findQuestion].qname,
|
|
@@ -642,10 +633,10 @@ export async function redomultiChecklist( req, res ) {
|
|
|
642
633
|
type: checklistDetails.checkListType,
|
|
643
634
|
userAnswer: userAnswer,
|
|
644
635
|
initiatedBy: req.user.userName,
|
|
645
|
-
initiatedTime: dayjs.utc( ).format(),
|
|
636
|
+
initiatedTime: dayjs.utc( currentDateTime.format( 'hh:mm:ss A, DD MMM YYYY' ), 'hh:mm:ss A, DD MMM YYYY' ).format(),
|
|
646
637
|
answerType: question[sectionIndex].questions[findQuestion].answerType,
|
|
647
638
|
submitedBy: checklistDetails.userName,
|
|
648
|
-
submitTime:
|
|
639
|
+
submitTime: checklistDetails.submitTime,
|
|
649
640
|
};
|
|
650
641
|
await checklistLogs.create( data );
|
|
651
642
|
|
|
@@ -653,9 +644,7 @@ export async function redomultiChecklist( req, res ) {
|
|
|
653
644
|
req.body.payload._id = originalData.checklistId;
|
|
654
645
|
req.body.payload.section_id = originalData.section_id;
|
|
655
646
|
req.body.payload.uniqueNo = originalData.uniqueNo;
|
|
656
|
-
console.log( req.body );
|
|
657
|
-
|
|
658
|
-
// return;
|
|
647
|
+
// console.log( req.body );
|
|
659
648
|
|
|
660
649
|
|
|
661
650
|
const requestOptions = {
|
|
@@ -666,7 +655,6 @@ export async function redomultiChecklist( req, res ) {
|
|
|
666
655
|
body: JSON.stringify( req.body ),
|
|
667
656
|
};
|
|
668
657
|
let url = JSON.parse( process.env.LAMBDAURL );
|
|
669
|
-
console.log( url.redoChecklist );
|
|
670
658
|
let searchResponse = await fetch( url.redoChecklist, requestOptions );
|
|
671
659
|
console.log( searchResponse.ok );
|
|
672
660
|
let logData = {
|
|
@@ -761,37 +749,6 @@ export async function approvalstatus( req, res ) {
|
|
|
761
749
|
}
|
|
762
750
|
|
|
763
751
|
|
|
764
|
-
let url = JSON.parse( process.env.LAMBDAURL );
|
|
765
|
-
let resultData = await LamdaServiceCall( url.approvalstatus, req.body );
|
|
766
|
-
|
|
767
|
-
if ( resultData ) {
|
|
768
|
-
if ( resultData.status_code == '200' ) {
|
|
769
|
-
return res.sendSuccess( resultData );
|
|
770
|
-
} else {
|
|
771
|
-
return res.sendError( 'No Content', 204 );
|
|
772
|
-
}
|
|
773
|
-
} else {
|
|
774
|
-
return res.sendError( 'No Content', 204 );
|
|
775
|
-
}
|
|
776
|
-
} catch ( error ) {
|
|
777
|
-
logger.error( error, 'approvalstatus' );
|
|
778
|
-
return res.sendError( error, 500 );
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
export async function allapprovalstatus( req, res ) {
|
|
782
|
-
try {
|
|
783
|
-
if ( ( req?.user?.userType == 'client' && req.user.role == 'superadmin' ) ) {
|
|
784
|
-
let url = JSON.parse( process.env.LAMBDAURL );
|
|
785
|
-
let resultData = await LamdaServiceCall( url.approvalstatus, req.body );
|
|
786
|
-
if ( resultData ) {
|
|
787
|
-
if ( resultData.status_code == '200' ) {
|
|
788
|
-
return res.sendSuccess( resultData );
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
return res.sendError( 'No Content', 204 );
|
|
792
|
-
}
|
|
793
|
-
|
|
794
|
-
|
|
795
752
|
let url = JSON.parse( process.env.LAMBDAURL );
|
|
796
753
|
let resultData = await LamdaServiceCall( url.approvalstatus, req.body );
|
|
797
754
|
|
|
@@ -1191,35 +1148,7 @@ export async function checkNotificationCount( req, res ) {
|
|
|
1191
1148
|
return res.sendError( { error: error }, 500 );
|
|
1192
1149
|
}
|
|
1193
1150
|
}
|
|
1194
|
-
export async function taskvalidateUserData( req, res ) {
|
|
1195
|
-
try {
|
|
1196
|
-
let error = [];
|
|
1197
|
-
if ( req.body.coverage === 'store' ) {
|
|
1198
|
-
for ( let [ index, store ] of req.body.assignedData.entries() ) {
|
|
1199
|
-
let findstore = await storeService.findOne( { clientId: req.body.clientId, storeName: store['Store Name'] } );
|
|
1200
|
-
console.log( findstore );
|
|
1201
|
-
if ( !findstore ) {
|
|
1202
|
-
error.push( `Invalid StoreName - C${index + 2}` );
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1205
|
-
}
|
|
1206
|
-
if ( req.body.coverage === 'users' ) {
|
|
1207
|
-
for ( let [ index, user ] of req.body.assignedData.entries() ) {
|
|
1208
|
-
let finduser = await findOne( { clientId: req.body.clientId, email: user['User Email'] } );
|
|
1209
|
-
if ( !finduser ) {
|
|
1210
|
-
error.push( `Invalid userEmail - C${index + 2}` );
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
|
-
}
|
|
1214
|
-
if ( error.length ) {
|
|
1215
|
-
return res.sendError( error, 400 );
|
|
1216
|
-
}
|
|
1217
1151
|
|
|
1218
|
-
res.sendSuccess( 'success' );
|
|
1219
|
-
} catch ( error ) {
|
|
1220
|
-
logger.error( { error: error, function: 'taskvalidateUserData' } );
|
|
1221
|
-
}
|
|
1222
|
-
}
|
|
1223
1152
|
export async function vehicleCheckInUpdate( req, res ) {
|
|
1224
1153
|
try {
|
|
1225
1154
|
let requestData = req.body;
|
|
@@ -1241,71 +1170,3 @@ export async function vehicleCheckInUpdate( req, res ) {
|
|
|
1241
1170
|
return res.sendError( { error: error }, 500 );
|
|
1242
1171
|
}
|
|
1243
1172
|
}
|
|
1244
|
-
export async function getallchecklist( req, res ) {
|
|
1245
|
-
try {
|
|
1246
|
-
let url = JSON.parse( process.env.LAMBDAURL );
|
|
1247
|
-
console.log( url.getallchecklist );
|
|
1248
|
-
|
|
1249
|
-
let resultData = await LamdaServiceCall( url.getallchecklist, req.body );
|
|
1250
|
-
console.log( resultData );
|
|
1251
|
-
if ( resultData ) {
|
|
1252
|
-
if ( resultData.status_code == '200' ) {
|
|
1253
|
-
resultData.message = '';
|
|
1254
|
-
return res.sendSuccess( resultData );
|
|
1255
|
-
} else {
|
|
1256
|
-
return res.sendError( 'No Content', 204 );
|
|
1257
|
-
}
|
|
1258
|
-
} else {
|
|
1259
|
-
return res.sendError( 'No Content', 204 );
|
|
1260
|
-
}
|
|
1261
|
-
} catch ( error ) {
|
|
1262
|
-
logger.error( { error: error, function: 'getallchecklist' } );
|
|
1263
|
-
return res.sendError( { error: error }, 500 );
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
export async function exportTemplate( req, res ) {
|
|
1267
|
-
try {
|
|
1268
|
-
const workbook = new ExcelJS.Workbook();
|
|
1269
|
-
const worksheet = workbook.addWorksheet( 'Sheet1' );
|
|
1270
|
-
if ( req.body.coverage === 'store' ) {
|
|
1271
|
-
worksheet.addRow( [ 'Checklist Name', 'Question Name', 'Store Name', 'Comments' ] );
|
|
1272
|
-
} else {
|
|
1273
|
-
worksheet.addRow( [ 'Checklist Name', 'Question Name', 'User Email', 'Comments' ] );
|
|
1274
|
-
}
|
|
1275
|
-
for ( let data of req.body.excelData ) {
|
|
1276
|
-
worksheet.addRow( [ data.checklistName, data.questionName, req.body.coverage === 'store'?data.storeName:data.userEmail, '' ] );
|
|
1277
|
-
}
|
|
1278
|
-
worksheet.eachRow( ( row, rowNumber ) => {
|
|
1279
|
-
row.eachCell( { includeEmpty: true }, ( cell, colNumber ) => {
|
|
1280
|
-
if ( colNumber === 1 || colNumber === 2 || colNumber === 3 ) {
|
|
1281
|
-
cell.protection = { locked: true }; // Lock Name & Email
|
|
1282
|
-
} else {
|
|
1283
|
-
cell.protection = { locked: false }; // Unlock Phone
|
|
1284
|
-
}
|
|
1285
|
-
} );
|
|
1286
|
-
} );
|
|
1287
|
-
|
|
1288
|
-
// Protect the worksheet
|
|
1289
|
-
await worksheet.protect( 'yourPassword123', {
|
|
1290
|
-
selectLockedCells: true,
|
|
1291
|
-
selectUnlockedCells: true,
|
|
1292
|
-
formatCells: false,
|
|
1293
|
-
formatColumns: false,
|
|
1294
|
-
formatRows: false,
|
|
1295
|
-
insertColumns: false,
|
|
1296
|
-
insertRows: false,
|
|
1297
|
-
insertHyperlinks: false,
|
|
1298
|
-
deleteColumns: false,
|
|
1299
|
-
deleteRows: false,
|
|
1300
|
-
} );
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
const buffer = await workbook.xlsx.writeBuffer();
|
|
1304
|
-
res.setHeader( 'Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' );
|
|
1305
|
-
res.setHeader( 'Content-Disposition', 'attachment; filename="Fixture Library.xlsx"' );
|
|
1306
|
-
return res.send( buffer );
|
|
1307
|
-
} catch ( error ) {
|
|
1308
|
-
logger.error( { error: error, function: 'exportTemplate' } );
|
|
1309
|
-
return res.sendError( { error: error }, 500 );
|
|
1310
|
-
}
|
|
1311
|
-
}
|
|
@@ -377,7 +377,7 @@ export async function startTask( req, res ) {
|
|
|
377
377
|
|
|
378
378
|
|
|
379
379
|
let updatedNewData;
|
|
380
|
-
if ( task.checkListFrom &&
|
|
380
|
+
if ( task.checkListFrom && task.checkListFrom == 'api' ) {
|
|
381
381
|
updatedNewData = {
|
|
382
382
|
checklistStatus: 'inprogress',
|
|
383
383
|
startMobileTime: requestData?.currentTime,
|
|
@@ -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;
|
|
@@ -1516,9 +1521,6 @@ export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
|
1516
1521
|
let structure = {};
|
|
1517
1522
|
structure.qno = qaAnswers[j].qno;
|
|
1518
1523
|
structure.qname = qaAnswers[j].qname;
|
|
1519
|
-
if ( qaAnswers[j].qcomment && qaAnswers[j].qcomment!='' ) {
|
|
1520
|
-
structure.qcomment = qaAnswers[j].qcomment;
|
|
1521
|
-
}
|
|
1522
1524
|
structure.answerType = qaAnswers[j].answerType;
|
|
1523
1525
|
structure.runAI = qaAnswers[j].runAI;
|
|
1524
1526
|
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
@@ -1567,9 +1569,6 @@ export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
|
1567
1569
|
let structure = {};
|
|
1568
1570
|
structure.qno = qaAnswers[j].qno;
|
|
1569
1571
|
structure.qname = qaAnswers[j].qname;
|
|
1570
|
-
if ( qaAnswers[j].qcomment && qaAnswers[j].qcomment!='' ) {
|
|
1571
|
-
structure.qcomment = qaAnswers[j].qcomment;
|
|
1572
|
-
}
|
|
1573
1572
|
structure.answerType = qaAnswers[j].answerType;
|
|
1574
1573
|
structure.runAI = qaAnswers[j].runAI;
|
|
1575
1574
|
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
@@ -1621,9 +1620,6 @@ export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
|
1621
1620
|
let structure = {};
|
|
1622
1621
|
structure.qno = qaAnswers[j].qno;
|
|
1623
1622
|
structure.qname = qaAnswers[j].qname;
|
|
1624
|
-
if ( qaAnswers[j].qcomment && qaAnswers[j].qcomment!='' ) {
|
|
1625
|
-
structure.qcomment = qaAnswers[j].qcomment;
|
|
1626
|
-
}
|
|
1627
1623
|
structure.answerType = qaAnswers[j].answerType;
|
|
1628
1624
|
structure.runAI = qaAnswers[j].runAI;
|
|
1629
1625
|
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
@@ -1680,9 +1676,6 @@ export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
|
1680
1676
|
let structure = {};
|
|
1681
1677
|
structure.qno = qaAnswers[j].qno;
|
|
1682
1678
|
structure.qname = qaAnswers[j].qname;
|
|
1683
|
-
if ( qaAnswers[j].qcomment && qaAnswers[j].qcomment!='' ) {
|
|
1684
|
-
structure.qcomment = qaAnswers[j].qcomment;
|
|
1685
|
-
}
|
|
1686
1679
|
structure.answerType = qaAnswers[j].answerType;
|
|
1687
1680
|
structure.runAI = qaAnswers[j].runAI;
|
|
1688
1681
|
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
@@ -1737,9 +1730,6 @@ export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
|
1737
1730
|
let structure = {};
|
|
1738
1731
|
structure.qno = qaAnswers[j].qno;
|
|
1739
1732
|
structure.qname = qaAnswers[j].qname;
|
|
1740
|
-
if ( qaAnswers[j].qcomment && qaAnswers[j].qcomment!='' ) {
|
|
1741
|
-
structure.qcomment = qaAnswers[j].qcomment;
|
|
1742
|
-
}
|
|
1743
1733
|
structure.answerType = qaAnswers[j].answerType;
|
|
1744
1734
|
structure.runAI = qaAnswers[j].runAI;
|
|
1745
1735
|
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fileUpload, chunkArray, logger, sendPushNotification, sendTeamsNotification, insertOpenSearchData } from 'tango-app-api-middleware';
|
|
2
2
|
import * as checklistService from '../services/checklist.service.js';
|
|
3
3
|
import * as questionService from '../services/checklistQuestion.service.js';
|
|
4
4
|
import * as assignedService from '../services/checklistAssign.service.js';
|
|
@@ -222,24 +222,24 @@ export const create = async ( req, res ) => {
|
|
|
222
222
|
if ( inputBody.sections.length ) {
|
|
223
223
|
for ( let i = 0; i < inputBody?.sections?.length; i++ ) {
|
|
224
224
|
let section = inputBody.sections[i];
|
|
225
|
-
section.questions.forEach( ( section ) => {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
} );
|
|
225
|
+
// section.questions.forEach( ( section ) => {
|
|
226
|
+
// if ( section.questionReferenceImage && section.questionReferenceImage !='' ) {
|
|
227
|
+
// let imgUrl = decodeURIComponent( section.questionReferenceImage.split( '?' )[0] );
|
|
228
|
+
// let url = imgUrl.split( '/' );
|
|
229
|
+
// url.splice( 0, 3 );
|
|
230
|
+
// section.questionReferenceImage = url.join( '/' );
|
|
231
|
+
// }
|
|
232
|
+
// // if (['image', 'descriptiveImage'].includes(section.answerType) ) {
|
|
233
|
+
// section.answers.forEach( ( answer ) => {
|
|
234
|
+
// if ( answer.referenceImage != '' ) {
|
|
235
|
+
// let imgUrl = decodeURIComponent( answer.referenceImage.split( '?' )[0] );
|
|
236
|
+
// let url = imgUrl.split( '/' );
|
|
237
|
+
// url.splice( 0, 3 );
|
|
238
|
+
// answer.referenceImage = url.join( '/' );
|
|
239
|
+
// }
|
|
240
|
+
// } );
|
|
241
|
+
// // }
|
|
242
|
+
// } );
|
|
243
243
|
|
|
244
244
|
for ( let [ index, question ] of section.questions.entries() ) {
|
|
245
245
|
await processNested( index, question );
|
|
@@ -411,26 +411,26 @@ export const getConfigDetails = async ( req, res ) => {
|
|
|
411
411
|
let questionDetails = await questionService.findSort( query, {}, sectionSort );
|
|
412
412
|
if ( questionDetails.length ) {
|
|
413
413
|
let sections = [];
|
|
414
|
-
let bucket = JSON.parse( process.env.BUCKET );
|
|
414
|
+
// let bucket = JSON.parse( process.env.BUCKET );
|
|
415
415
|
questionDetails.forEach( ( item ) => {
|
|
416
|
-
item.question.forEach( async ( question ) => {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
} );
|
|
416
|
+
// item.question.forEach( async ( question ) => {
|
|
417
|
+
// if ( question.questionReferenceImage && question.questionReferenceImage !='' ) {
|
|
418
|
+
// let inputData = {
|
|
419
|
+
// Bucket: bucket.sop,
|
|
420
|
+
// file_path: decodeURIComponent( question.questionReferenceImage ),
|
|
421
|
+
// };
|
|
422
|
+
// question.questionReferenceImage = await signedUrl( inputData );
|
|
423
|
+
// }
|
|
424
|
+
// question.answers.forEach( async ( answer ) => {
|
|
425
|
+
// if ( answer.referenceImage != '' ) {
|
|
426
|
+
// let inputData = {
|
|
427
|
+
// Bucket: bucket.sop,
|
|
428
|
+
// file_path: decodeURIComponent( answer.referenceImage ),
|
|
429
|
+
// };
|
|
430
|
+
// answer.referenceImage = await signedUrl( inputData );
|
|
431
|
+
// }
|
|
432
|
+
// } );
|
|
433
|
+
// } );
|
|
434
434
|
sections.push( {
|
|
435
435
|
id: item._id,
|
|
436
436
|
name: item.section,
|
|
@@ -855,22 +855,22 @@ export const update = async ( req, res ) => {
|
|
|
855
855
|
if ( inputBody.sections.length ) {
|
|
856
856
|
for ( let i = 0; i < inputBody?.sections?.length; i++ ) {
|
|
857
857
|
let section = inputBody.sections[i];
|
|
858
|
-
section.questions.forEach( ( section ) => {
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
} );
|
|
858
|
+
// section.questions.forEach( ( section ) => {
|
|
859
|
+
// if ( section.questionReferenceImage && section.questionReferenceImage !='' ) {
|
|
860
|
+
// let imgUrl = section.questionReferenceImage.split( '?' )[0];
|
|
861
|
+
// let url = imgUrl.split( '/' );
|
|
862
|
+
// url.splice( 0, 3 );
|
|
863
|
+
// section.questionReferenceImage = url.join( '/' );
|
|
864
|
+
// }
|
|
865
|
+
// section.answers.forEach( ( answer ) => {
|
|
866
|
+
// if ( answer.referenceImage != '' ) {
|
|
867
|
+
// let imgUrl = answer.referenceImage.split( '?' )[0];
|
|
868
|
+
// let url = imgUrl.split( '/' );
|
|
869
|
+
// url.splice( 0, 3 );
|
|
870
|
+
// answer.referenceImage = url.join( '/' );
|
|
871
|
+
// }
|
|
872
|
+
// } );
|
|
873
|
+
// } );
|
|
874
874
|
|
|
875
875
|
for ( let [ index, question ] of section.questions.entries() ) {
|
|
876
876
|
await processNested( index, question );
|
|
@@ -1097,16 +1097,16 @@ export const uploadImage = async ( req, res ) => {
|
|
|
1097
1097
|
};
|
|
1098
1098
|
imgUrl = await fileUpload( params );
|
|
1099
1099
|
|
|
1100
|
-
let inputData = {
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
};
|
|
1104
|
-
imgUrl = await signedUrl( inputData );
|
|
1105
|
-
if ( !imgUrl ) {
|
|
1106
|
-
|
|
1107
|
-
}
|
|
1100
|
+
// let inputData = {
|
|
1101
|
+
// Bucket: bucket.sop,
|
|
1102
|
+
// file_path: imgUrl.Key,
|
|
1103
|
+
// };
|
|
1104
|
+
// imgUrl = await signedUrl( inputData );
|
|
1105
|
+
// if ( !imgUrl ) {
|
|
1106
|
+
// return res.sendError( { message: 'Something went Wrong' }, 500 );
|
|
1107
|
+
// }
|
|
1108
1108
|
|
|
1109
|
-
return res.sendSuccess( { message: 'Uploaded Successfully', imgUrl: imgUrl } );
|
|
1109
|
+
return res.sendSuccess( { message: 'Uploaded Successfully', imgUrl: imgUrl.Key } );
|
|
1110
1110
|
} catch ( e ) {
|
|
1111
1111
|
logger.error( 'uploadImage =>', e );
|
|
1112
1112
|
return res.sendError( e, 500 );
|
|
@@ -57,7 +57,7 @@ export const runaiSchema = joi.object( {
|
|
|
57
57
|
questionName: joi.string().optional().allow( '' ),
|
|
58
58
|
runAIDescription: joi.string().optional().allow( '' ),
|
|
59
59
|
answerType: joi.string().optional().allow( '' ),
|
|
60
|
-
referenceImage: joi.
|
|
60
|
+
referenceImage: joi.array().items( joi.any() ).min( 0 ),
|
|
61
61
|
clientId: joi.string().optional().allow( '' ),
|
|
62
62
|
} );
|
|
63
63
|
|