tango-app-api-task 3.2.1-beta-34 → 3.2.1-beta-36

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-task",
3
- "version": "3.2.1-beta-34",
3
+ "version": "3.2.1-beta-36",
4
4
  "description": "Task",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -518,8 +518,8 @@ export const validateUserv1 = async ( req, res ) => {
518
518
  }
519
519
  }
520
520
 
521
- let userEmailList = assignDetails.map( ( item ) => item.userEmail.toLowerCase() );
522
- let storeList = assignDetails.map( ( item ) => item?.storeName?.toLowerCase() );
521
+ let userEmailList = assignDetails.map( ( item ) => item.userEmail?.trim()?.toLowerCase() );
522
+ let storeList = assignDetails.map( ( item ) => item?.storeName?.trim()?.toLowerCase() );
523
523
 
524
524
  let userQuery = [
525
525
  {
@@ -528,6 +528,7 @@ export const validateUserv1 = async ( req, res ) => {
528
528
  isActive: 1,
529
529
  clientId: 1,
530
530
  userName: 1,
531
+ email: 1,
531
532
  },
532
533
  },
533
534
  {
@@ -559,17 +560,19 @@ export const validateUserv1 = async ( req, res ) => {
559
560
  let storeQuery = [
560
561
  {
561
562
  $project: {
562
- 'storeName': { $toLower: '$storeName' },
563
+ 'store': { $toLower: '$storeName' },
563
564
  'clientId': 1,
564
565
  'storeProfile.city': 1,
565
566
  'status': 1,
566
567
  'storeId': 1,
568
+ 'spocDetails': 1,
569
+ 'storeName': 1,
567
570
  },
568
571
  },
569
572
  {
570
573
  $match: {
571
574
  clientId: req.body.clientId,
572
- storeName: { $in: storeList },
575
+ store: { $in: storeList },
573
576
  },
574
577
  },
575
578
  ];
@@ -585,14 +588,18 @@ export const validateUserv1 = async ( req, res ) => {
585
588
  let newUserList = userEmailList.filter( ( ele ) => !existUserEmail.includes( ele ) && !existEmail.includes( ele ) );
586
589
  let inActiveStores = storeDetails.filter( ( ele ) => ele.status == 'deactive' ).map( ( ele ) => ele.storeName );
587
590
 
588
- let existsStore = storeDetails.map( ( ele ) => ele?.storeName );
591
+ let existsStore = storeDetails.map( ( ele ) => ele.storeName.toLowerCase() );
589
592
  let newStoreList = storeList.filter( ( ele ) => ele != null && !existsStore.includes( ele.toLowerCase() ) );
590
593
  if ( req.body.coverage == 'store' ) {
591
594
  assignDetails.forEach( ( item ) => {
592
- let getStoreId = storeDetails.find( ( store ) => store.storeName.toLowerCase() == item.storeName.toLowerCase() );
593
- if ( getStoreId ) {
594
- item._id = getStoreId._id;
595
- item.storeId = getStoreId.storeId;
595
+ let getStoreDetails = storeDetails.find( ( store ) => store.storeName.toLowerCase() == item.storeName.toLowerCase() );
596
+ if ( getStoreDetails ) {
597
+ let storeUserDetails = userDetails.find( ( ele ) => ele.newEmail.toLowerCase() == item.userEmail.toLowerCase() );
598
+ item._id = getStoreDetails._id;
599
+ item.storeId = getStoreDetails.storeId;
600
+ item.userName = storeUserDetails ? storeUserDetails?.userName : item?.userName;
601
+ item.storeName = getStoreDetails.storeName;
602
+ item.userEmail = storeUserDetails ? storeUserDetails?.email : item.userEmail;
596
603
  }
597
604
  } );
598
605
  } else {
@@ -601,6 +608,7 @@ export const validateUserv1 = async ( req, res ) => {
601
608
  if ( getUserDetails ) {
602
609
  item._id = getUserDetails._id;
603
610
  item.userName = getUserDetails.userName;
611
+ item.userEmail = getUserDetails.email;
604
612
  }
605
613
  } );
606
614
  }
@@ -608,21 +616,21 @@ export const validateUserv1 = async ( req, res ) => {
608
616
  if ( ( newUserList.length || newStoreList.length || existEmail.length || inActiveStores.length ) && !req.body?.addUser ) {
609
617
  return res.sendError( { validate: false, user: newUserList, store: newStoreList, existEmail, inActiveStores, data: assignDetails }, 400 );
610
618
  }
611
- if ( req.body.coverage == 'user' ) {
612
- await Promise.all( newUserList.map( async ( ele ) => {
613
- let findUserIndex = assignDetails.findIndex( ( item ) => item?.userEmail?.toLowerCase() == ele?.toLowerCase() );
614
- if ( findUserIndex != -1 ) {
615
- let data = {
616
- userName: assignDetails[findUserIndex]?.userName,
617
- email: ele,
618
- mobileNumber: assignDetails[findUserIndex]?.mobileNumber,
619
- clientId: req.body.clientId,
620
- };
621
- let response = await createUser( data );
619
+ await Promise.all( newUserList.map( async ( ele ) => {
620
+ let findUserIndex = assignDetails.findIndex( ( item ) => item?.userEmail?.toLowerCase() == ele?.toLowerCase() );
621
+ if ( findUserIndex != -1 ) {
622
+ let data = {
623
+ userName: assignDetails[findUserIndex]?.userName,
624
+ email: ele,
625
+ mobileNumber: assignDetails[findUserIndex]?.mobileNumber,
626
+ clientId: req.body.clientId,
627
+ };
628
+ let response = await createUser( data );
629
+ if ( req.body.coverage == 'user' ) {
622
630
  assignDetails[findUserIndex]._id = response._id;
623
631
  }
624
- } ) );
625
- }
632
+ }
633
+ } ) );
626
634
  return res.sendSuccess( { validate: true, data: assignDetails } );
627
635
  } catch ( e ) {
628
636
  logger.error( 'validateUser 2=>', e );
@@ -779,7 +787,7 @@ export async function userDetails( req, res ) {
779
787
  let storeDetails = await storeService.find( { _id: { $in: clusterDetails.stores.map( ( item ) => item.store ) }, status: 'active' } );
780
788
  storeDetails.forEach( ( item ) => {
781
789
  userDetails.push( {
782
- _id: ele.assignId,
790
+ id: ele.assignId,
783
791
  userName: item.spocDetails?.[0]?.name,
784
792
  userEmail: item.spocDetails?.[0]?.email,
785
793
  storeId: item?.storeId,
@@ -798,7 +806,7 @@ export async function userDetails( req, res ) {
798
806
  let teamUserDetails = await userService.find( { _id: { $in: teamDetails.users.map( ( item ) => item.userId ) } } );
799
807
  teamUserDetails.forEach( ( item ) => {
800
808
  userDetails.push( {
801
- _id: ele.assignId,
809
+ id: ele.assignId,
802
810
  userName: item.userName,
803
811
  userEmail: item.email,
804
812
  storeId: ele?.storeId,
@@ -883,7 +891,6 @@ export async function taskConfig( req, res ) {
883
891
  let endDate = dayjs.utc( configDetails?.scheduleDate ).format( 'YYYY-MM-DD' ) + ' ' + configDetails.scheduleEndTime;
884
892
  configDetails.scheduleEndTimeISO = dayjs.utc( endDate, 'YYYY-MM-DD hh:mm A' ).format();
885
893
  configDetails.publishDate = dayjs.utc( dayjs().format( 'hh:mm A' ), 'hh:mm A' ).format();
886
- configDetails.storeCount = inputBody?.assignedUsers?.length || 0;
887
894
 
888
895
  let response = await taskService.updateOne( { _id: inputBody._id }, configDetails );
889
896
  if ( inputBody?.approver.length ) {
@@ -1084,12 +1091,11 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1084
1091
  let getquestionQuery = [];
1085
1092
  if ( dayjs( getCLconfig.publishDate ).format( 'YYYY-MM-DD' ) != dayjs( date ).format( 'YYYY-MM-DD' ) ) {
1086
1093
  let todayDate = `${dayjs( date ).format( 'YYYY-MM-DD' )} 00:00 AM`;
1087
- startTimeIso = dayjs( todayDate, 'YYYY-MM-DD HH:mm A' );
1094
+ startTimeIso = dayjs.utc( todayDate, 'YYYY-MM-DD HH:mm A' );
1088
1095
  }
1089
1096
  getquestionQuery.push( {
1090
1097
  $match: {
1091
1098
  checkListId: new ObjectId( checklistId ),
1092
- checkFlag: true,
1093
1099
  isdeleted: false,
1094
1100
  },
1095
1101
  } );
@@ -1108,9 +1114,35 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1108
1114
  let idList = clusterDetails.flatMap( ( item ) => item.stores.map( ( ele ) => ele.store ) );
1109
1115
  let getStoreDetails = await storeService.find( { _id: { $in: idList }, status: 'active' } );
1110
1116
  if ( getStoreDetails.length ) {
1117
+ getStoreDetails = getStoreDetails.filter( ( store ) => {
1118
+ let findStore = allQuestion.find( ( storeList ) => storeList.assignId.toString() == store._id.toString() );
1119
+ if ( findStore ) {
1120
+ return store?.spocDetails?.[0]?.email.toLowerCase() != findStore.userEmail.toLowerCase();
1121
+ } else {
1122
+ return true;
1123
+ }
1124
+ } );
1111
1125
  assignList = await Promise.all( getStoreDetails.map( async ( store ) => {
1112
- let userDetails = await userService.findOne( { email: store?.spocDetails?.[0]?.email, clientId: store.clientId } );
1113
- if ( !userDetails ) {
1126
+ let userQuery = [
1127
+ {
1128
+ $project: {
1129
+ newEmail: { $toLower: '$email' },
1130
+ isActive: 1,
1131
+ clientId: 1,
1132
+ userName: 1,
1133
+ email: 1,
1134
+ },
1135
+ },
1136
+ {
1137
+ $match: {
1138
+ newEmail: store?.spocDetails?.[0]?.email.toLowerCase(),
1139
+ isActive: true,
1140
+ clientId: store.clientId,
1141
+ },
1142
+ },
1143
+ ];
1144
+ let userDetails = await userService.aggregate( userQuery );
1145
+ if ( !userDetails.length ) {
1114
1146
  let data = {
1115
1147
  clientId: store.clientId,
1116
1148
  userName: store.spocDetails?.[0]?.name,
@@ -1118,14 +1150,15 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1118
1150
  email: store.spocDetails[0].email,
1119
1151
  };
1120
1152
  userDetails = await createUser( data );
1153
+ userDetails = [ userDetails ];
1121
1154
  }
1122
1155
  let data = {
1123
1156
  store_id: store?.storeId,
1124
1157
  storeName: store?.storeName,
1125
- userId: userDetails._id,
1126
- userName: userDetails.userName,
1127
- userEmail: userDetails.email,
1128
- userPhone: userDetails?.mobileNumber,
1158
+ userId: userDetails?.[0]?._id,
1159
+ userName: userDetails?.[0]?.userName,
1160
+ userEmail: userDetails?.[0]?.email,
1161
+ userPhone: userDetails?.[0]?.mobileNumber,
1129
1162
  city: store?.storeProfile?.city,
1130
1163
  country: store?.storeProfile?.country,
1131
1164
  checkFlag: true,
@@ -1146,6 +1179,8 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1146
1179
  let teamDetails = await teamsServices.findteams( { _id: { $in: teamsList } } );
1147
1180
  if ( teamDetails.length ) {
1148
1181
  let idList = teamDetails.flatMap( ( item ) => item.users.map( ( ele ) => ele.userId ) );
1182
+ let userIdList = allQuestion.filter( ( qn ) => !qn?.teamName ).map( ( qn ) => qn.assignId.toString() );
1183
+ idList = idList.filter( ( id ) => !userIdList.includes( id.toString() ) );
1149
1184
  let getUserDetails = await userService.find( { _id: { $in: idList } } );
1150
1185
  if ( getUserDetails.length ) {
1151
1186
  assignList = getUserDetails.map( ( user ) => {
@@ -1221,10 +1256,10 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1221
1256
  }
1222
1257
  } ) );
1223
1258
  if ( userIdList.length ) {
1224
- allQuestion = allQuestion.filter( ( item ) => typeof item._id == 'undefined' );
1259
+ assignUserList = assignUserList.filter( ( item ) => typeof item._id == 'undefined' );
1225
1260
  }
1226
1261
 
1227
- if ( allQuestion ) {
1262
+ if ( assignUserList ) {
1228
1263
  let assigndeletequery = {
1229
1264
  date_iso: date,
1230
1265
  client_id: insertdata.client_id,
@@ -1247,7 +1282,7 @@ async function insertPCBulkV3( getCLconfig, checklistId, updatedchecklist, date,
1247
1282
 
1248
1283
  const taskToRetain = await taskProcessedService.find( retainTaskQuery );
1249
1284
 
1250
- const insertList = allQuestion.filter( ( item2 ) =>
1285
+ const insertList = assignUserList.filter( ( item2 ) =>
1251
1286
  !taskToRetain.some( ( item1 ) =>
1252
1287
  item1.store_id === item2.store_id && item1.userEmail === item2.userEmail,
1253
1288
  ),
@@ -3637,9 +3672,9 @@ export async function taskAssign( req, res ) {
3637
3672
 
3638
3673
  export async function updateAssign( req, res ) {
3639
3674
  try {
3640
- if ( !req.body.assignedList.length && !req.body.assignedGroup.length ) {
3641
- return res.sendError( 'No data found', 204 );
3642
- }
3675
+ // if ( !req.body.assignedList.length && !req.body.assignedGroup.length ) {
3676
+ // return res.sendError( 'No data found', 204 );
3677
+ // }
3643
3678
  let taskDetails = await taskService.findOne( { _id: req.body.taskId, client_id: req.body.clientId } );
3644
3679
  if ( !taskDetails ) {
3645
3680
  return res.sendError( 'No data found', 204 );
@@ -9,7 +9,7 @@ taskRouter
9
9
  .post( '/create', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isAdd' ] } ] } ), taskController.createUpdateTask )
10
10
  .post( '/delete/:taskIds', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.deleteTask )
11
11
  .get( '/details', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [] } ] } ), taskController.taskDetails )
12
- .get( '/userDetails', isAllowedSessionHandler, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [] } ] } ), taskController.userDetails )
12
+ .get( '/userDetails', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [] } ] } ), taskController.userDetails )
13
13
  .post( '/upload', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.validateUserv1 )
14
14
  .post( '/uploadImage', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.uploadImage )
15
15
  .post( '/config', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.taskConfig )