tango-app-api-store-builder 1.0.0-beta-9 → 1.0.0-beta-10

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-store-builder",
3
- "version": "1.0.0-beta-9",
3
+ "version": "1.0.0-beta-10",
4
4
  "description": "storeBuilder",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -413,62 +413,86 @@ export async function storeLayout( req, res ) {
413
413
  return res.sendError( 'No data found', 204 );
414
414
  }
415
415
  let fixtureDetails = await storeFixtureService.find( { planoId: { $in: idList } } );
416
- for ( let layout of getStoreList ) {
417
- for ( let floor of layout.floor ) {
418
- for ( let polygon of floor.layoutPolygon ) {
419
- let polygonfixtureDetails = fixtureDetails.filter( ( ele ) => layout.planoId.toString() == ele.planoId.toString() && ele.floorId.toString() == floor.id.toString() && ele.associatedElementType == polygon.elementType && ele.associatedElementNumber == polygon.elementNumber );
420
- let fixtures = [];
421
- for ( let fixture of polygonfixtureDetails ) {
422
- let data = { ...fixture._doc, status: '' };
423
- let query = [
424
- {
425
- $match: {
426
- fixtureId: fixture._id,
427
- },
428
- },
429
- {
430
- $group: {
431
- _id: '',
432
- count: { $sum: '$shelfCapacity' },
433
- fixtureId: { $first: '$fixtureId' },
416
+ let fixtureList = fixtureDetails.map( ( ele ) => ele._id );
417
+ let fixtureQuery = [
418
+ {
419
+ $match: {
420
+ fixtureId: { $in: fixtureList },
421
+ },
422
+ },
423
+ {
424
+ $group: {
425
+ _id: '$fixtureId',
426
+ count: { $sum: '$shelfCapacity' },
427
+ fixtureId: { $first: '$fixtureId' },
428
+ },
429
+ },
430
+ {
431
+ $lookup: {
432
+ from: 'planocompliances',
433
+ let: { 'id': '$fixtureId' },
434
+ pipeline: [
435
+ {
436
+ $match: {
437
+ $expr: {
438
+ $and: [
439
+ { date: new Date( dayjs().format( 'YYYY-MM-DD' ) ) },
440
+ { $eq: [ '$fixtureId', '$$id' ] },
441
+ ],
434
442
  },
435
443
  },
436
- {
437
- $lookup: {
438
- from: 'planocompliances',
439
- let: { 'id': '$fixtureId' },
440
- pipeline: [
444
+ },
445
+ {
446
+ $group: {
447
+ _id: '$fixtureId',
448
+ properCount: { $sum: {
449
+ $cond: [
441
450
  {
442
- $match: {
443
- $expr: {
444
- $and: [
445
- { date: new Date( dayjs().format( 'YYYY-MM-DD' ) ) },
446
- { $eq: [ '$fixtureId', '$$id' ] },
447
- { $eq: [ '$compliance', 'proper' ] },
448
- ],
449
- },
450
- },
451
- },
451
+ $and: [
452
+ { $eq: [ '$compliance', 'proper' ] },
453
+ ],
454
+ }, 1, 0 ],
455
+ } },
456
+ misPlacedCount: { $sum: {
457
+ $cond: [
452
458
  {
453
- $group: {
454
- _id: '',
455
- count: { $sum: 1 },
456
- },
457
- },
458
- ],
459
- as: 'planoCompliance',
460
- },
459
+ $and: [
460
+ { $ne: [ '$compliance', 'proper' ] },
461
+ ],
462
+ }, 1, 0 ],
463
+ } },
461
464
  },
462
- ];
463
- let fixtureDetails = await fixtureShelfService.aggregate( query );
464
- if ( fixtureDetails.length ) {
465
- data.status = fixtureDetails[0]?.planoCompliance?.length ? fixtureDetails[0].count == fixtureDetails[0]?.planoCompliance?.count ? 'complete' : 'incomplete' : '';
465
+ },
466
+ ],
467
+ as: 'planoCompliance',
468
+ },
469
+ },
470
+ ];
471
+ let fixtureStatus = await fixtureShelfService.aggregate( fixtureQuery );
472
+ for ( let layout of getStoreList ) {
473
+ for ( let floor of layout.floor ) {
474
+ for ( let polygon of floor.layoutPolygon ) {
475
+ let polygonfixtureDetails = fixtureDetails.filter( ( ele ) => layout.planoId.toString() == ele.planoId.toString() && ele.floorId.toString() == floor.id.toString() && ele.associatedElementType == polygon.elementType && ele.associatedElementNumber == polygon.elementNumber );
476
+ polygonfixtureDetails.forEach( ( fixtureEle, index ) => {
477
+ let updateFixture = { ...fixtureEle._doc, status: '' };
478
+ let getFixtureStatus = fixtureStatus.find( ( statusElem ) => statusElem.fixtureId.toString() == fixtureEle._id.toString() );
479
+ if ( getFixtureStatus && getFixtureStatus?.planoCompliance?.length ) {
480
+ updateFixture.status = getFixtureStatus.count == getFixtureStatus?.planoCompliance?.properCount ? 'complete' : 'incomplete';
466
481
  }
467
- fixtures.push( data );
468
- }
469
- polygon.fixture = fixtures;
482
+ polygonfixtureDetails[index] = updateFixture;
483
+ } );
484
+
485
+ polygon.fixture = polygonfixtureDetails;
470
486
  }
471
487
  floor.centerFixture = fixtureDetails.filter( ( ele ) => layout.planoId.toString() == ele.planoId.toString() && ele.floorId.toString() == floor.id.toString() && ele.fixtureType == 'floor' );
488
+ floor.centerFixture.forEach( ( centerFixture, index ) => {
489
+ let centerList = { ...centerFixture._doc, status: '' };
490
+ let getFixtureStatus = fixtureStatus.find( ( statusElem ) => statusElem.fixtureId.toString() == centerFixture._id.toString() );
491
+ if ( getFixtureStatus && getFixtureStatus?.planoCompliance?.length ) {
492
+ centerList.status = getFixtureStatus.count == getFixtureStatus?.planoCompliance?.properCount ? 'complete' : 'incomplete';
493
+ }
494
+ floor.centerFixture[index] = centerList;
495
+ } );
472
496
  }
473
497
  }
474
498
  return res.sendSuccess( { FloorDetails: getStoreList, productResolutionLevel: getPlanoDetails?.productResolutionLevel || '', productResolutionFilters: getPlanoDetails?.productResolutionFilters || [] } );
@@ -705,7 +729,6 @@ export async function scan( req, res ) {
705
729
  break;
706
730
  }
707
731
  query = { ...query, rfId: req.body.rfId };
708
- console.log( query );
709
732
 
710
733
  let planoProductDetails = await planoMappingService.findOne( query );
711
734
  let data = {