From b59223f2fd8bc137a01878200769702cc283a78c Mon Sep 17 00:00:00 2001
From: 65160270 <65160270@go.buu.ac.th>
Date: Fri, 28 Mar 2025 20:14:37 +0700
Subject: [PATCH] update-cart

---
 shop-routes/cart.js | 38 ++++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 14 deletions(-)

diff --git a/shop-routes/cart.js b/shop-routes/cart.js
index 1d77cfe..e1b0876 100644
--- a/shop-routes/cart.js
+++ b/shop-routes/cart.js
@@ -17,23 +17,35 @@ async function calculateTotal(sessionId) {
 // เนเธชเธ”เธ‡เธ•เธฐเธเธฃเน‰เธฒเธชเธดเธ™เธ„เน‰เธฒ
 router.get('/', async (req, res) => {
     try {
+        if (!req.session.user) {
+            return res.status(401).send('Unauthorized');
+        }
+
         const [cartItems] = await pool.query(
-            `SELECT cart_items.*, products.name, products.price, products.stock
+            `SELECT cart_items.*, products.name, products.price, products.stock, products.description 
              FROM cart_items 
              JOIN products ON cart_items.product_id = products.id 
-             WHERE session_id = ?`,
-            [req.session.id]
+             WHERE cart_items.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);
+        console.error("Error fetching cart:", error);
         res.status(500).send('Error fetching cart');
     }
 });
 
 // เน€เธžเธดเนˆเธกเธชเธดเธ™เธ„เน‰เธฒเธฅเธ‡เธ•เธฐเธเธฃเน‰เธฒ
 router.post('/add', async (req, res) => {
+    console.log("Session User:", req.session.user);
+    console.log("Received Data:", req.body);
+
+    if (!req.session.user) {
+        return res.status(401).send('Unauthorized');
+    }
+
     const { productId, quantity } = req.body;
     try {
         const [[product]] = await pool.query(
@@ -48,14 +60,12 @@ router.post('/add', async (req, res) => {
             return res.status(400).send('เธชเธดเธ™เธ„เน‰เธฒเธกเธตเธˆเธณเธ™เธงเธ™เน„เธกเนˆเน€เธžเธตเธขเธ‡เธžเธญ');
         }
 
-        // เธ•เธฃเธงเธˆเธชเธญเธšเธงเนˆเธฒเธชเธดเธ™เธ„เน‰เธฒเธ™เธตเน‰เธกเธตเธญเธขเธนเนˆเนƒเธ™เธ•เธฐเธเธฃเน‰เธฒเธซเธฃเธทเธญเธขเธฑเธ‡
         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]
         );
 
         if (existingItem) {
-            // เธญเธฑเธ›เน€เธ”เธ•เธˆเธณเธ™เธงเธ™เธชเธดเธ™เธ„เน‰เธฒ
             const newQuantity = existingItem.quantity + parseInt(quantity);
             if (newQuantity > product.stock) {
                 return res.status(400).send('เธชเธดเธ™เธ„เน‰เธฒเธกเธตเธˆเธณเธ™เธงเธ™เน„เธกเนˆเน€เธžเธตเธขเธ‡เธžเธญ');
@@ -65,20 +75,20 @@ router.post('/add', async (req, res) => {
                 [newQuantity, existingItem.id]
             );
         } 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)]
             );
         }
 
         res.redirect('/cart');
     } catch (error) {
-        console.error(error);
-        res.status(500).send('Error adding to cart');
+        console.error("Error adding to cart:", error);
+        res.status(500).send('Error adding to cart.');
     }
 });
 
+
 // เธญเธฑเธžเน€เธ”เธ—เธˆเธณเธ™เธงเธ™เธชเธดเธ™เธ„เน‰เธฒเนƒเธ™เธ•เธฐเธเธฃเน‰เธฒ
 router.post('/update', async (req, res) => {
     console.log("Received Data:", req.body);
-- 
GitLab