tango-app-api-store-builder 1.0.0-beta-108 → 1.0.0-beta-109
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 +47 -48
- package/src/controllers/fixtureTemplate.controller.js +15 -3
- package/src/controllers/managePlano.controller.js +9 -97
- package/src/controllers/planoLibrary.controller.js +101 -15
- package/src/controllers/script.controller.js +115 -175
- package/src/controllers/storeBuilder.controller.js +2 -2
- package/src/controllers/task.controller.js +63 -28
- package/src/dtos/validation.dtos.js +12 -4
- package/src/routes/planoLibrary.routes.js +1 -1
- package/src/service/fixtureConfig.service.js +1 -7
|
@@ -20,6 +20,7 @@ import mongoose from 'mongoose';
|
|
|
20
20
|
import JSZip from 'jszip';
|
|
21
21
|
import { signedUrl } from 'tango-app-api-middleware';
|
|
22
22
|
import fs from 'fs';
|
|
23
|
+
// import https from 'https';
|
|
23
24
|
import os from 'os';
|
|
24
25
|
import { fileURLToPath } from 'url';
|
|
25
26
|
import path from 'path';
|
|
@@ -2320,11 +2321,11 @@ export async function updateVmData( req, res ) {
|
|
|
2320
2321
|
}
|
|
2321
2322
|
}
|
|
2322
2323
|
|
|
2323
|
-
|
|
2324
|
+
|
|
2324
2325
|
// async function scrapeCrest() {
|
|
2325
|
-
// const storeIds = [ '
|
|
2326
|
+
// const storeIds = [ 'LKST682' ];
|
|
2326
2327
|
// const apiUrl = 'https://api.getcrest.ai/api/ms_shelfsensei/layout/';
|
|
2327
|
-
// const bearerToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
|
|
2328
|
+
// const bearerToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzQ4ODUwMzMyLCJpYXQiOjE3NDg4NDY3MzIsImp0aSI6ImNkNmRmNWZhYTg4ZDRmMjQ4YmZkYzFkMzkzZWYzMTg5IiwidXNlcl9pZCI6MTA4NSwiaWQiOjEwODUsImlzX21lZXNlZWtfYWNjb3VudCI6ZmFsc2UsImN1c3RvbWVyX2dyb3VwIjozOTgsImxpY2VuY2Vfc2NvcGVzIjpbeyJyZXNvdXJjZV9zZXQiOiJwcF9zZXQiLCJzY29wZV9yb2xlIjoiY29udHJpYnV0b3IifSx7InJlc291cmNlX3NldCI6ImRwX3NldCIsInNjb3BlX3JvbGUiOiJjb250cmlidXRvciJ9LHsicmVzb3VyY2Vfc2V0IjoiZGZfc2V0Iiwic2NvcGVfcm9sZSI6ImNvbnRyaWJ1dG9yIn0seyJyZXNvdXJjZV9zZXQiOiJkZWZhdWx0X3NldCIsInNjb3BlX3JvbGUiOiJjb250cmlidXRvciJ9XX0.8fclGcH6koHsKVmtGAQLscS80yNaVqPRkcpLhI3cnsk';
|
|
2328
2329
|
// const filePath = 'response.json';
|
|
2329
2330
|
// let allResults = [];
|
|
2330
2331
|
|
|
@@ -2389,7 +2390,7 @@ export async function updateVmData( req, res ) {
|
|
|
2389
2390
|
// }
|
|
2390
2391
|
// }
|
|
2391
2392
|
|
|
2392
|
-
// scrapeCrest()
|
|
2393
|
+
// scrapeCrest()
|
|
2393
2394
|
|
|
2394
2395
|
export async function createCrestPlanogram( req, res ) {
|
|
2395
2396
|
try {
|
|
@@ -3443,7 +3444,6 @@ import { Builder } from 'selenium-webdriver';
|
|
|
3443
3444
|
import fetch from 'node-fetch';
|
|
3444
3445
|
|
|
3445
3446
|
import fetchCookie from 'fetch-cookie';
|
|
3446
|
-
// import { elementIsNotVisible } from 'selenium-webdriver/lib/until.js';
|
|
3447
3447
|
|
|
3448
3448
|
|
|
3449
3449
|
// async function downloadCrestImages() {
|
|
@@ -7224,6 +7224,32 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7224
7224
|
};
|
|
7225
7225
|
|
|
7226
7226
|
|
|
7227
|
+
async function generateFixtureTemplateName( baseName, fixtureWidth ) {
|
|
7228
|
+
function escapeRegex( str ) {
|
|
7229
|
+
return str.replace( /[.*+?^${}()|[\]\\]/g, '\\$&' );
|
|
7230
|
+
}
|
|
7231
|
+
|
|
7232
|
+
const escapedBase = escapeRegex( baseName );
|
|
7233
|
+
const regexPattern = new RegExp( `^Template-(\\d+)-${escapedBase}$` );
|
|
7234
|
+
|
|
7235
|
+
const existingFixtures = await fixtureConfigService.find( {
|
|
7236
|
+
fixtureName: { $regex: new RegExp( `^Template-(\\d+)-${escapedBase}$` ) },
|
|
7237
|
+
fixtureWidth: fixtureWidth,
|
|
7238
|
+
} );
|
|
7239
|
+
|
|
7240
|
+
const usedNumbers = existingFixtures
|
|
7241
|
+
.map( ( doc ) => {
|
|
7242
|
+
const match = doc.fixtureName.match( regexPattern );
|
|
7243
|
+
return match ? parseInt( match[1], 10 ) : null;
|
|
7244
|
+
} )
|
|
7245
|
+
.filter( ( num ) => num !== null );
|
|
7246
|
+
|
|
7247
|
+
const nextNumber = usedNumbers.length > 0 ? Math.max( ...usedNumbers ) + 1 : 1;
|
|
7248
|
+
|
|
7249
|
+
return `Template-${nextNumber}-${baseName}`;
|
|
7250
|
+
}
|
|
7251
|
+
|
|
7252
|
+
|
|
7227
7253
|
if ( !req?.body?.storeName ) {
|
|
7228
7254
|
return res.sendError( 'No store supplied', 200 );
|
|
7229
7255
|
}
|
|
@@ -7239,10 +7265,10 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7239
7265
|
|
|
7240
7266
|
let storeList = await storeService.find( storeQuery );
|
|
7241
7267
|
|
|
7242
|
-
|
|
7268
|
+
const constantFixtureLength = 1220;
|
|
7243
7269
|
const constantDetailedFixtureLength = 1220;
|
|
7244
7270
|
|
|
7245
|
-
|
|
7271
|
+
const constantFixtureWidth = 610;
|
|
7246
7272
|
const constantDetailedFixtureWidth = 1524;
|
|
7247
7273
|
|
|
7248
7274
|
const mmToFeet = 305;
|
|
@@ -7262,15 +7288,15 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7262
7288
|
|
|
7263
7289
|
const existingPlanogram = await planoService.findOne( { storeName: storeData.storeName } );
|
|
7264
7290
|
|
|
7265
|
-
|
|
7266
|
-
|
|
7291
|
+
if ( existingPlanogram ) {
|
|
7292
|
+
const checkTaskSubmitted = await planoTaskService.findOne( { planoId: existingPlanogram.toObject()._id } );
|
|
7267
7293
|
|
|
7268
|
-
|
|
7294
|
+
const checkTaskCreated = await processedTaskService.findOne( { storeName: storeData.storeName, date_string: dayjs().format( 'YYYY-MM-DD' ), isPlano: true } );
|
|
7269
7295
|
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
|
|
7296
|
+
if ( checkTaskSubmitted || checkTaskCreated ) {
|
|
7297
|
+
continue;
|
|
7298
|
+
}
|
|
7299
|
+
}
|
|
7274
7300
|
|
|
7275
7301
|
|
|
7276
7302
|
if ( existingPlanogram?.toObject()?._id && mongoose.Types.ObjectId.isValid( existingPlanogram?.toObject()?._id ) ) {
|
|
@@ -7347,43 +7373,43 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7347
7373
|
floorFixtures = floorFixtures.filter( ( fixture ) => fixture.floor === floorArray[floorIndex] );
|
|
7348
7374
|
}
|
|
7349
7375
|
|
|
7350
|
-
|
|
7376
|
+
const leftXDistanceFeet = leftFixtures.length ? roundToTwo( ( leftFixtures.length * ( constantFixtureLength / mmToFeet ) ) ) : 0;
|
|
7351
7377
|
const leftXDetailedDistanceFeet = leftFixtures.length ? roundToTwo( ( leftFixtures.length * ( constantDetailedFixtureLength / mmToFeet ) ) ) : 0;
|
|
7352
7378
|
|
|
7353
|
-
|
|
7379
|
+
const leftYDistanceFeet = leftFixtures.length ? roundToTwo( ( ( constantFixtureWidth / mmToFeet ) ) ) : 0;
|
|
7354
7380
|
const leftYDetailedDistanceFeet = leftFixtures.length ? roundToTwo( ( ( constantDetailedFixtureWidth / mmToFeet ) ) ) : 0;
|
|
7355
7381
|
|
|
7356
|
-
|
|
7382
|
+
const rightXDistanceFeet = rightFixtures.length ? roundToTwo( ( rightFixtures.length * ( constantFixtureLength / mmToFeet ) ) ) : 0;
|
|
7357
7383
|
const rightXDetailedDistanceFeet = rightFixtures.length ? roundToTwo( ( rightFixtures.length * ( constantDetailedFixtureLength / mmToFeet ) ) ) : 0;
|
|
7358
7384
|
|
|
7359
|
-
|
|
7385
|
+
const rightYDistanceFeet = rightFixtures.length ? roundToTwo( ( constantFixtureWidth / mmToFeet ) ) : 0;
|
|
7360
7386
|
const rightYDetailedDistanceFeet = rightFixtures.length ? roundToTwo( ( constantDetailedFixtureWidth / mmToFeet ) ): 0;
|
|
7361
7387
|
|
|
7362
7388
|
const maxFixturesPerRow = floorFixtures.length/2;
|
|
7363
7389
|
const totalRows = 2;
|
|
7364
7390
|
|
|
7365
|
-
|
|
7391
|
+
const floorXDistanceFeet = floorFixtures.length ? roundToTwo( ( ( floorFixtures.length/2 ) * ( constantFixtureLength / mmToFeet ) ) ) : 0;
|
|
7366
7392
|
const floorXDetailedDistanceFeet = floorFixtures.length ? roundToTwo( ( ( floorFixtures.length/2 ) * ( constantDetailedFixtureLength / mmToFeet ) ) ): 0;
|
|
7367
7393
|
|
|
7368
|
-
|
|
7394
|
+
const floorYDistanceFeet = floorFixtures.length ? roundToTwo( ( 2 * ( constantFixtureWidth/ mmToFeet ) ) ): 0;
|
|
7369
7395
|
const floorYDetailedDistanceFeet = floorFixtures.length ? roundToTwo( 2 * ( constantDetailedFixtureWidth/mmToFeet ) ): 0;
|
|
7370
7396
|
|
|
7371
|
-
|
|
7397
|
+
const backXDistanceFeet = backFixtures.length ? roundToTwo( ( constantFixtureWidth / mmToFeet ) ) : 0;
|
|
7372
7398
|
const backXDetailedDistanceFeet = backFixtures.length ? roundToTwo( ( constantDetailedFixtureLength / mmToFeet ) ) : 0;
|
|
7373
7399
|
|
|
7374
|
-
|
|
7400
|
+
const backYDistanceFeet = backFixtures.length ? roundToTwo( ( ( backFixtures.length * ( constantFixtureLength / mmToFeet ) ) + ( ( ( leftFixtures.length ? 1 : 0 ) + ( rightFixtures.length ? 1 : 0 ) * constantFixtureWidth )/mmToFeet ) ) ) : 0;
|
|
7375
7401
|
const backYDetailedDistanceFeet = backFixtures.length ? roundToTwo( ( ( backFixtures.length * ( constantDetailedFixtureWidth / mmToFeet ) ) + ( ( ( leftFixtures.length ? 1 : 0 ) + ( rightFixtures.length ? 1 : 0 ) * constantDetailedFixtureWidth )/mmToFeet ) ) ): 0;
|
|
7376
7402
|
|
|
7377
|
-
|
|
7403
|
+
const maxXDistance = Math.max( leftXDistanceFeet, rightXDistanceFeet, floorXDistanceFeet );
|
|
7378
7404
|
const maxXDetailedDistance = Math.max( leftXDetailedDistanceFeet, rightXDetailedDistanceFeet, floorXDetailedDistanceFeet );
|
|
7379
7405
|
|
|
7380
|
-
|
|
7406
|
+
const maxYDistance = Math.max( floorYDistanceFeet, backYDistanceFeet );
|
|
7381
7407
|
const maxYDetailedDistance = Math.max( floorYDetailedDistanceFeet, backYDetailedDistanceFeet );
|
|
7382
7408
|
|
|
7383
|
-
|
|
7409
|
+
const finalXDistance = roundToTwo( ( maxXDistance < ( backXDistanceFeet + floorXDistanceFeet )? ( ( backXDistanceFeet + floorXDistanceFeet ) + ( ( 2 * constantFixtureLength )/mmToFeet ) ) : ( floorFixtures.length && backFixtures.length ) ? ( maxXDistance + ( ( 2 * constantFixtureLength )/mmToFeet ) ) : maxXDistance ) );
|
|
7384
7410
|
const finalXDetailedDistance = roundToTwo( ( maxXDetailedDistance < ( backXDetailedDistanceFeet + floorXDetailedDistanceFeet )? ( ( backXDetailedDistanceFeet + floorXDetailedDistanceFeet ) + ( ( 2 * constantDetailedFixtureLength )/mmToFeet ) ) : ( floorFixtures.length && backFixtures.length ) ? ( maxXDetailedDistance + ( ( 2 * constantDetailedFixtureLength )/mmToFeet ) ) : maxXDetailedDistance ) );
|
|
7385
7411
|
|
|
7386
|
-
|
|
7412
|
+
const finalYDistance = roundToTwo( ( maxYDistance < ( leftYDistanceFeet + rightYDistanceFeet + floorYDistanceFeet ) ? ( ( leftYDistanceFeet + rightYDistanceFeet + floorYDistanceFeet ) + ( ( 2 * constantFixtureWidth )/mmToFeet ) ) : ( maxYDistance + ( ( constantFixtureWidth )/mmToFeet ) ) ) );
|
|
7387
7413
|
const finalYDetailedDistance = roundToTwo( ( maxYDetailedDistance < ( leftYDetailedDistanceFeet + rightYDetailedDistanceFeet + floorYDetailedDistanceFeet ) ? ( ( leftYDetailedDistanceFeet + rightYDetailedDistanceFeet + floorYDetailedDistanceFeet ) + ( ( 2 * constantDetailedFixtureWidth )/mmToFeet ) ) : ( maxYDetailedDistance + ( ( constantDetailedFixtureWidth )/mmToFeet ) ) ) );
|
|
7388
7414
|
|
|
7389
7415
|
|
|
@@ -7398,57 +7424,57 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7398
7424
|
layoutPolygon: [
|
|
7399
7425
|
{
|
|
7400
7426
|
elementType: 'wall',
|
|
7401
|
-
distance:
|
|
7427
|
+
distance: finalXDistance,
|
|
7402
7428
|
unit: 'ft',
|
|
7403
7429
|
direction: 'right',
|
|
7404
7430
|
angle: 90,
|
|
7405
7431
|
elementNumber: 1,
|
|
7406
|
-
|
|
7432
|
+
detailedDistance: finalXDetailedDistance,
|
|
7407
7433
|
},
|
|
7408
7434
|
{
|
|
7409
7435
|
elementType: 'wall',
|
|
7410
|
-
distance:
|
|
7436
|
+
distance: finalYDistance,
|
|
7411
7437
|
unit: 'ft',
|
|
7412
7438
|
direction: 'down',
|
|
7413
7439
|
angle: 90,
|
|
7414
7440
|
elementNumber: 2,
|
|
7415
|
-
|
|
7441
|
+
detailedDistance: finalYDetailedDistance,
|
|
7416
7442
|
},
|
|
7417
7443
|
{
|
|
7418
7444
|
elementType: 'wall',
|
|
7419
|
-
distance:
|
|
7445
|
+
distance: finalXDistance,
|
|
7420
7446
|
unit: 'ft',
|
|
7421
7447
|
direction: 'left',
|
|
7422
7448
|
angle: 90,
|
|
7423
7449
|
elementNumber: 3,
|
|
7424
|
-
|
|
7450
|
+
detailedDistance: finalXDetailedDistance,
|
|
7425
7451
|
},
|
|
7426
7452
|
{
|
|
7427
7453
|
elementType: 'wall',
|
|
7428
|
-
distance: roundToTwo( ( (
|
|
7454
|
+
distance: roundToTwo( ( ( finalYDistance * 40 ) / 100 ) ),
|
|
7429
7455
|
unit: 'ft',
|
|
7430
7456
|
direction: 'up',
|
|
7431
7457
|
angle: 90,
|
|
7432
7458
|
elementNumber: 4,
|
|
7433
|
-
|
|
7459
|
+
detailedDistance: roundToTwo( ( ( finalYDetailedDistance * 35 ) / 100 ) ),
|
|
7434
7460
|
},
|
|
7435
7461
|
{
|
|
7436
7462
|
elementType: 'entrance',
|
|
7437
|
-
distance: roundToTwo( ( (
|
|
7463
|
+
distance: roundToTwo( ( ( finalYDistance * 20 ) / 100 ) ),
|
|
7438
7464
|
unit: 'ft',
|
|
7439
7465
|
direction: 'up',
|
|
7440
7466
|
angle: 90,
|
|
7441
7467
|
elementNumber: 1,
|
|
7442
|
-
|
|
7468
|
+
detailedDistance: roundToTwo( ( ( finalYDetailedDistance * 30 ) / 100 ) ),
|
|
7443
7469
|
},
|
|
7444
7470
|
{
|
|
7445
7471
|
elementType: 'wall',
|
|
7446
|
-
distance: roundToTwo( ( (
|
|
7472
|
+
distance: roundToTwo( ( ( finalYDistance * 40 ) / 100 ) ),
|
|
7447
7473
|
unit: 'ft',
|
|
7448
7474
|
direction: 'up',
|
|
7449
7475
|
angle: 90,
|
|
7450
7476
|
elementNumber: 5,
|
|
7451
|
-
|
|
7477
|
+
detailedDistance: roundToTwo( ( ( finalYDetailedDistance * 35 ) / 100 ) ),
|
|
7452
7478
|
},
|
|
7453
7479
|
],
|
|
7454
7480
|
createdBy: new mongoose.Types.ObjectId( '66a78cd82734f4f857cd6db6' ),
|
|
@@ -7507,20 +7533,13 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7507
7533
|
|
|
7508
7534
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' ) {
|
|
7509
7535
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 905 );
|
|
7536
|
+
configData.zone = 'stretch';
|
|
7510
7537
|
}
|
|
7511
7538
|
|
|
7512
7539
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' && pids.length ) {
|
|
7513
7540
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 230 );
|
|
7514
7541
|
}
|
|
7515
7542
|
|
|
7516
|
-
if ( configData.vmWidthmm === 905 ) {
|
|
7517
|
-
configData.zone = 'stretch';
|
|
7518
|
-
}
|
|
7519
|
-
|
|
7520
|
-
if ( configData.vmWidthmm === 230 ) {
|
|
7521
|
-
configData.zone = 'left';
|
|
7522
|
-
}
|
|
7523
|
-
|
|
7524
7543
|
if ( !configData ) return;
|
|
7525
7544
|
|
|
7526
7545
|
const vmIdentifier = `vm${k+1}=${vm.productName}+${configData.vmHeightmm}+${configData.vmWidthmm}+${configData.startShelf}+${configData.endShelf}+${configData.zone}`;
|
|
@@ -7591,7 +7610,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7591
7610
|
|
|
7592
7611
|
const vmDetails = await planoVmService.upsertOne(
|
|
7593
7612
|
{
|
|
7594
|
-
'
|
|
7613
|
+
'productName': vmInsertData.vmName,
|
|
7595
7614
|
},
|
|
7596
7615
|
vmInsertData,
|
|
7597
7616
|
);
|
|
@@ -7604,23 +7623,8 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7604
7623
|
};
|
|
7605
7624
|
} ) );
|
|
7606
7625
|
|
|
7607
|
-
const
|
|
7608
|
-
|
|
7609
|
-
fixtureWidth: fixtureConfigDoc.fixtureWidth }, {}, { templateIndex: -1 } );
|
|
7610
|
-
|
|
7611
|
-
let templateIndex = 1;
|
|
7612
|
-
|
|
7613
|
-
if ( existingTemplateWithMaxIndex.length ) {
|
|
7614
|
-
templateIndex = existingTemplateWithMaxIndex[0].toObject().templateIndex + 1;
|
|
7615
|
-
}
|
|
7616
|
-
|
|
7617
|
-
let templateName = `Template-${templateIndex}-${fixtureConfigDoc.fixtureCategory}`;
|
|
7618
|
-
|
|
7619
|
-
const isTemplateExist = await fixtureConfigService.findOne( { crestMapKey: mapKey } );
|
|
7620
|
-
if ( isTemplateExist ) {
|
|
7621
|
-
templateIndex = undefined;
|
|
7622
|
-
templateName = undefined;
|
|
7623
|
-
}
|
|
7626
|
+
const baseFixtureName = `${fixtureConfigDoc.fixtureCategory}`;
|
|
7627
|
+
const uniqueFixtureName = await generateFixtureTemplateName( baseFixtureName, fixtureConfigDoc.fixtureWidth );
|
|
7624
7628
|
|
|
7625
7629
|
|
|
7626
7630
|
const fixtureTemplateData = {
|
|
@@ -7628,8 +7632,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7628
7632
|
'shelfConfig': shelfTemplate,
|
|
7629
7633
|
'vmConfig': vmTemplate,
|
|
7630
7634
|
'clientId': fixtureConfigDoc.clientId,
|
|
7631
|
-
'fixtureName':
|
|
7632
|
-
'templateIndex': templateIndex,
|
|
7635
|
+
'fixtureName': uniqueFixtureName,
|
|
7633
7636
|
'header': {
|
|
7634
7637
|
label: fixture.header ? fixture.header : fixture.fixtureSubname[0],
|
|
7635
7638
|
isEnabled: true,
|
|
@@ -7662,16 +7665,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7662
7665
|
'associatedElementType': 'wall',
|
|
7663
7666
|
'associatedElementNumber': 1,
|
|
7664
7667
|
'relativePosition': {
|
|
7665
|
-
'x': roundToTwo( ( index * (
|
|
7668
|
+
'x': roundToTwo( ( index * ( constantFixtureLength / mmToFeet ) ) ),
|
|
7666
7669
|
'y': 0,
|
|
7667
7670
|
'unit': 'ft',
|
|
7668
7671
|
},
|
|
7669
7672
|
'fixtureNumber': fixtureCounter,
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7673
|
+
'relativeDetailedPosition': {
|
|
7674
|
+
'x': roundToTwo( ( index * ( constantDetailedFixtureLength / mmToFeet ) ) ),
|
|
7675
|
+
'y': 0,
|
|
7676
|
+
'unit': 'ft',
|
|
7677
|
+
},
|
|
7675
7678
|
'associatedElementFixtureNumber': index+1,
|
|
7676
7679
|
'fixtureConfigId': fixtureTemplate.toObject()._id,
|
|
7677
7680
|
};
|
|
@@ -7762,20 +7765,13 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7762
7765
|
|
|
7763
7766
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' ) {
|
|
7764
7767
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 905 );
|
|
7768
|
+
configData.zone = 'stretch';
|
|
7765
7769
|
}
|
|
7766
7770
|
|
|
7767
7771
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' && pids.length ) {
|
|
7768
7772
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 230 );
|
|
7769
7773
|
}
|
|
7770
7774
|
|
|
7771
|
-
if ( configData.vmWidthmm === 905 ) {
|
|
7772
|
-
configData.zone = 'stretch';
|
|
7773
|
-
}
|
|
7774
|
-
|
|
7775
|
-
if ( configData.vmWidthmm === 230 ) {
|
|
7776
|
-
configData.zone = 'left';
|
|
7777
|
-
}
|
|
7778
|
-
|
|
7779
7775
|
if ( !configData ) return;
|
|
7780
7776
|
|
|
7781
7777
|
const vmIdentifier = `vm${k+1}=${vm.productName}+${configData.vmHeightmm}+${configData.vmWidthmm}+${configData.startShelf}+${configData.endShelf}+${configData.zone}`;
|
|
@@ -7847,7 +7843,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7847
7843
|
|
|
7848
7844
|
const vmDetails = await planoVmService.upsertOne(
|
|
7849
7845
|
{
|
|
7850
|
-
'
|
|
7846
|
+
'productName': vmInsertData.vmName,
|
|
7851
7847
|
},
|
|
7852
7848
|
vmInsertData,
|
|
7853
7849
|
);
|
|
@@ -7860,31 +7856,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7860
7856
|
};
|
|
7861
7857
|
} ) );
|
|
7862
7858
|
|
|
7863
|
-
const
|
|
7864
|
-
|
|
7865
|
-
fixtureWidth: fixtureConfigDoc.fixtureWidth }, {}, { templateIndex: -1 } );
|
|
7859
|
+
const baseFixtureName = `${fixtureConfigDoc.fixtureCategory}`;
|
|
7860
|
+
const uniqueFixtureName = await generateFixtureTemplateName( baseFixtureName, fixtureConfigDoc.fixtureWidth );
|
|
7866
7861
|
|
|
7867
|
-
let templateIndex = 1;
|
|
7868
|
-
|
|
7869
|
-
if ( existingTemplateWithMaxIndex.length ) {
|
|
7870
|
-
templateIndex = existingTemplateWithMaxIndex[0].toObject().templateIndex + 1;
|
|
7871
|
-
}
|
|
7872
|
-
|
|
7873
|
-
let templateName = `Template-${templateIndex}-${fixtureConfigDoc.fixtureCategory}`;
|
|
7874
|
-
|
|
7875
|
-
const isTemplateExist = await fixtureConfigService.findOne( { crestMapKey: mapKey } );
|
|
7876
|
-
if ( isTemplateExist ) {
|
|
7877
|
-
templateIndex = undefined;
|
|
7878
|
-
templateName = undefined;
|
|
7879
|
-
}
|
|
7880
7862
|
|
|
7881
7863
|
const fixtureTemplateData = {
|
|
7882
7864
|
...fixtureConfigDoc,
|
|
7883
7865
|
'shelfConfig': shelfTemplate,
|
|
7884
7866
|
'vmConfig': vmTemplate,
|
|
7885
7867
|
'clientId': fixtureConfigDoc.clientId,
|
|
7886
|
-
'fixtureName':
|
|
7887
|
-
'templateIndex': templateIndex,
|
|
7868
|
+
'fixtureName': uniqueFixtureName,
|
|
7888
7869
|
'header': {
|
|
7889
7870
|
label: fixture.header ? fixture.header : fixture.fixtureSubname[0],
|
|
7890
7871
|
isEnabled: true,
|
|
@@ -7917,16 +7898,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
7917
7898
|
'associatedElementType': 'wall',
|
|
7918
7899
|
'associatedElementNumber': 2,
|
|
7919
7900
|
'relativePosition': {
|
|
7901
|
+
'x': roundToTwo( ( finalXDistance - ( constantFixtureWidth/mmToFeet ) ) ),
|
|
7902
|
+
'y': roundToTwo( ( ( index * ( ( constantFixtureLength/mmToFeet ) ) ) + ( ( leftFixtures.length ? 1 : 0 ) * constantFixtureWidth/mmToFeet ) ) ),
|
|
7903
|
+
'unit': 'ft',
|
|
7904
|
+
},
|
|
7905
|
+
'fixtureNumber': fixtureCounter,
|
|
7906
|
+
'relativeDetailedPosition': {
|
|
7920
7907
|
'x': roundToTwo( ( finalXDetailedDistance - ( constantDetailedFixtureLength/mmToFeet ) ) ),
|
|
7921
7908
|
'y': roundToTwo( ( ( index * ( ( constantDetailedFixtureWidth/mmToFeet ) ) ) + ( ( leftFixtures.length ? 1 : 0 ) * constantDetailedFixtureWidth/mmToFeet ) ) ),
|
|
7922
7909
|
'unit': 'ft',
|
|
7923
7910
|
},
|
|
7924
|
-
'fixtureNumber': fixtureCounter,
|
|
7925
|
-
// 'relativeDetailedPosition': {
|
|
7926
|
-
// 'x': roundToTwo( ( finalXDetailedDistance - ( constantDetailedFixtureLength/mmToFeet ) ) ),
|
|
7927
|
-
// 'y': roundToTwo( ( ( index * ( ( constantDetailedFixtureWidth/mmToFeet ) ) ) + ( ( leftFixtures.length ? 1 : 0 ) * constantDetailedFixtureWidth/mmToFeet ) ) ),
|
|
7928
|
-
// 'unit': 'ft',
|
|
7929
|
-
// },
|
|
7930
7911
|
'associatedElementFixtureNumber': index+1,
|
|
7931
7912
|
'fixtureConfigId': fixtureTemplate.toObject()._id,
|
|
7932
7913
|
};
|
|
@@ -8017,20 +7998,13 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8017
7998
|
|
|
8018
7999
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' ) {
|
|
8019
8000
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 905 );
|
|
8001
|
+
configData.zone = 'stretch';
|
|
8020
8002
|
}
|
|
8021
8003
|
|
|
8022
8004
|
if ( vm.productName === 'Creatr' && zone.zoneName === 'Mid' && pids.length ) {
|
|
8023
8005
|
configData = vmConfig.find( ( config ) => config.vmWidthmm === 230 );
|
|
8024
8006
|
}
|
|
8025
8007
|
|
|
8026
|
-
if ( configData.vmWidthmm === 905 ) {
|
|
8027
|
-
configData.zone = 'stretch';
|
|
8028
|
-
}
|
|
8029
|
-
|
|
8030
|
-
if ( configData.vmWidthmm === 230 ) {
|
|
8031
|
-
configData.zone = 'left';
|
|
8032
|
-
}
|
|
8033
|
-
|
|
8034
8008
|
if ( !configData ) return;
|
|
8035
8009
|
|
|
8036
8010
|
const vmIdentifier = `vm${k+1}=${vm.productName}+${configData.vmHeightmm}+${configData.vmWidthmm}+${configData.startShelf}+${configData.endShelf}+${configData.zone}`;
|
|
@@ -8101,7 +8075,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8101
8075
|
|
|
8102
8076
|
const vmDetails = await planoVmService.upsertOne(
|
|
8103
8077
|
{
|
|
8104
|
-
'
|
|
8078
|
+
'productName': vmInsertData.vmName,
|
|
8105
8079
|
},
|
|
8106
8080
|
vmInsertData,
|
|
8107
8081
|
);
|
|
@@ -8114,31 +8088,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8114
8088
|
};
|
|
8115
8089
|
} ) );
|
|
8116
8090
|
|
|
8117
|
-
const
|
|
8118
|
-
|
|
8119
|
-
fixtureWidth: fixtureConfigDoc.fixtureWidth }, {}, { templateIndex: -1 } );
|
|
8120
|
-
|
|
8121
|
-
let templateIndex = 1;
|
|
8091
|
+
const baseFixtureName = `${fixtureConfigDoc.fixtureCategory}`;
|
|
8092
|
+
const uniqueFixtureName = await generateFixtureTemplateName( baseFixtureName, fixtureConfigDoc.fixtureWidth );
|
|
8122
8093
|
|
|
8123
|
-
if ( existingTemplateWithMaxIndex.length ) {
|
|
8124
|
-
templateIndex = existingTemplateWithMaxIndex[0].toObject().templateIndex + 1;
|
|
8125
|
-
}
|
|
8126
|
-
|
|
8127
|
-
let templateName = `Template-${templateIndex}-${fixtureConfigDoc.fixtureCategory}`;
|
|
8128
|
-
|
|
8129
|
-
const isTemplateExist = await fixtureConfigService.findOne( { crestMapKey: mapKey } );
|
|
8130
|
-
if ( isTemplateExist ) {
|
|
8131
|
-
templateIndex = undefined;
|
|
8132
|
-
templateName = undefined;
|
|
8133
|
-
}
|
|
8134
8094
|
|
|
8135
8095
|
const fixtureTemplateData = {
|
|
8136
8096
|
...fixtureConfigDoc,
|
|
8137
8097
|
'shelfConfig': shelfTemplate,
|
|
8138
8098
|
'vmConfig': vmTemplate,
|
|
8139
8099
|
'clientId': fixtureConfigDoc.clientId,
|
|
8140
|
-
'fixtureName':
|
|
8141
|
-
'templateIndex': templateIndex,
|
|
8100
|
+
'fixtureName': uniqueFixtureName,
|
|
8142
8101
|
'header': {
|
|
8143
8102
|
label: fixture.header ? fixture.header : fixture.fixtureSubname[0],
|
|
8144
8103
|
isEnabled: true,
|
|
@@ -8171,16 +8130,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8171
8130
|
'associatedElementType': 'wall',
|
|
8172
8131
|
'associatedElementNumber': 3,
|
|
8173
8132
|
'relativePosition': {
|
|
8133
|
+
'x': roundToTwo( ( index * ( constantFixtureLength / mmToFeet ) ) ),
|
|
8134
|
+
'y': roundToTwo( ( finalYDistance - ( constantFixtureWidth / mmToFeet ) ) ),
|
|
8135
|
+
'unit': 'ft',
|
|
8136
|
+
},
|
|
8137
|
+
'fixtureNumber': fixtureCounter,
|
|
8138
|
+
'relativeDetailedPosition': {
|
|
8174
8139
|
'x': roundToTwo( ( index * ( constantDetailedFixtureLength / mmToFeet ) ) ),
|
|
8175
8140
|
'y': roundToTwo( ( finalYDetailedDistance - ( constantDetailedFixtureWidth / mmToFeet ) ) ),
|
|
8176
8141
|
'unit': 'ft',
|
|
8177
8142
|
},
|
|
8178
|
-
'fixtureNumber': fixtureCounter,
|
|
8179
|
-
// 'relativeDetailedPosition': {
|
|
8180
|
-
// 'x': roundToTwo( ( index * ( constantDetailedFixtureLength / mmToFeet ) ) ),
|
|
8181
|
-
// 'y': roundToTwo( ( finalYDetailedDistance - ( constantDetailedFixtureWidth / mmToFeet ) ) ),
|
|
8182
|
-
// 'unit': 'ft',
|
|
8183
|
-
// },
|
|
8184
8143
|
'associatedElementFixtureNumber': index+1,
|
|
8185
8144
|
'fixtureConfigId': fixtureTemplate.toObject()._id,
|
|
8186
8145
|
};
|
|
@@ -8232,17 +8191,17 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8232
8191
|
|
|
8233
8192
|
const centerRow = Math.floor( totalRows / 2 );
|
|
8234
8193
|
|
|
8235
|
-
|
|
8194
|
+
const startingX = roundToTwo( ( finalXDistance / 2 - ( maxFixturesPerRow / 2 ) * ( constantFixtureLength / mmToFeet ) ) );
|
|
8236
8195
|
const detailedStartingX = roundToTwo( ( finalXDetailedDistance / 2 - ( maxFixturesPerRow / 2 ) * ( constantDetailedFixtureLength / mmToFeet ) ) );
|
|
8237
8196
|
|
|
8238
|
-
|
|
8197
|
+
const startingY = finalYDistance / 2 - centerRow * ( constantFixtureWidth / mmToFeet );
|
|
8239
8198
|
const detailedStartingY = finalYDetailedDistance / 2 - centerRow * ( constantDetailedFixtureWidth / mmToFeet );
|
|
8240
8199
|
|
|
8241
8200
|
const colIndex = Math.floor( index / 2 );
|
|
8242
8201
|
const rowIndex = index % 2 === 0 ? 1 : 0;
|
|
8243
8202
|
|
|
8244
|
-
|
|
8245
|
-
|
|
8203
|
+
const xPos = roundToTwo( startingX + colIndex * ( constantFixtureLength / mmToFeet ) );
|
|
8204
|
+
const yPos = roundToTwo( startingY + rowIndex * ( constantFixtureWidth / mmToFeet ) );
|
|
8246
8205
|
|
|
8247
8206
|
const detailedXPos = roundToTwo( ( detailedStartingX + colIndex * ( constantDetailedFixtureLength / mmToFeet ) ) );
|
|
8248
8207
|
const detailedYPos = roundToTwo( ( detailedStartingY + rowIndex * ( constantDetailedFixtureWidth / mmToFeet ) ) );
|
|
@@ -8251,7 +8210,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8251
8210
|
if ( !fixtureConfig ) continue;
|
|
8252
8211
|
const fixtureConfigDoc = fixtureConfig.toObject();
|
|
8253
8212
|
|
|
8254
|
-
let mapKey = `${fixtureConfigDoc.fixtureCategory}${fixtureConfigDoc.fixtureWidth.value}${fixtureConfigDoc.fixtureWidth.unit},${fixture.
|
|
8213
|
+
let mapKey = `${fixtureConfigDoc.fixtureCategory}${fixtureConfigDoc.fixtureWidth.value}${fixtureConfigDoc.fixtureWidth.unit},${fixture.header}`;
|
|
8255
8214
|
|
|
8256
8215
|
const fixtureProductSubBrandName = new Set();
|
|
8257
8216
|
|
|
@@ -8259,7 +8218,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8259
8218
|
const shelfTemplate = fixtureConfigDoc.shelfConfig.map( ( configShelf, j ) => {
|
|
8260
8219
|
const shelfSection = fixture?.centerSuperSubMain?.find( ( product ) => !product.isVisualMerchandiser );
|
|
8261
8220
|
|
|
8262
|
-
const shelfIdentifier = `shelf${j + 1}=${
|
|
8221
|
+
const shelfIdentifier = `shelf${j + 1}=${shelfSection?.productName}`;
|
|
8263
8222
|
|
|
8264
8223
|
mapKey += ','+shelfIdentifier;
|
|
8265
8224
|
|
|
@@ -8282,7 +8241,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8282
8241
|
};
|
|
8283
8242
|
} );
|
|
8284
8243
|
|
|
8285
|
-
const vmConfig = fixture.centerSuperSubMain?.flatMap( ( vm
|
|
8244
|
+
const vmConfig = fixture.centerSuperSubMain?.flatMap( ( vm ) => {
|
|
8286
8245
|
if ( !vm?.isVisualMerchandiser ) {
|
|
8287
8246
|
return [];
|
|
8288
8247
|
}
|
|
@@ -8290,15 +8249,11 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8290
8249
|
|
|
8291
8250
|
const [ configData1, configData2 ] = [ vmConfig[0], vmConfig[1] ];
|
|
8292
8251
|
|
|
8293
|
-
const vmIdentifier = `vm${k+1}=${vm.name}+${configData1.vmHeightmm}+${configData1.vmWidthmm}+${configData1.startShelf}+${configData1.endShelf}+${configData1.zone}`;
|
|
8294
|
-
|
|
8295
|
-
mapKey += ','+vmIdentifier;
|
|
8296
|
-
|
|
8297
8252
|
return [
|
|
8298
8253
|
{
|
|
8299
8254
|
startYPosition: configData1.startShelf,
|
|
8300
8255
|
endYPosition: configData1.endShelf,
|
|
8301
|
-
xZone:
|
|
8256
|
+
xZone: configData1.zone,
|
|
8302
8257
|
vmName: vm.name + ' - 1',
|
|
8303
8258
|
vmHeight: configData1.vmHeightmm,
|
|
8304
8259
|
vmWidth: configData1.vmWidthmm,
|
|
@@ -8306,7 +8261,7 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8306
8261
|
{
|
|
8307
8262
|
startYPosition: configData2.startShelf,
|
|
8308
8263
|
endYPosition: configData2.endShelf,
|
|
8309
|
-
xZone:
|
|
8264
|
+
xZone: configData2.zone,
|
|
8310
8265
|
vmName: vm.name + ' - 2',
|
|
8311
8266
|
vmHeight: configData2.vmHeightmm,
|
|
8312
8267
|
vmWidth: configData2.vmWidthmm,
|
|
@@ -8345,31 +8300,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8345
8300
|
};
|
|
8346
8301
|
} ) );
|
|
8347
8302
|
|
|
8348
|
-
const
|
|
8349
|
-
|
|
8350
|
-
fixtureWidth: fixtureConfigDoc.fixtureWidth }, {}, { templateIndex: -1 } );
|
|
8351
|
-
|
|
8352
|
-
let templateIndex = 1;
|
|
8303
|
+
const baseFixtureName = `${fixtureConfigDoc.fixtureCategory}`;
|
|
8304
|
+
const uniqueFixtureName = await generateFixtureTemplateName( baseFixtureName, fixtureConfigDoc.fixtureWidth );
|
|
8353
8305
|
|
|
8354
|
-
if ( existingTemplateWithMaxIndex.length ) {
|
|
8355
|
-
templateIndex = existingTemplateWithMaxIndex[0].toObject().templateIndex + 1;
|
|
8356
|
-
}
|
|
8357
|
-
|
|
8358
|
-
let templateName = `Template-${templateIndex}-${fixtureConfigDoc.fixtureCategory}`;
|
|
8359
|
-
|
|
8360
|
-
const isTemplateExist = await fixtureConfigService.findOne( { crestMapKey: mapKey } );
|
|
8361
|
-
if ( isTemplateExist ) {
|
|
8362
|
-
templateIndex = undefined;
|
|
8363
|
-
templateName = undefined;
|
|
8364
|
-
}
|
|
8365
8306
|
|
|
8366
8307
|
const fixtureTemplateData = {
|
|
8367
8308
|
...fixtureConfigDoc,
|
|
8368
8309
|
'shelfConfig': shelfTemplate,
|
|
8369
8310
|
'vmConfig': vmTemplate,
|
|
8370
8311
|
'clientId': fixtureConfigDoc.clientId,
|
|
8371
|
-
'fixtureName':
|
|
8372
|
-
'templateIndex': templateIndex,
|
|
8312
|
+
'fixtureName': uniqueFixtureName,
|
|
8373
8313
|
'header': {
|
|
8374
8314
|
label: fixture.centerSubMain,
|
|
8375
8315
|
isEnabled: true,
|
|
@@ -8401,16 +8341,16 @@ export async function migrateCrestv1( req, res ) {
|
|
|
8401
8341
|
'planoId': layoutDoc.planoId,
|
|
8402
8342
|
'floorId': layoutDoc._id,
|
|
8403
8343
|
'relativePosition': {
|
|
8344
|
+
'x': xPos,
|
|
8345
|
+
'y': yPos,
|
|
8346
|
+
'unit': 'ft',
|
|
8347
|
+
},
|
|
8348
|
+
'fixtureNumber': fixtureCounter,
|
|
8349
|
+
'relativeDetailedPosition': {
|
|
8404
8350
|
'x': detailedXPos,
|
|
8405
8351
|
'y': detailedYPos,
|
|
8406
8352
|
'unit': 'ft',
|
|
8407
8353
|
},
|
|
8408
|
-
'fixtureNumber': fixtureCounter,
|
|
8409
|
-
// 'relativeDetailedPosition': {
|
|
8410
|
-
// 'x': detailedXPos,
|
|
8411
|
-
// 'y': detailedYPos,
|
|
8412
|
-
// 'unit': 'ft',
|
|
8413
|
-
// },
|
|
8414
8354
|
'associatedElementFixtureNumber': index+1,
|
|
8415
8355
|
'fixtureConfigId': fixtureTemplate.toObject()._id,
|
|
8416
8356
|
};
|
|
@@ -2728,10 +2728,10 @@ export async function storeFixturesv2( req, res ) {
|
|
|
2728
2728
|
} ),
|
|
2729
2729
|
);
|
|
2730
2730
|
|
|
2731
|
-
const centerFixtures = await storeFixtureService.
|
|
2731
|
+
const centerFixtures = await storeFixtureService.find( {
|
|
2732
2732
|
floorId: floor._id,
|
|
2733
2733
|
fixtureType: 'floor',
|
|
2734
|
-
}
|
|
2734
|
+
} );
|
|
2735
2735
|
|
|
2736
2736
|
const centerFixturesWithStatus = await Promise.all(
|
|
2737
2737
|
centerFixtures.map( async ( fixture ) => {
|