diff --git a/docs/prova.txt b/docs/prova.txt new file mode 100644 index 0000000..54a043f --- /dev/null +++ b/docs/prova.txt @@ -0,0 +1 @@ +"{ \"code\":\"8017977028342\", \"name\":\"Mochi di Riso Integrale Bio - 250g (0828293)\", \"price\":\"10.48\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__mochi-di-riso-integrale-bio-250g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"6.3\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977001215\", \"name\":\"Malto di Riso Bio - 400g (0706072)\", \"price\":\"5.00\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__malto-di-riso-bio-400-g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.1\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977001338\", \"name\":\"KUZU BIO \", \"price\":\"7.56\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__kuzu-bio.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"5.13\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977004544\", \"name\":\"Sale Marino Integrale FINO\", \"price\":\"1.79\", \"stockQty\":\"6\", \"link\":\"\", \"perc_iva\":\"22\", \"price_acquistato\":\"1\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977034374\", \"name\":\"Bevanda di riso - Rice Drink - 1l (0827622)\", \"price\":\"2.30\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__bevanda-di-riso-rice-drink.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"1.31\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977000669\", \"name\":\"Thain Bio Crema di Sesamo\", \"price\":\"7.00\", \"stockQty\":\"6\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.57\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977001666\", \"name\":\"Malto di Orzo Bio - 400g (0706106)\", \"price\":\"5.18\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__malto-di-orzo-bio-400g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.23\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977002427\", \"name\":\"Acidulato di Umeboshi - 250ml (0706067)\", \"price\":\"4.34\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__acidulato-di-umeboshi-250-ml.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.08\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977043604\", \"name\":\"Tè Bancha Bio\", \"price\":\"2.33\", \"stockQty\":\"12\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__te-bancha-non-tostato.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"1.2\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977013720\", \"name\":\"Pangermoglio con Semi di Lino e Girasole 400 gr. (0828261)\", \"price\":\"6.25\", \"stockQty\":\"3\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__pangermoglio-con-semi-di-lino-e-girasole-400-gr.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.27\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977000515\", \"name\":\"Gomasio Bio alle Alghe - 150g (0706085)\", \"price\":\"4.46\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__gomasio-bio-alle-alghe-150g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.15\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8052204790371\", \"name\":\"Uber Granola Proteica Rosè\", \"price\":\"7.09\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__ubergranola-granola-proteica-rose.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.03\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977000614\", \"name\":\"Umeboshi Bio - 100g (0706118)\", \"price\":\"9.43\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__umeboshi-bio-prugne-salate-la-finestra-sul-cielo.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"6.17\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"4015533015007\", \"name\":\"Succo Verdure \", \"price\":\"4.70\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/verdure.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"3.06\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977034350\", \"name\":\"Bio Avena Drink Senza Glutine - 1l (0845294)\", \"price\":\"2.60\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__avena-drink-senza-glutine-1.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"1.35\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977011696\", \"name\":\"Sciroppo d\\'acero Bio\", \"price\":\"9.40\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__sciroppo-d-acero-canadese-bio-grado-c.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"6.02\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977043550\", \"name\":\"Fette di Semi Bio\", \"price\":\"4.98\", \"stockQty\":\"18\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.21\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977042430\", \"name\":\"Soba Bio - 200g (0001198)\", \"price\":\"6.14\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__soba-bio-giapponese.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.15\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"5600872803133\", \"name\":\"Super colazione Lamponi e Burro di Arachidi\", \"price\":\"6.75\", \"stockQty\":\"6\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"5.15\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"4015533014994\", \"name\":\"Succo di Barbabietole\", \"price\":\"4.94\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__succo-di-barbabietola-rossa.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"3.06\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"7618500940110\", \"name\":\"Succo di carota\", \"price\":\"4.20\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__succo-di-carote-500ml.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"2.39\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8004192103107\", \"name\":\"Acqua Minerale Naturale \", \"price\":\"0.83\", \"stockQty\":\"6\", \"link\":\"\", \"perc_iva\":\"22\", \"price_acquistato\":\"0.48\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977031496\", \"name\":\"Crunchy con Avena e Cacao - 375g (0706078)\", \"price\":\"5.23\", \"stockQty\":\"3\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__crunchy-con-avena-e-cacao-375g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.04\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977031441\", \"name\":\"Crunchy con Avena e Frutti Rossi - 375g (0706080)\", \"price\":\"5.78\", \"stockQty\":\"3\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__crunchy-con-avena-e-frutti-rossi-375-gr.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.04\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977035944\", \"name\":\"Gomasio alla Curcuma Bio - 150g (0706088)\", \"price\":\"3.77\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__gomasio-alla-curcuma-bio.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"2.43\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977003974\", \"name\":\"Alghe Marine Nori\", \"price\":\"6.90\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__alghe-marine-nori-in-fogli-25-g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"4.09\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977020018\", \"name\":\"Stuoia in Bambù (per Sushi) (0708808)\", \"price\":\"3.30\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__stuoia-in-bambu-per-sushi.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"2.32\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977004278\", \"name\":\"Fagioli Azuki Bio \", \"price\":\"3.98\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__azuki-hokkaido-500g.php\", \"perc_iva\":\"04\", \"price_acquistato\":\"3.17\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977028342\", \"name\":\"Mochi di Riso Integrale Bio - 250g (0828293)\", \"price\":\"10.48\", \"stockQty\":\"4\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__mochi-di-riso-integrale-bio-250g.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"6.3\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977041808\", \"name\":\"Avena Mandorla Drink Bio - 1l (0828642)\", \"price\":\"2.60\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__avena-mandorla-drink-bio-bevanda-a-base-di-avena-e-mandorla.php\", \"perc_iva\":\"22\", \"price_acquistato\":\"1.45\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977043505\", \"name\":\"Crunchy Snack ai Semi - 110gr (0007125)\", \"price\":\"4.15\", \"stockQty\":\"14\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__crunchy-snack-ai-semi.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"3.31\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8016323046863\", \"name\":\"Peasy snack\", \"price\":\"1.55\", \"stockQty\":\"15\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"1.13\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977043536\", \"name\":\"Mini Crock Bio Avena e Mix di Semi\", \"price\":\"3.25\", \"stockQty\":\"14\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"2.12\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8056734461442\", \"name\":\"Paccheri Rigati Le Campane\", \"price\":\"3.70\", \"stockQty\":\"12\", \"link\":\"\", \"perc_iva\":\"04\", \"price_acquistato\":\"2.47\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8056734463255\", \"name\":\"Le Pugliesi Foglie di Ulivo con Spinaci Bio\", \"price\":\"3.30\", \"stockQty\":\"12\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__foglie-d-ulivo-con-spinaci-bio.php\", \"perc_iva\":\"04\", \"price_acquistato\":\"2.26\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"4012824406094\", \"name\":\"Infuso Uomo energia Yogi\", \"price\":\"4.18\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__infuso-uomo-energia.php\", \"perc_iva\":\"10\", \"price_acquistato\":\"2.27\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"4012824406100\", \"name\":\"Infuso Donna Energia Yogi\", \"price\":\"4.18\", \"stockQty\":\"6\", \"link\":\"https://www.macrolibrarsi.it/prodotti/__infuso-donna-energia.php#descrizione\", \"perc_iva\":\"10\", \"price_acquistato\":\"2.27\", \"producer_name\":\"La Finestra sul Cielo\"}, { \"code\":\"8017977043307\", \"name\":\"Mochi all\\'Artemisia - 250g (0042682)\", \"price\":\"10.40\", \"stockQty\":\"4\", \"link\":\"\", \"perc_iva\":\"10\", \"price_acquistato\":\"6.3\", \"producer_name\":\"La Finestra sul Cielo\"}, " \ No newline at end of file diff --git a/src/server/models/order.js b/src/server/models/order.js index 482a44b..cd59553 100755 --- a/src/server/models/order.js +++ b/src/server/models/order.js @@ -18,9 +18,7 @@ const orderSchema = new Schema({ idapp: { type: String, }, - userId: { - type: String, - }, + userId: { type: Schema.Types.ObjectId, ref: 'User' }, status: { type: Number, }, @@ -63,11 +61,11 @@ const orderSchema = new Schema({ date_spedito: { type: Date }, - completed: { + completato: { type: Boolean, default: false, }, - date_completed: { + date_completato: { type: Date }, consegnato: { diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js index d21b7c7..485378f 100755 --- a/src/server/models/orderscart.js +++ b/src/server/models/orderscart.js @@ -6,6 +6,7 @@ const shared_consts = require('../tools/shared_nodejs'); const Order = require('../models/order'); var { User } = require('../models/user'); +const Storehouse = require('../models/storehouse'); const Product = require('../models/product'); const tools = require('../tools/general'); @@ -54,11 +55,11 @@ const OrdersCartSchema = new Schema({ date_spedito: { type: Date }, - completed: { + completato: { type: Boolean, default: false, }, - date_completed: { + date_completato: { type: Date }, consegnato: { @@ -84,9 +85,6 @@ const OrdersCartSchema = new Schema({ created_at: { type: Date }, - completed_at: { - type: Date - }, deleted: { type: Boolean, default: false, @@ -171,9 +169,62 @@ module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) { query.userId = uid; } - myorderscart = await OrdersCart.find(query).lean(); + myorderscart = await OrdersCart.find(query).populate('items.order') + .populate({ + path: 'items.order', + populate: { + path: 'idProduct', + model: 'Product' + }, + /*transform: function(doc, populated) { + // Rinomina 'idProduct' a 'product' nei risultati della popolazione + populated.product = populated.idProduct; + delete populated.idProduct; + return populated; + },*/ + }) + .populate({ + path: 'items.order', + populate: { + path: 'idProducer', + model: 'Producer' + }, + /* transform: function(doc, populated) { + // Rinomina 'idProduct' a 'product' nei risultati della popolazione + populated.producer = populated.idProducer; + delete populated.idProducer; + return populated; + }, */ + }) + .populate({ + path: 'items.order', + populate: { + path: 'idStorehouse', + model: 'Storehouse' + }, + /*transform: function(doc, populated) { + // Rinomina 'idProduct' a 'product' nei risultati della popolazione + populated.storehouse = populated.idStorehouse; + delete populated.idStorehouse; + return populated; + },*/ + }) + .populate('userId').lean(); - for (let ind = 0; ind < myorderscart.length; ind++) { + myorderscart = myorderscart.map(order => { + order.items = order.items.map(item => { + item.order.product = item.order.idProduct; + delete item.order.idProduct; + item.order.producer = item.order.idProducer; + delete item.order.idProducer; + item.order.storehouse = item.order.idStorehouse; + delete item.order.idStorehouse; + return item; + }); + return order; + }); + + /*for (let ind = 0; ind < myorderscart.length; ind++) { for (const idkey in myorderscart[ind].items) { try { let idorder = myorderscart[ind].items[idkey]._id.toString(); @@ -181,16 +232,16 @@ module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) { if (!!myorder) { idorder = myorderscart[ind].items[idkey].order._id.toString(); } - myorderscart[ind].nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId); - const myord = await Order.getTotalOrderById(idorder); - if (myord.length > 0) { - myorderscart[ind].items[idkey].order = myord[0]; - } + // myorderscart[ind].nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId); + // const myord = await Order.getTotalOrderById(idorder); + // if (myord.length > 0) { + // myorderscart[ind].items[idkey].order = myord[0]; + // } } catch (e) { console.log('err', e); } } - } + }*/ /* if (!!mycart) { for (const idkey in mycart.items) { @@ -305,88 +356,96 @@ module.exports.updateOrdersCartById = function (id, newOrdersCart, callback) { }) } -module.exports.setEvasoById = async function (id, evaso) { +module.exports.setFieldInOrdersById = async function (objtoset, myOrderCart) { - return await OrdersCart.findOneAndUpdate( - { _id: id }, + const ris = await OrdersCart.findOneAndUpdate( + { _id: myOrderCart._id }, { - $set: { - evaso, - date_evaso: new Date(), - } + $set: objtoset }, { new: false } ) + + // Imposta su tutti i singoli prodotti ordinati (Order) + for (const order of myOrderCart.items) { + await Order.findOneAndUpdate( + { _id: order._id }, + { + $set: objtoset + }, + { new: false } + ) + } + } -module.exports.setConsegnatoById = async function (id, consegnato) { +module.exports.setConsegnatoById = async function (value, myOrderCart) { + + let objtoset = { + consegnato: value, + date_consegnato: new Date(), + }; + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); - return await OrdersCart.findOneAndUpdate( - { _id: id }, - { - $set: { - consegnato, - date_consegnato: new Date(), - } - }, - { new: false } - ) } -module.exports.setSpeditoById = async function (id, spedito) { +module.exports.setSpeditoById = async function (value, myOrderCart) { + + let objtoset = { + spedito: value, + date_spedito: new Date(), + }; + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); - return await OrdersCart.findOneAndUpdate( - { _id: id }, - { - $set: { - spedito, - date_spedito: new Date(), - } - }, - { new: false } - ) } -module.exports.setPagatoById = async function (id, pagato) { +module.exports.setPagatoById = async function (value, myOrderCart) { + + let objtoset = { + pagato: value, + date_pagato: new Date(), + }; + + if (!value) { + objtoset.date_pagato = null; + } + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); - return await OrdersCart.findOneAndUpdate( - { _id: id }, - { - $set: { - pagato, - date_pagato: new Date(), - } - }, - { new: false } - ) } -module.exports.setCompletatoById = async function (id, completato) { +module.exports.setCompletatoById = async function (value, myOrderCart) { + + let objtoset = { + completato: value, + date_completato: new Date(), + }; + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); - return await OrdersCart.findOneAndUpdate( - { _id: id }, - { - $set: { - completato, - date_completato: new Date(), - } - }, - { new: false } - ) } -module.exports.setRicevutoById = async function (id, completato) { +module.exports.setEvasoById = async function (value, myOrderCart) { - return await OrdersCart.findOneAndUpdate( - { _id: id }, - { - $set: { - ricevuto, - date_ricevuto: new Date(), - } - }, - { new: false } - ) + let objtoset = { + evaso: value, + date_evaso: new Date(), + }; + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); + +} + +module.exports.setRicevutoById = async function (value, myOrderCart) { + + let objtoset = { + ricevuto: value, + date_ricevuto: new Date(), + }; + + return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); } module.exports.createOrdersCart = async function (newOrdersCart) { @@ -403,23 +462,14 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) { let idorder = myorderscart.items[idkey]._id; let order = myorderscart.items[idkey].order; - const ris = await Order.findOneAndUpdate( - { _id: idorder }, - { - $set: { - completato: true, - date_completato: new Date(), + if (!order.evaso) { + const update = { + $inc: { + stockQty: -order.quantity } - }, - { new: false } - ) - - const update = { - $inc: { - stockQty: -order.quantity - } - }; - await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); + }; + await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); + } } } @@ -429,34 +479,41 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) { } -module.exports.updateCmd = async function (idorderscart, cmd, value) { +module.exports.updateCmd = async function (ordersCart, status, value) { - let myOrderCart = await OrdersCart.findOne({ _id: idorderscart }); + + let myOrderCart = await OrdersCart.findOne({ _id: ordersCart._id }).populate('items.order').lean(); try { if (!!myOrderCart) { + const id = myOrderCart._id; - if (cmd === shared_consts.OrderStatus.ORDER_CONFIRMED) { - ris = await OrdersCart.setEvasoById(id, value); + if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) { // Aggiorna anche il Magazzino, togliendo le quantità in Stock if (value) { OrdersCart.updateStockQtaDalMagazzino(id); } - } else if (cmd === shared_consts.OrderStatus.DELIVERED) { - ris = await OrdersCart.setConsegnatoById(id, value); - } else if (cmd === shared_consts.OrderStatus.SHIPPED) { - ris = await OrdersCart.setSpeditoById(id, value); - } else if (cmd === shared_consts.OrderStatus.PAYED) { - ris = await OrdersCart.setPagatoById(id, value); - } else if (cmd === shared_consts.OrderStatus.COMPLETED) { - ris = await OrdersCart.setCompletatoById(id, value); - } else if (cmd === shared_consts.OrderStatus.RECEIVED) { - ris = await OrdersCart.setRicevutoById(id, value); + ris = await OrdersCart.setEvasoById(value, myOrderCart); + + } else if (status === shared_consts.OrderStatus.DELIVERED) { + ris = await OrdersCart.setConsegnatoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.SHIPPED) { + ris = await OrdersCart.setSpeditoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.PAYED) { + ris = await OrdersCart.setPagatoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.COMPLETED) { + ris = await OrdersCart.setCompletatoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.RECEIVED) { + ris = await OrdersCart.setRicevutoById(value, myOrderCart); } + await OrdersCart.setFieldInOrdersById({ status }, myOrderCart); + + myOrderCart = await OrdersCart.findOne({ _id: ordersCart._id }).populate('items.order').lean(); // myOrderCart = await OrdersCart.findOne({ _id: idorderscart }); + return myOrderCart; } } catch (e) { console.error('Err:', e) diff --git a/src/server/models/product.js b/src/server/models/product.js index 5fda387..29488f2 100755 --- a/src/server/models/product.js +++ b/src/server/models/product.js @@ -3,6 +3,8 @@ const Schema = mongoose.Schema; const tools = require('../tools/general'); +const Producer = require('../models/producer'); + const shared_consts = require('../tools/shared_nodejs'); mongoose.Promise = global.Promise; @@ -58,6 +60,10 @@ const productSchema = new Schema({ type: Number, required: true, }, + price_acquistato: { + type: Number, + required: true, + }, after_price: { type: String }, @@ -113,6 +119,9 @@ const productSchema = new Schema({ img: { type: String, }, + link: { + type: String, + }, img2: { type: String, }, @@ -128,6 +137,9 @@ const productSchema = new Schema({ note: { type: String, }, + producer_name: { + type: String, + } }); var Product = module.exports = mongoose.model('Product', productSchema); @@ -198,7 +210,7 @@ module.exports.findAllIdApp = async function (idapp, code) { }, { $addFields: { - totalQty: { + QuantitaOrdinateInAttesa: { $cond: { if: { $isArray: '$productOrders' }, then: { $arrayElemAt: ['$productOrders.totalQty', 0] }, @@ -266,6 +278,25 @@ module.exports.createIndexes((err) => { if (err) throw err; }); +module.exports.convertAfterImport = async function () { + + const arrprod = await Product.find({}).lean(); + for (const prod of arrprod) { + if (prod.producer_name) { + + // Cerca il produttore + const recproducer = await Producer.findOne({ name: prod.producer_name }).lean(); + + const campodarimuovere = 'producer_name'; + + if (recproducer) { + await Product.findOneAndUpdate({ _id: prod._id }, { $set: { idProducer: recproducer._id } }) + await Product.findOneAndUpdate({ _id: prod._id }, { $unset: { [campodarimuovere]: 1 } }) + } + } + } +} + // const Product = mongoose.model('Product', ProductSchema); diff --git a/src/server/router/admin_router.js b/src/server/router/admin_router.js index be77475..f96146c 100755 --- a/src/server/router/admin_router.js +++ b/src/server/router/admin_router.js @@ -1,15 +1,16 @@ const express = require('express'); const router = express.Router(); const mongoose = require('mongoose').set('debug', false); -const {CfgServer} = require('../models/cfgserver'); +const { CfgServer } = require('../models/cfgserver'); const shared_consts = require('../tools/shared_nodejs'); const tools = require('../tools/general'); -const {City} = require('../models/city'); +const { City } = require('../models/city'); +const Product = require('../models/product'); -var {authenticate} = require('../middleware/authenticate'); +var { authenticate } = require('../middleware/authenticate'); router.post('/updateval', authenticate, async (req, res) => { console.log('/updateval', req.body.pairval); @@ -17,24 +18,24 @@ router.post('/updateval', authenticate, async (req, res) => { pair = req.body.pairval; return await CfgServer.findOneAndUpdate( - {chiave: pair.chiave, idapp, userId: pair.userId}, {$set: pair}, - {new: false}).then((item) => { - // CfgServer.find({ chiave: pair.chiave }, (err, item) => { - if (!!item) { - res.status(200).send(); - } else { + { chiave: pair.chiave, idapp, userId: pair.userId }, { $set: pair }, + { new: false }).then((item) => { + // CfgServer.find({ chiave: pair.chiave }, (err, item) => { + if (!!item) { + res.status(200).send(); + } else { + res.status(400).send(); + } + }).catch(err => { + console.log('ERR:', err); res.status(400).send(); - } - }).catch(err => { - console.log('ERR:', err); - res.status(400).send(); - }); + }); }); router.post('/import', authenticate, async (req, res) => { const cmd = req.body.cmd; - const data = []; + const data = req.body.data; try { const liste = require('../data/liste'); @@ -44,8 +45,21 @@ router.post('/import', authenticate, async (req, res) => { return res.status(200).send(true); }); + } else if (cmd === shared_consts.Cmd.PRODUCTS) { + + let dataObjects = JSON.parse(`[${data}]`); + + return await Product.insertMany(dataObjects).then((ris) => { + + Product.convertAfterImport().then((ris) => { + return res.status(200).send(true); + }); + + + }); + } - }catch (e) { + } catch (e) { console.error('e', e); res.status(400).send(); } diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js index ecfb8d4..673b4e1 100755 --- a/src/server/router/cart_router.js +++ b/src/server/router/cart_router.js @@ -281,7 +281,9 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, const user = req.user; let status = req.body.status; - const orderCart = await OrdersCart.findOne({ idapp, _id: order_id }).lean(); + const { User } = require('../models/user'); + + let orderCart = await OrdersCart.findOne({ idapp, _id: order_id }).lean(); if ((userId !== String(req.user._id)) && !User.isManager(req.user.perm)) { // I'm trying to write something not mine! @@ -300,7 +302,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, if (ris) { // Aggiorna gli Stati Interni ! - await OrdersCart.updateCmd(orderCart, status, true); + orderCart = await OrdersCart.updateCmd(orderCart, status, true); let ordertype = ''; @@ -321,8 +323,16 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, } }) + let orderscart = null; - return res.send({ code: server_constants.RIS_CODE_OK, status }); + if (User.isManager(user.perm)) { + // Prende Tutti gli Ordini ! + orderscart = await OrdersCart.getOrdersCartByUserId('ALL', idapp, 0); + } else { + orderscart = await OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0); + } + + return res.send({ code: server_constants.RIS_CODE_OK, status, orders: orderscart }); } } catch (e) { diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index c8c1751..6f10556 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -277,10 +277,15 @@ module.exports = { Outcoming: 2, }, + Cmd: { PROVINCE: 1, COMUNI: 2, CITIES_SERVER: 3, + CAT_SKILL_TXT: 4, + CAT_NO_SPAZI: 5, + CAT_GOODS_TXT: 10, + PRODUCTS: 20, }, WalletFinalStatusType: {