tango-app-api-audit 3.4.42 → 3.4.44

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-audit",
3
- "version": "3.4.42",
3
+ "version": "3.4.44",
4
4
  "description": "audit & audit metrics apis",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -15,9 +15,11 @@
15
15
  "dependencies": {
16
16
  "adm-zip": "^0.5.15",
17
17
  "aws-sdk": "^2.1643.0",
18
+ "axios": "^1.7.9",
18
19
  "dayjs": "^1.11.11",
19
20
  "dotenv": "^16.4.5",
20
21
  "express": "^4.19.2",
22
+ "form-data": "^4.0.1",
21
23
  "handlebars": "^4.7.8",
22
24
  "joi-to-swagger": "^6.2.0",
23
25
  "lodash": "^4.17.21",
@@ -1,4 +1,4 @@
1
- import { checkFileExist, chunkArray, download, getDate, getDateWithCustomizeTime, getOpenSearchData, getUTC, insertOpenSearchData, listFileByPath, logger, signedUrl, sqsReceive, updateOpenSearchData } from 'tango-app-api-middleware';
1
+ import { checkFileExist, chunkArray, download, getDate, getDateWithCustomizeTime, getObject, getOpenSearchData, getUTC, insertOpenSearchData, listFileByPath, logger, signedUrl, sqsReceive, updateOpenSearchData } from 'tango-app-api-middleware';
2
2
  import { aggregateBinaryAudit, createBinaryAudit, updateOneBinaryAuditModel } from '../service/binaryAudit.service.js';
3
3
  import { countDocumentsStore, findOneStore } from '../service/store.service.js';
4
4
  import { findOneUser } from '../service/user.service.js';
@@ -17,6 +17,8 @@ import {
17
17
  findOneUserEmpDetection,
18
18
  } from '../service/userEmpDetection.service.js';
19
19
  import { updateOneEmpDetectionOutput } from '../service/empDetectionOutput.service.js';
20
+ import axios from 'axios';
21
+ import FormData from 'form-data';
20
22
 
21
23
  export async function workSpace( req, res ) {
22
24
  try {
@@ -988,6 +990,7 @@ export async function getUpdatedFile( req, res ) {
988
990
  export async function saveBinary( req, res ) {
989
991
  try {
990
992
  const openSearch = JSON.parse( process.env.OPENSEARCH );
993
+ const url = JSON.parse( process.env.URL );
991
994
  const sqs = JSON.parse( process.env.SQS );
992
995
  const inputData = req.body;
993
996
  const isoDate = req.userAudit?.startTime;
@@ -1229,32 +1232,93 @@ export async function saveBinary( req, res ) {
1229
1232
 
1230
1233
  break;
1231
1234
  case 'eye-test-camera':
1232
- let eyeTestQuery ={
1233
- _id: inputData.auditId,
1234
- storeId: inputData.storeId,
1235
- fileDate: inputData.fileDate,
1236
- streamName: inputData.streamName,
1237
- moduleType: inputData.moduleType,
1238
- };
1239
- let eyeTestUpdate={
1240
- auditStatus: 'completed',
1241
- answer: inputData.answer,
1242
- userComments: inputData.userComments || '',
1243
- endTime: new Date(),
1244
- timeSpent: timeDifferenceInMinutes,
1245
- };
1246
- let updatDataEyeTest= await updateOneBinaryAuditModel( eyeTestQuery, eyeTestUpdate );
1247
- if ( updatDataEyeTest.modifiedCount==0 ) {
1248
- return res.sendError( 'Update failed, it may be invalid request', 400 );
1235
+ if ( inputData.answer == 'approved' ) {
1236
+ const stores = await findOneStore( { storeId: req.userAudit?.storeId }, { storeName: 1 } );
1237
+ const query={
1238
+ streamName: req.userAudit?.streamName,
1239
+ fileDate: req.userAudit?.fileDate,
1240
+ storeId: req.userAudit?.storeId,
1241
+ moduleType: req.userAudit?.moduleType,
1242
+ };
1243
+ const getSqs = await findOneTraxAuditData( query, { sqs: '$sqs.Body' } );
1244
+
1245
+ const fileDateISO = req.userAudit?.fileDateISO;
1246
+ fileDateISO.setDate( fileDateISO.getDate() + 180 );
1247
+
1248
+ // Format the date to yyyy-MM-dd
1249
+ const formattedDate = fileDateISO.toISOString().split( 'T' )[0];
1250
+ const param ={
1251
+ Bucket: getSqs?.sqs?.inputBucketName,
1252
+ Key: getSqs?.sqs?.filePath,
1253
+ };
1254
+
1255
+ const img = await getObject( param );
1256
+
1257
+ const formData = new FormData();
1258
+ formData.append( 'storeName', stores?.storeName );
1259
+ formData.append( 'taskName', 'EyeTest QR Verification' );
1260
+ formData.append( 'answerType', 'image' );
1261
+ formData.append( 'question', 'Please upload the QR image pasted in this clinic' );
1262
+ formData.append( 'scheduleDate', formattedDate );
1263
+ formData.append( 'scheduleEndTime', '11:00 PM' );
1264
+
1265
+ formData.append( 'referenceImage', img.Body );
1266
+ const response = await axios.post( `${url.apiDomain}/v3/task/eyeTesttask`, formData, { headers: {
1267
+ ...formData.getHeaders(),
1268
+ 'Authorization': 'Bearer d47433f8-9a33-47c7-ba43-1a0fbac28f55' },
1269
+ } );
1270
+ if ( response?.data?.code == 200 ) {
1271
+ let eyeTestQuery ={
1272
+ _id: inputData.auditId,
1273
+ storeId: inputData.storeId,
1274
+ fileDate: inputData.fileDate,
1275
+ streamName: inputData.streamName,
1276
+ moduleType: inputData.moduleType,
1277
+ };
1278
+ let eyeTestUpdate={
1279
+ auditStatus: 'completed',
1280
+ answer: inputData.answer,
1281
+ userComments: inputData.userComments || '',
1282
+ endTime: new Date(),
1283
+ timeSpent: timeDifferenceInMinutes,
1284
+ };
1285
+ let updatDataEyeTest= await updateOneBinaryAuditModel( eyeTestQuery, eyeTestUpdate );
1286
+ if ( updatDataEyeTest.modifiedCount==0 ) {
1287
+ return res.sendError( 'Update failed, it may be invalid request', 400 );
1288
+ }
1289
+ return res.sendSuccess( `Successfully updated in ${value}` );
1290
+ } else {
1291
+ return res.sendError( 'Task creation failed', 500 );
1292
+ }
1293
+ } else {
1294
+ let eyeTestQuery ={
1295
+ _id: inputData.auditId,
1296
+ storeId: inputData.storeId,
1297
+ fileDate: inputData.fileDate,
1298
+ streamName: inputData.streamName,
1299
+ moduleType: inputData.moduleType,
1300
+ };
1301
+ let eyeTestUpdate={
1302
+ auditStatus: 'completed',
1303
+ answer: inputData.answer,
1304
+ userComments: inputData.userComments || '',
1305
+ endTime: new Date(),
1306
+ timeSpent: timeDifferenceInMinutes,
1307
+ };
1308
+ let updatDataEyeTest= await updateOneBinaryAuditModel( eyeTestQuery, eyeTestUpdate );
1309
+ if ( updatDataEyeTest.modifiedCount==0 ) {
1310
+ return res.sendError( 'Update failed, it may be invalid request', 400 );
1311
+ }
1312
+ return res.sendSuccess( `Successfully updated in ${value}` );
1249
1313
  }
1250
- return res.sendSuccess( `Successfully updated in ${value}` );
1314
+
1251
1315
 
1252
1316
  default:
1253
1317
  res.sendError( 'No Data', 204 );
1254
1318
  break;
1255
1319
  }
1256
1320
  } catch ( error ) {
1257
- const err = error.mesage || 'Internal Server Error';
1321
+ const err = error.mesage || error.response?.data || error.response?.status ||'Internal Server Error';
1258
1322
  logger.error( { error: error, data: req.body, function: 'saveBinary' } );
1259
1323
  return res.sendError( err, 500 );
1260
1324
  }