From a3092bff7097a1a62cd676eb77cafb7b15c40475 Mon Sep 17 00:00:00 2001 From: 65160270 <65160270@go.buu.ac.th> Date: Fri, 28 Mar 2025 19:49:31 +0700 Subject: [PATCH] update-cart --- shop-routes/cart.js | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/shop-routes/cart.js b/shop-routes/cart.js index d377010..f0ab7fe 100644 --- a/shop-routes/cart.js +++ b/shop-routes/cart.js @@ -3,13 +3,13 @@ const router = express.Router(); const pool = require('../config/database'); // ฟังก์ชันช่วยคำนวณราคารวม -async function calculateTotal(sessionId) { +async function calculateTotal(userId) { const [cartItems] = await pool.query( `SELECT cart_items.*, products.price FROM cart_items JOIN products ON cart_items.product_id = products.id - WHERE cart_items.session_id = ?`, - [sessionId] + WHERE cart_items.user_id = ?`, // เปลี่ยนจาก session_id เป็น user_id + [userId] ); return cartItems.reduce((sum, item) => sum + (item.price * item.quantity), 0); } @@ -21,10 +21,10 @@ router.get('/', async (req, res) => { `SELECT cart_items.*, products.name, products.price, products.stock FROM cart_items JOIN products ON cart_items.product_id = products.id - WHERE session_id = ?`, - [req.session.id] + WHERE user_id = ?`, // เปลี่ยนจาก session_id เป็น user_id + [req.session.user.id] ); - const total = await calculateTotal(req.session.id); + const total = await calculateTotal(req.session.user.id); res.render('cart', { cartItems, total }); } catch (error) { console.error(error); @@ -50,8 +50,8 @@ router.post('/add', async (req, res) => { // ตรวจสอบว่าสินค้านี้มีอยู่ในตะกร้าหรือยัง const [[existingItem]] = await pool.query( - 'SELECT id, quantity FROM cart_items WHERE session_id = ? AND product_id = ?', - [req.session.id, productId] + 'SELECT id, quantity FROM cart_items WHERE user_id = ? AND product_id = ?', + [req.session.user.id, productId] // ใช้ user_id แทน session_id ); if (existingItem) { @@ -67,8 +67,8 @@ router.post('/add', async (req, res) => { } else { // เพิ่มสินค้าใหม่ await pool.query( - 'INSERT INTO cart_items (session_id, product_id, quantity) VALUES (?, ?, ?)', - [req.session.id, productId, parseInt(quantity)] + 'INSERT INTO cart_items (user_id, product_id, quantity) VALUES (?, ?, ?)', + [req.session.user.id, productId, parseInt(quantity)] // เปลี่ยน session_id → user_id ); } @@ -81,14 +81,15 @@ router.post('/add', async (req, res) => { // อัพเดทจำนวนสินค้าในตะกร้า router.post('/update', async (req, res) => { + console.log("Received Data:", req.body); const { cartItemId, quantity } = req.body; try { const [[cartItem]] = await pool.query( `SELECT cart_items.*, products.price, products.stock FROM cart_items JOIN products ON cart_items.product_id = products.id - WHERE cart_items.id = ? AND cart_items.session_id = ?`, - [cartItemId, req.session.id] + WHERE cart_items.id = ? AND cart_items.user_id = ?`, // เปลี่ยนจาก session_id เป็น user_id + [cartItemId, req.session.user.id] ); if (!cartItem) { @@ -100,11 +101,11 @@ router.post('/update', async (req, res) => { } await pool.query( - 'UPDATE cart_items SET quantity = ? WHERE id = ? AND session_id = ?', - [parseInt(quantity), cartItemId, req.session.id] + 'UPDATE cart_items SET quantity = ? WHERE id = ? AND user_id = ?', + [parseInt(quantity), cartItemId, req.session.user.id] ); - const total = await calculateTotal(req.session.id); + const total = await calculateTotal(req.session.user.id); res.json({ total }); } catch (error) { console.error(error); @@ -117,8 +118,8 @@ router.post('/remove', async (req, res) => { const { cartItemId } = req.body; try { await pool.query( - 'DELETE FROM cart_items WHERE id = ? AND session_id = ?', - [cartItemId, req.session.id] + 'DELETE FROM cart_items WHERE id = ? AND user_id = ?', + [cartItemId, req.session.user.id] // ใช้ user_id แทน session_id ); res.redirect('/cart'); } catch (error) { @@ -129,9 +130,9 @@ router.post('/remove', async (req, res) => { router.get('/cart', (req, res) => { const cartItems = req.session.cart || []; - const editingItemId = req.session.editingItemId || null; // ถ้าไม่มีการแก้ไขก็เป็น null - + const editingItemId = req.session.editingItemId || null; res.render('cart', { cartItems, total: calculateTotal(cartItems), editingItemId }); }); + module.exports = router; \ No newline at end of file -- GitLab