From e3ed2934eef303de2448bf6975fb0632bbe14398 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Thu, 30 Nov 2023 14:27:37 +0100 Subject: [PATCH] Struttura Scheda Prodotti... --- src/server/models/cart.js | 90 ++++++++-------- src/server/models/order.js | 3 + src/server/models/product.js | 3 + src/server/router/cart_router.js | 168 +++++++++++++++++------------- src/server/router/index_router.js | 2 + src/server/tools/shared_nodejs.js | 32 ++++++ 6 files changed, 181 insertions(+), 117 deletions(-) diff --git a/src/server/models/cart.js b/src/server/models/cart.js index 8aff97a..6e20fd9 100755 --- a/src/server/models/cart.js +++ b/src/server/models/cart.js @@ -9,16 +9,16 @@ const CartSchema = new Schema({ idapp: { type: String, }, - userId: {type: Schema.Types.ObjectId, ref: 'User'}, - totalQty: {type: Number, default: 0}, - totalPrice: {type: Number, default: 0}, + userId: { type: Schema.Types.ObjectId, ref: 'User' }, + totalQty: { type: Number, default: 0 }, + totalPrice: { type: Number, default: 0 }, department: { type: String, ref: 'Department', }, items: [ { order: - {type: Schema.Types.ObjectId, ref: 'Order'}, + { type: Schema.Types.ObjectId, ref: 'Order' }, }, ], note: { @@ -31,57 +31,61 @@ const CartSchema = new Schema({ var Cart = module.exports = mongoose.model('Cart', CartSchema); -module.exports.findAllIdApp = async function(idapp, userId) { - const myfind = {idapp, userId}; +module.exports.findAllIdApp = async function (idapp, userId) { + const myfind = { idapp, userId }; return await Cart.findOne(myfind).lean(); }; -module.exports.getCartByUserId = async function(uid, idapp) { - let query = {userId: uid, idapp}; - const mycart = await Cart.findOne(query).lean(); +module.exports.getCartByUserId = async function (uid, idapp) { + try { + let query = { userId: uid, idapp }; + const mycart = await Cart.findOne(query).lean(); - if (!!mycart) { - for (const idkey in mycart.items) { - try { - idorder = mycart.items[idkey]._id.toString(); - const myorder = mycart.items[idkey].order; - if (!!myorder) { - idorder = mycart.items[idkey].order._id.toString(); + if (!!mycart) { + for (const idkey in mycart.items) { + try { + idorder = mycart.items[idkey]._id.toString(); + const myorder = mycart.items[idkey].order; + if (!!myorder) { + idorder = mycart.items[idkey].order._id.toString(); + } + const myord = await Order.getTotalOrderById(idorder); + if (myord.length > 0) { + mycart.items[idkey].order = myord[0]; + } + } catch (e) { + console.log('err', e); } - const myord = await Order.getTotalOrderById(idorder); - if (myord.length > 0) { - mycart.items[idkey].order = myord[0]; - } - } catch (e) { - console.log('err', e); } + return mycart; } - return mycart; + return null; + } catch (e) { + console.log('getCartByUserId err', e); } - return null; }; -module.exports.updateCartByUserId = function(userId, newCart, callback) { - let query = {userId: userId}; - Cart.find(query, function(err, c) { +module.exports.updateCartByUserId = function (userId, newCart, callback) { + let query = { userId: userId }; + Cart.find(query, function (err, c) { if (err) throw err; //exist cart in databse if (c.length > 0) { Cart.findOneAndUpdate( - {userId: userId}, - { - $set: { - items: newCart.items, - totalQty: newCart.totalQty, - totalPrice: newCart.totalPrice, - userId: userId, - }, + { userId: userId }, + { + $set: { + items: newCart.items, + totalQty: newCart.totalQty, + totalPrice: newCart.totalPrice, + userId: userId, }, - {new: true}, - callback, + }, + { new: true }, + callback, ); } else { //no cart in database @@ -90,7 +94,7 @@ module.exports.updateCartByUserId = function(userId, newCart, callback) { }); }; -module.exports.updateCartByCartId = async function(cartId, newCart) { +module.exports.updateCartByCartId = async function (cartId, newCart) { // delete newCart._doc._id; const items = newCart.items; const totalQty = newCart.totalQty; @@ -98,14 +102,14 @@ module.exports.updateCartByCartId = async function(cartId, newCart) { const modify_at = new Date(); - return await Cart.findOneAndUpdate({_id: cartId}, { + return await Cart.findOneAndUpdate({ _id: cartId }, { $set: { items, totalPrice, totalQty, modify_at, }, - }, {new: false}).lean().then((ris) => { + }, { new: false }).lean().then((ris) => { return ris; }).catch(err => { console.log('err', err); @@ -114,11 +118,11 @@ module.exports.updateCartByCartId = async function(cartId, newCart) { }; -module.exports.deleteCartByCartId = async function(cartId) { - return await Cart.remove({_id: cartId}); +module.exports.deleteCartByCartId = async function (cartId) { + return await Cart.remove({ _id: cartId }); }; -module.exports.createCart = async function(newCart) { +module.exports.createCart = async function (newCart) { return await newCart.save(); }; diff --git a/src/server/models/order.js b/src/server/models/order.js index 25db436..e9391f1 100755 --- a/src/server/models/order.js +++ b/src/server/models/order.js @@ -51,6 +51,9 @@ const orderSchema = new Schema({ weight: { type: Number }, + unit: { + type: Number + }, stars: { type: Number }, diff --git a/src/server/models/product.js b/src/server/models/product.js index 4021336..09ba539 100755 --- a/src/server/models/product.js +++ b/src/server/models/product.js @@ -61,6 +61,9 @@ const productSchema = new Schema({ weight: { type: Number }, + unit: { + type: Number + }, quantityAvailable: { type: Number }, diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js index c993cc2..006b626 100755 --- a/src/server/router/cart_router.js +++ b/src/server/router/cart_router.js @@ -30,17 +30,20 @@ const Cart = require('../models/cart'); const OrdersCart = require('../models/orderscart'); //GET cart -router.get('/:userId', authenticate, function (req, res, next) { - let userId = req.body.userId - let idapp = req.body.idapp - Cart.getCartByUserId(userId, idapp, function (err, cart) { - if (err) return next(err) +router.get('/:userId', authenticate, async function (req, res, next) { + let userId = req.params.userId + let idapp = req.user.idapp + return await Cart.getCartByUserId(userId, idapp) + .then((cart) => { + if (cart) + return res.send({ code: server_constants.RIS_CODE_OK, cart }); + else + return res.status(400).send(e); + }).catch((err) => { + console.error('Err', err); + return res.send({ code: server_constants.RIS_CODE_ERR, cart: null }); + }); - if (cart) - res.send({ code: server_constants.RIS_CODE_OK, cart }); - else - res.status(400).send(e); - }) }) //POST cart @@ -51,46 +54,54 @@ router.post('/:userId', authenticate, async function (req, res, next) { let subqty = req.body.subqty; let order = req.body.order; - const mycart = await Cart.getCartByUserId(userId, idapp); + try { - // const myorder = Order.getOrderByID(order._id); - if (!addqty && !subqty) - order._id = await Order.createOrder(order); + const mycart = await Cart.getCartByUserId(userId, idapp); - let cart = null; - // no cart save empty cart to database then return response - let myqty = 0; - if (!mycart) { - let oldCart = new CartClass(order) - cart = await Cart.createCart(oldCart.generateModel()); - } else { - let newCart = CartClass.constructByCart(mycart); - if (addqty) { - myqty = await newCart.addqty(order); - } else if (subqty) { - myqty = await newCart.subqty(order); + // const myorder = Order.getOrderByID(order._id); + if (!addqty && !subqty) + order._id = await Order.createOrder(order); + + let cart = null; + // no cart save empty cart to database then return response + let myqty = 0; + if (!mycart) { + let oldCart = new CartClass(order) + cart = await Cart.createCart(oldCart.generateModel()); } else { - const ind = newCart.addItem(order); + let newCart = CartClass.constructByCart(mycart); + if (addqty) { + myqty = await newCart.addqty(order); + } else if (subqty) { + myqty = await newCart.subqty(order); + } else { + const ind = newCart.addItem(order); + } + cart = await Cart.updateCartByCartId(mycart._id, newCart.generateModel()); } - cart = await Cart.updateCartByCartId(mycart._id, newCart.generateModel()); - } - if (cart) { - const carttot = await Cart.getCartByUserId(userId, idapp); - return res.send({ code: server_constants.RIS_CODE_OK, cart: carttot, qty: myqty }); - } else { - return res.send({ code: server_constants.RIS_CODE_ERR, cart: null }); + if (cart) { + const carttot = await Cart.getCartByUserId(userId, idapp); + return res.send({ code: server_constants.RIS_CODE_OK, cart: carttot, qty: myqty }); + } else { + return res.send({ code: server_constants.RIS_CODE_ERR, cart: null }); + } + + /* + Cart.updateCartByUserId( + userId, + newCart, + function (err, result) { + if (err) return next(err) + return res.status(200).json({ cart: result }) + }) + + */ + + + } catch (e) { + return res.send({ code: server_constants.RIS_CODE_ERR, cart: 0 }); } - /* - Cart.updateCartByUserId( - userId, - newCart, - function (err, result) { - if (err) return next(err) - return res.status(200).json({ cart: result }) - }) - - */ }) router.delete('/:userId', authenticate, async function (req, res) { @@ -122,47 +133,56 @@ router.delete('/:userId', authenticate, async function (req, res) { //PUT cart -router.put('/:userId', authenticate, function (req, res, next) { +router.put('/:userId', authenticate, async function (req, res, next) { let userId = req.params.userId let requestProduct = req.body let { productId, color, size } = requestProduct.product - Cart.getCartByUserId(userId, function (err, c) { - if (err) return next(err) - let oldCart = new CartClass(c[0] || {}) - Product.getProductByID(productId, function (err, p) { - if (err) return next(err) - let newCart = oldCart.add(p, productId, { color, size }) + try { - //exist cart in databse - if (c.length > 0) { - Cart.updateCartByUserId( - userId, - { + await Cart.getCartByUserId(userId, function (err, c) { + if (err) return next(err) + let oldCart = new CartClass(c[0] || {}) + + Product.getProductByID(productId, function (err, p) { + if (err) return next(err) + let newCart = oldCart.add(p, productId, { color, size }) + + //exist cart in databse + if (c.length > 0) { + Cart.updateCartByUserId( + userId, + { + items: newCart.items, + totalQty: newCart.totalQty, + totalPrice: newCart.totalPrice, + userId: userId + }, + function (err, result) { + if (err) return next(err) + res.json(result) + }) + } else { + //no cart in database + newCart = new Cart({ items: newCart.items, totalQty: newCart.totalQty, totalPrice: newCart.totalPrice, userId: userId - }, - function (err, result) { - if (err) return next(err) - res.json(result) }) - } else { - //no cart in database - newCart = new Cart({ - items: newCart.items, - totalQty: newCart.totalQty, - totalPrice: newCart.totalPrice, - userId: userId - }) - Cart.createCart(newCart, function (err, resultCart) { - if (err) return next(err) - res.status(201).json(resultCart) - }) - } + Cart.createCart(newCart, function (err, resultCart) { + if (err) return next(err) + res.status(201).json(resultCart) + }) + } + }) }) - }) + + return res.send({ code: server_constants.RIS_CODE_OK }); + } catch (e) { + return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 }); + } + }) //POST cart diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 960f8bf..2757808 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1573,6 +1573,8 @@ function load(req, res, version) { myelems: arrdata[38], categories: arrdata[39], }); + + const prova = 1; } }).catch((e) => { diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 08ef4bf..4ec867d 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -326,6 +326,38 @@ module.exports = { OPZ1_2: 2, }, + UNITS_OF_MEASURE: { + NESSUNO: 0, + GRAMMI: 1, + CHILI: 2, + LITRI: 3, + PEZZI: 4, + }, + + Units_Of_Measure_ListBox: [ + { + label: '[Nessuno]', + value: 0, + }, + { + label: 'Grammi (g)', + value: 1, + }, + { + label: 'Chili (kg)', + value: 2, + }, + { + label: 'Litri (l)', + value: 3, + }, + { + label: 'Pezzi (p)', + value: 4, + }, + ], + + CallFunz: { SOSTITUISCI: 345, AGGIUNGI_NUOVO_IMBARCO: 380,