diff --git a/src/server/models/catprod.js b/src/server/models/catprod.js index dae7283..6a3fa5b 100755 --- a/src/server/models/catprod.js +++ b/src/server/models/catprod.js @@ -58,6 +58,36 @@ CatProdSchema.statics.findAllIdApp = async function (idapp) { return await CatProd.find(myfind).sort({ name: 1 }); }; +CatProdSchema.statics.getCatProdWithTitleCount = async function (idapp) { + try { + const result = await CatProd.aggregate([ + { $match: { idapp } }, + { + $lookup: { + from: 'productinfos', // Nome della tua collezione productInfo + localField: '_id', + foreignField: 'idCatProds', + as: 'products' + } + }, + { + $project: { + _id: 1, + name: 1, + quanti: { $size: '$products' } // Conta il numero di prodotti per ciascun CatProd + } + }, + { $sort: { name: 1 } } // Ordina i risultati per nome + ]); + + return result; + } catch (error) { + console.error('Error retrieving CatProd with title count:', error); + throw error; + } +} + + const CatProd = mongoose.model('CatProd', CatProdSchema); CatProd.createIndexes((err) => { diff --git a/src/server/models/myelem.js b/src/server/models/myelem.js index 6c6d075..dcdf1ba 100755 --- a/src/server/models/myelem.js +++ b/src/server/models/myelem.js @@ -181,6 +181,12 @@ const MyElemSchema = new Schema({ width: { type: Number, }, + heightcard: { + type: String, + }, + widthcard: { + type: String, + }, link: { type: String, }, diff --git a/src/server/populate/catalogs.js b/src/server/populate/catalogs.js index c395ac3..eb3da28 100644 --- a/src/server/populate/catalogs.js +++ b/src/server/populate/catalogs.js @@ -2,7 +2,7 @@ const { ObjectId } = require('mongodb'); module.exports = { list: [ - { _id: ObjectId('605c72e2f9b1a019c1e4f4a1'), idapp: '18', title: 'Alimentazione Sana' }, + /*{ _id: ObjectId('605c72e2f9b1a019c1e4f4a1'), idapp: '18', title: 'Alimentazione Sana' }, { _id: ObjectId('605c72e2f9b1a019c1e4f4a2'), idapp: '18', title: 'Attualità e Informazione Libera' }, { _id: ObjectId('605c72e2f9b1a019c1e4f4a3'), idapp: '18', title: 'Psicologia e Crescita Personale' }, { _id: ObjectId('605c72e2f9b1a019c1e4f4a4'), idapp: '18', title: 'Educazione e Formazione' }, @@ -21,6 +21,6 @@ module.exports = { { _id: ObjectId('605c72e2f9b1a019c1e4f4b1'), idapp: '18', title: 'Sessualità e Relazione di coppia' }, { _id: ObjectId('605c72e2f9b1a019c1e4f4b2'), idapp: '18', title: 'Tarocchi, Oracoli e Carte' }, { _id: ObjectId('605c72e2f9b1a019c1e4f4b3'), idapp: '18', title: 'Techiche per il corpo' }, - { _id: ObjectId('605c72e2f9b1a019c1e4f4b4'), idapp: '18', title: 'Antroposofia' }, + */ ], }; \ No newline at end of file diff --git a/src/server/router/admin_router.js b/src/server/router/admin_router.js index 1d05f46..ef05fbf 100755 --- a/src/server/router/admin_router.js +++ b/src/server/router/admin_router.js @@ -64,7 +64,7 @@ async function updateProductInfo(recproductInfoAttuale, product, idapp, mycatstr if (product.ListaArgomenti) { idArgomentoNum = parseInt(product.ListaArgomenti); - productInfo = { ...recproductInfoAttuale, IdArgomento: idArgomentoNum }; + productInfo = { ...recproductInfoAttuale, idArgomento: idArgomentoNum }; } else { productInfo = { ...recproductInfoAttuale }; } @@ -78,26 +78,26 @@ async function updateProductInfo(recproductInfoAttuale, product, idapp, mycatstr return productInfo; } -async function findOrCreateCatProd(idapp, IdArgomento, DescrArgomento) { +async function findOrCreateCatProd(idapp, idArgomento, DescrArgomento) { let reccatprod = null; - if (IdArgomento) { - reccatprod = await CatProd.findOne({ idapp, IdArgomento }).lean(); + if (idArgomento) { + reccatprod = await CatProd.findOne({ idapp, idArgomento }).lean(); } if (!reccatprod) { reccatprod = await CatProd.findOne({ idapp, name: DescrArgomento }).lean(); if (reccatprod) { - if (IdArgomento) { + if (idArgomento) { await CatProd.findOneAndUpdate( { _id: reccatprod._id }, - { $set: { IdArgomento } }, + { $set: { idArgomento } }, { new: true, upsert: false } ); } } else { - if (IdArgomento) { + if (idArgomento) { try { - reccatprod = new CatProd({ idapp, IdArgomento, name: DescrArgomento }); + reccatprod = new CatProd({ idapp, idArgomento, name: DescrArgomento }); await reccatprod.save(); } catch (e) { console.error('Errore nella creazione di CatProd:', e); @@ -112,8 +112,8 @@ async function findOrCreateCatProd(idapp, IdArgomento, DescrArgomento) { function updateProductInfoCatProds(productInfo, reccatprod) { if (productInfo) { - const isChanged = !productInfo.idCatProds || productInfo.idCatProds.length !== 1 || - productInfo.idCatProds[0] !== reccatprod._id; + const isChanged = (!productInfo.idCatProds || productInfo.idCatProds.length < 1) || + (productInfo.idCatProds[0].toString() !== reccatprod._id.toString()); if (isChanged) { productInfo.idCatProds = [reccatprod._id]; @@ -843,7 +843,7 @@ router.post('/import', authenticate, async (req, res) => { let imported = 0; let errors = 0; - const ripopola = false; // SETTARE su TRUE + const ripopola = true; // SETTARE su TRUE if (ripopola) { dataObjects = null; @@ -1143,6 +1143,12 @@ router.post('/import', authenticate, async (req, res) => { checkout_link: product.checkout_link ? product.checkout_link : '', } + let esisteindb = await ProductInfo.findOne({ code: productInfo.code }).lean(); + if (esisteindb) { + productInfo.idCatProds = esisteindb.idCatProds; + productInfo.idSubCatProds = esisteindb.idSubCatProds; + } + let versione = 0; if (indprod % 100 === 0) @@ -1196,8 +1202,6 @@ router.post('/import', authenticate, async (req, res) => { const recrankingisbn = await ImportaIsbn.findOne({ sku: product.sku }).lean(); if (recrankingisbn && recrankingisbn.DescrArgomento) { - productInfo.idCatProds = []; // Azzera - if (tools.isArray(recrankingisbn.ListaArgomenti) && recrankingisbn.ListaArgomenti.length > 1) { console.log('ListaArgomenti STA RITORNANDO UN ARRAY !!!! ', recrankingisbn.ListaArgomenti); } @@ -1342,7 +1346,7 @@ router.post('/import', authenticate, async (req, res) => { product.active = true; } - let esisteindb = await ProductInfo.findOne({ code: productInfo.code }).lean(); + // Update ProductInfo let risrecInfo = await ProductInfo.findOneAndUpdate({ code: productInfo.code }, { $set: productInfo }, { new: true, upsert: true }); if (risrecInfo) { diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index f4fe924..6735805 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1894,6 +1894,7 @@ function load(req, res, version) { let storehouses = Storehouse.findAllIdApp(idapp); let providers = Provider.findAllIdApp(idapp); let catprods = Product.getArrCatProds(idapp, shared_consts.PROD.BOTTEGA); + let catprtotali = CatProd.getCatProdWithTitleCount(idapp); let collane = Collana.findAllIdApp(idapp); let catalogs = Catalog.findAllIdApp(idapp); let catprods_gas = Product.getArrCatProds(idapp, shared_consts.PROD.GAS); @@ -2010,6 +2011,7 @@ function load(req, res, version) { myschedas, collane, catalogs, + catprtotali, ]).then((arrdata) => { // console.table(arrdata); let myuser = req.user; @@ -2107,6 +2109,7 @@ function load(req, res, version) { myschedas: arrdata[51], collane: arrdata[52], catalogs: arrdata[53], + catprtotali: arrdata[54], }); const prova = 1; diff --git a/src/server/version.txt b/src/server/version.txt index a2a8e42..2ac1f8d 100644 --- a/src/server/version.txt +++ b/src/server/version.txt @@ -1 +1 @@ -1.1.21 \ No newline at end of file +1.1.22 \ No newline at end of file