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