tango-app-api-store-builder 1.0.0-beta-126 → 1.0.0-beta-127
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
|
@@ -220,6 +220,142 @@ export async function getplanoFeedback( req, res ) {
|
|
|
220
220
|
{
|
|
221
221
|
$unwind: { path: '$FixtureData', preserveNullAndEmptyArrays: true },
|
|
222
222
|
},
|
|
223
|
+
{
|
|
224
|
+
$unwind: { path: '$FixtureData.vmConfig', preserveNullAndEmptyArrays: true },
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
$lookup: {
|
|
228
|
+
from: 'planovmdetails',
|
|
229
|
+
let: { 'vmId': '$FixtureData.vmConfig.vmId' },
|
|
230
|
+
pipeline: [
|
|
231
|
+
{
|
|
232
|
+
$match: {
|
|
233
|
+
$expr: {
|
|
234
|
+
$and: [
|
|
235
|
+
{ $eq: [ '$_id', '$$vmId' ] },
|
|
236
|
+
],
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
$project: {
|
|
242
|
+
vmName: 1,
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
as: 'vmDetails',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
$unwind: { path: '$vmDetails', preserveNullAndEmptyArrays: true },
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
$project: {
|
|
254
|
+
'_id': 1,
|
|
255
|
+
'answers': 1,
|
|
256
|
+
'createdAt': 1,
|
|
257
|
+
'date_iso': 1,
|
|
258
|
+
'date_string': 1,
|
|
259
|
+
'fixtureId': 1,
|
|
260
|
+
'floorId': 1,
|
|
261
|
+
'planoId': 1,
|
|
262
|
+
'status': 1,
|
|
263
|
+
'taskType': 1,
|
|
264
|
+
'FixtureData': 1,
|
|
265
|
+
'FixtureData': {
|
|
266
|
+
_id: '$FixtureData._id',
|
|
267
|
+
clientId: '$FixtureData.clientId',
|
|
268
|
+
clientId: '$FixtureData.clientId',
|
|
269
|
+
fixtureCapacity: '$FixtureData.fixtureCapacity',
|
|
270
|
+
fixtureCategory: '$FixtureData.fixtureCategory',
|
|
271
|
+
fixtureLength: '$FixtureData.fixtureLength',
|
|
272
|
+
fixtureLibraryId: '$FixtureData.fixtureLibraryId',
|
|
273
|
+
fixtureName: '$FixtureData.fixtureName',
|
|
274
|
+
fixtureStaticLength: '$FixtureData.fixtureStaticLength',
|
|
275
|
+
fixtureStaticWidth: '$FixtureData.fixtureStaticWidth',
|
|
276
|
+
fixtureType: '$FixtureData.fixtureType',
|
|
277
|
+
fixtureWidth: '$FixtureData.fixtureWidth',
|
|
278
|
+
footer: '$FixtureData.footer',
|
|
279
|
+
header: '$FixtureData.header',
|
|
280
|
+
isBodyEnabled: '$FixtureData.isBodyEnabled',
|
|
281
|
+
productBrandName: '$FixtureData.productBrandName',
|
|
282
|
+
productCategory: '$FixtureData.productCategory',
|
|
283
|
+
productResolutionLevel: '$FixtureData.productResolutionLevel',
|
|
284
|
+
productSubCategory: '$FixtureData.productSubCategory',
|
|
285
|
+
shelfConfig: '$FixtureData.shelfConfig',
|
|
286
|
+
status: '$FixtureData.status',
|
|
287
|
+
templateIndex: '$FixtureData.templateIndex',
|
|
288
|
+
shelfConfig: '$FixtureData.shelfConfig',
|
|
289
|
+
vmConfig: {
|
|
290
|
+
vmName: '$vmDetails.vmName',
|
|
291
|
+
endYPosition: '$FixtureData.vmConfig.endYPosition',
|
|
292
|
+
startYPosition: '$FixtureData.vmConfig.startYPosition',
|
|
293
|
+
vmId: '$FixtureData.vmConfig.vmId',
|
|
294
|
+
xZone: '$FixtureData.vmConfig.xZone',
|
|
295
|
+
yZone: '$FixtureData.vmConfig.yZone',
|
|
296
|
+
position: '$FixtureData.vmConfig.position',
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
|
|
302
|
+
{
|
|
303
|
+
$group: {
|
|
304
|
+
_id: '$_id',
|
|
305
|
+
answers: { $first: '$answers' },
|
|
306
|
+
createdAt: { $first: '$createdAt' },
|
|
307
|
+
date_iso: { $first: '$date_iso' },
|
|
308
|
+
date_string: { $first: '$date_string' },
|
|
309
|
+
fixtureId: { $first: '$fixtureId' },
|
|
310
|
+
floorId: { $first: '$floorId' },
|
|
311
|
+
planoId: { $first: '$planoId' },
|
|
312
|
+
status: { $first: '$status' },
|
|
313
|
+
taskType: { $first: '$taskType' },
|
|
314
|
+
baseFixtureData: { $first: '$FixtureData' },
|
|
315
|
+
collectedVmConfigs: {
|
|
316
|
+
$push: '$FixtureData.vmConfig',
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
$project: {
|
|
322
|
+
_id: 1,
|
|
323
|
+
answers: 1,
|
|
324
|
+
createdAt: 1,
|
|
325
|
+
date_iso: 1,
|
|
326
|
+
date_string: 1,
|
|
327
|
+
fixtureId: 1,
|
|
328
|
+
floorId: 1,
|
|
329
|
+
planoId: 1,
|
|
330
|
+
status: 1,
|
|
331
|
+
taskType: 1,
|
|
332
|
+
FixtureData: {
|
|
333
|
+
$mergeObjects: [
|
|
334
|
+
'$baseFixtureData',
|
|
335
|
+
{
|
|
336
|
+
vmConfig: {
|
|
337
|
+
$reduce: {
|
|
338
|
+
input: '$collectedVmConfigs',
|
|
339
|
+
initialValue: [],
|
|
340
|
+
in: {
|
|
341
|
+
$cond: [
|
|
342
|
+
{ $isArray: '$$this' },
|
|
343
|
+
{ $concatArrays: [ '$$value', '$$this' ] },
|
|
344
|
+
{ $concatArrays: [ '$$value', [ '$$this' ] ] },
|
|
345
|
+
],
|
|
346
|
+
},
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
],
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
$sort: { _id: -1 },
|
|
356
|
+
},
|
|
357
|
+
|
|
358
|
+
|
|
223
359
|
);
|
|
224
360
|
|
|
225
361
|
|
|
@@ -217,10 +217,10 @@ export async function getFixture( req, res ) {
|
|
|
217
217
|
if ( fixtureDetails ) {
|
|
218
218
|
let planoStatus = await planoService.findOne( { planoId: fixtureDetails.planoId }, { status: 1 } );
|
|
219
219
|
if ( planoStatus ) {
|
|
220
|
-
fixtureLibDetails.status = planoStatus.status == 'complete' ? '
|
|
220
|
+
fixtureLibDetails.status = planoStatus.status == 'complete' ? 'active' :'inactive';
|
|
221
221
|
}
|
|
222
222
|
} else {
|
|
223
|
-
fixtureLibDetails.status = fixtureLibDetails.status == 'draft' ? '
|
|
223
|
+
fixtureLibDetails.status = fixtureLibDetails.status == 'draft' ? 'draft' : 'inactive';
|
|
224
224
|
}
|
|
225
225
|
fixtureLibDetails = {
|
|
226
226
|
...fixtureLibDetails.toObject(),
|
|
@@ -3205,6 +3205,42 @@ export async function planoList( req, res ) {
|
|
|
3205
3205
|
let limit = inputData?.limit || 10;
|
|
3206
3206
|
let page = inputData?.offset - 1 || 0;
|
|
3207
3207
|
let skip = limit * page;
|
|
3208
|
+
let planoList = await planoService.find( { clientId: req.body.clientId }, { _id: 1 } );
|
|
3209
|
+
let idList = planoList?.map( ( ele ) => new mongoose.Types.ObjectId( ele._id ) );
|
|
3210
|
+
let taskQuery = [
|
|
3211
|
+
{
|
|
3212
|
+
$match: {
|
|
3213
|
+
planoId: { $in: idList },
|
|
3214
|
+
isPlano: true,
|
|
3215
|
+
date_iso: { $lte: new Date( dayjs().format( 'YYYY-MM-DD' ) ) },
|
|
3216
|
+
},
|
|
3217
|
+
},
|
|
3218
|
+
{
|
|
3219
|
+
$group: {
|
|
3220
|
+
_id: { store: '$storeName', type: '$planoType' },
|
|
3221
|
+
planoId: { $last: '$planoId' },
|
|
3222
|
+
checklistStatus: { $last: '$checklistStatus' },
|
|
3223
|
+
taskId: { $last: '$_id' },
|
|
3224
|
+
},
|
|
3225
|
+
},
|
|
3226
|
+
{
|
|
3227
|
+
$match: {
|
|
3228
|
+
checklistStatus: 'submit',
|
|
3229
|
+
},
|
|
3230
|
+
},
|
|
3231
|
+
{
|
|
3232
|
+
$project: {
|
|
3233
|
+
_id: 0,
|
|
3234
|
+
type: '$_id.type',
|
|
3235
|
+
planoId: 1,
|
|
3236
|
+
checklistStatus: 1,
|
|
3237
|
+
taskId: 1,
|
|
3238
|
+
},
|
|
3239
|
+
},
|
|
3240
|
+
];
|
|
3241
|
+
|
|
3242
|
+
let pendingDetails = await planotaskService.aggregate( taskQuery );
|
|
3243
|
+
console.log( pendingDetails );
|
|
3208
3244
|
let query = [
|
|
3209
3245
|
{
|
|
3210
3246
|
$match: {
|
|
@@ -3302,23 +3338,21 @@ export async function planoList( req, res ) {
|
|
|
3302
3338
|
as: 'planoTask',
|
|
3303
3339
|
},
|
|
3304
3340
|
},
|
|
3305
|
-
{
|
|
3306
|
-
$addFields: {
|
|
3307
|
-
taskIds: { $ifNull: [ { $arrayElemAt: [ '$planoTask.taskIds', 0 ] }, [] ] },
|
|
3308
|
-
taskStatus: { $ifNull: [ { $arrayElemAt: [ '$planoTask.taskStatus', 0 ] }, [] ] },
|
|
3309
|
-
},
|
|
3310
|
-
},
|
|
3311
3341
|
{
|
|
3312
3342
|
$lookup: {
|
|
3313
3343
|
from: 'planotaskcompliances',
|
|
3314
|
-
let: {
|
|
3344
|
+
let: {
|
|
3345
|
+
plano: '$_id',
|
|
3346
|
+
task: { $ifNull: [ '$taskIds', [] ] },
|
|
3347
|
+
},
|
|
3315
3348
|
pipeline: [
|
|
3316
3349
|
{
|
|
3317
3350
|
$match: {
|
|
3318
3351
|
$expr: {
|
|
3319
3352
|
$and: [
|
|
3320
3353
|
{ $eq: [ '$planoId', '$$plano' ] },
|
|
3321
|
-
{ $in: [ '$taskId',
|
|
3354
|
+
{ $in: [ '$taskId', pendingDetails.map( ( ele ) => ele.taskId ) ] },
|
|
3355
|
+
{ $eq: [ '$taskType', 'initial' ] },
|
|
3322
3356
|
],
|
|
3323
3357
|
},
|
|
3324
3358
|
},
|
|
@@ -3326,7 +3360,7 @@ export async function planoList( req, res ) {
|
|
|
3326
3360
|
{ $sort: { _id: -1 } },
|
|
3327
3361
|
{
|
|
3328
3362
|
$group: {
|
|
3329
|
-
_id:
|
|
3363
|
+
_id: '$planoId',
|
|
3330
3364
|
layoutCount: {
|
|
3331
3365
|
$sum: {
|
|
3332
3366
|
$cond: {
|
|
@@ -3673,12 +3707,12 @@ export async function planoList( req, res ) {
|
|
|
3673
3707
|
|
|
3674
3708
|
if ( inputData.filter.status.length ) {
|
|
3675
3709
|
if ( inputData.filter.status.includes( 'taskAssigned' ) ) {
|
|
3676
|
-
orQuery.push( { 'planoTask.
|
|
3710
|
+
orQuery.push( { 'planoTask.taskStatus.status': { $in: [ 'open', 'inprogress' ] } } );
|
|
3677
3711
|
}
|
|
3678
3712
|
if ( inputData.filter.status.includes( 'reviewPending' ) ) {
|
|
3679
|
-
orQuery.push( { $and: [ { 'taskDetails.layoutStatus': 'pending' }, { 'planoTask.
|
|
3680
|
-
orQuery.push( { $and: [ { 'taskDetails.fixtureStatus': 'pending' }, { 'planoTask.
|
|
3681
|
-
orQuery.push( { $and: [ { 'taskDetails.vmStatus': 'pending' }, { 'planoTask.
|
|
3713
|
+
orQuery.push( { $and: [ { 'taskDetails.layoutStatus': 'pending' }, { 'planoTask.taskStatus.type': 'layout' }, { 'planoTask.taskStatus.status': 'submit' } ] } );
|
|
3714
|
+
orQuery.push( { $and: [ { 'taskDetails.fixtureStatus': 'pending' }, { 'planoTask.taskStatus.type': 'fixture' }, { 'planoTask.taskStatus.status': 'submit' } ] } );
|
|
3715
|
+
orQuery.push( { $and: [ { 'taskDetails.vmStatus': 'pending' }, { 'planoTask.taskStatus.type': 'vm' }, { 'planoTask.taskStatus.status': 'submit' } ] } );
|
|
3682
3716
|
}
|
|
3683
3717
|
if ( inputData.filter.status.includes( 'complete' ) ) {
|
|
3684
3718
|
orQuery.push( { 'taskDetails.layoutStatus': 'complete' } );
|
|
@@ -3710,53 +3744,17 @@ export async function planoList( req, res ) {
|
|
|
3710
3744
|
},
|
|
3711
3745
|
} );
|
|
3712
3746
|
|
|
3713
|
-
console.log( JSON.stringify( query ) );
|
|
3714
|
-
|
|
3715
3747
|
let planoDetails = await planoService.aggregate( query );
|
|
3716
3748
|
|
|
3717
3749
|
if ( !planoDetails[0].data.length ) {
|
|
3718
3750
|
return res.sendError( 'No data found', 204 );
|
|
3719
3751
|
}
|
|
3720
3752
|
|
|
3721
|
-
let planoList = await planoService.find( { clientId: req.body.clientId }, { _id: 1 } );
|
|
3722
|
-
let idList = planoList?.map( ( ele ) => new mongoose.Types.ObjectId( ele._id ) );
|
|
3723
|
-
let taskQuery = [
|
|
3724
|
-
{
|
|
3725
|
-
$match: {
|
|
3726
|
-
planoId: { $in: idList },
|
|
3727
|
-
isPlano: true,
|
|
3728
|
-
date_iso: { $lte: new Date( dayjs().format( 'YYYY-MM-DD' ) ) },
|
|
3729
|
-
},
|
|
3730
|
-
},
|
|
3731
|
-
{
|
|
3732
|
-
$group: {
|
|
3733
|
-
_id: { store: '$storeName', type: '$planoType' },
|
|
3734
|
-
planoId: { $last: '$planoId' },
|
|
3735
|
-
checklistStatus: { $last: '$checklistStatus' },
|
|
3736
|
-
taskId: { $last: '$_id' },
|
|
3737
|
-
},
|
|
3738
|
-
},
|
|
3739
|
-
{
|
|
3740
|
-
$match: {
|
|
3741
|
-
checklistStatus: 'submit',
|
|
3742
|
-
},
|
|
3743
|
-
},
|
|
3744
|
-
{
|
|
3745
|
-
$project: {
|
|
3746
|
-
_id: 0,
|
|
3747
|
-
type: '$_id.type',
|
|
3748
|
-
planoId: 1,
|
|
3749
|
-
checklistStatus: 1,
|
|
3750
|
-
taskId: 1,
|
|
3751
|
-
},
|
|
3752
|
-
},
|
|
3753
|
-
];
|
|
3754
|
-
|
|
3755
|
-
let pendingDetails = await planotaskService.aggregate( taskQuery );
|
|
3756
3753
|
query = [
|
|
3757
3754
|
{
|
|
3758
3755
|
$match: {
|
|
3759
3756
|
taskId: { $in: pendingDetails.map( ( ele ) => ele.taskId ) },
|
|
3757
|
+
taskType: 'initial',
|
|
3760
3758
|
},
|
|
3761
3759
|
},
|
|
3762
3760
|
{
|
|
@@ -260,7 +260,7 @@ export async function createTask( req, res ) {
|
|
|
260
260
|
let getUserEmail = req.body.stores.find( ( ele ) => ele.store.toLowerCase() == store.storeName.toLowerCase() );
|
|
261
261
|
let planoDetails = await planoService.findOne( { storeName: store.storeName } );
|
|
262
262
|
if ( planoDetails ) {
|
|
263
|
-
let floorDetails = await floorService.find( { planoId: planoDetails._id }, { _id: 1, floorName: 1 } );
|
|
263
|
+
let floorDetails = await floorService.find( { planoId: planoDetails._id, ...( req.body?.floorId ) ? { _id: req.body?.floorId }:{} }, { _id: 1, floorName: 1 } );
|
|
264
264
|
for ( let i=0; i<floorDetails.length; i++ ) {
|
|
265
265
|
if ( getUserEmail ) {
|
|
266
266
|
let query = [
|
|
@@ -291,10 +291,18 @@ export async function createTask( req, res ) {
|
|
|
291
291
|
taskData.userEmail = userDetails.email;
|
|
292
292
|
taskData.planoId = planoDetails?._id;
|
|
293
293
|
for ( let i=0; i<req.body.days; i++ ) {
|
|
294
|
+
let planoProgress = req.body.checkListName == 'Fixture Verification' ? 50 : req.body.checkListName == 'VM Verification' ? 75 : 25;
|
|
295
|
+
if ( req.body?.checkListName && req.body.checkListName == 'Layout Verification' ) {
|
|
296
|
+
let taskIdList = await planoTaskService.find( { planoId: planoDetails?._id, floorId: floorDetails[i]._id } );
|
|
297
|
+
taskIdList = taskIdList.map( ( ele ) => ele.taskId );
|
|
298
|
+
await planoTaskService.deleteMany( { planoId: planoDetails?._id, floorId: floorDetails[i]._id } );
|
|
299
|
+
planoProgress = 25;
|
|
300
|
+
await processedService.deleteMany( { _id: taskIdList } );
|
|
301
|
+
}
|
|
302
|
+
await planoService.updateOne( { _id: planoDetails?._id }, { $set: { planoProgress } } );
|
|
294
303
|
let currDate = dayjs().add( i, 'day' );
|
|
295
304
|
let insertData = { ...taskData, date_string: currDate.format( 'YYYY-MM-DD' ), date_iso: new Date( currDate.format( 'YYYY-MM-DD' ) ), scheduleStartTime_iso: dayjs.utc( `${currDate.format( 'YYYY-MM-DD' )} 12:00 AM`, 'YYYY-MM-DD hh:mm A' ).format() };
|
|
296
|
-
|
|
297
|
-
console.log( response );
|
|
305
|
+
await processedService.updateOne( { date_string: currDate.format( 'YYYY-MM-DD' ), store_id: insertData.store_id, userEmail: insertData.userEmail, planoId: insertData.planoId, sourceCheckList_id: task._id, ...( taskData?.floorId ) ? { floorId: taskData.floorId }:{} }, insertData );
|
|
298
306
|
}
|
|
299
307
|
}
|
|
300
308
|
}
|