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
|
@@ -518,8 +518,8 @@ export const validateUserv1 = async ( req, res ) => {
|
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
-
let userEmailList = assignDetails.map( ( item ) => item.userEmail
|
|
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
|
-
'
|
|
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
|
-
|
|
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
|
|
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
|
|
593
|
-
if (
|
|
594
|
-
|
|
595
|
-
item.
|
|
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
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1113
|
-
|
|
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
|
|
1126
|
-
userName: userDetails
|
|
1127
|
-
userEmail: userDetails
|
|
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
|
-
|
|
1259
|
+
assignUserList = assignUserList.filter( ( item ) => typeof item._id == 'undefined' );
|
|
1225
1260
|
}
|
|
1226
1261
|
|
|
1227
|
-
if (
|
|
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 =
|
|
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
|
-
|
|
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 )
|