Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit a3092bff authored by 65160270's avatar 65160270
Browse files

update-cart

parent feb800ac
No related branches found
No related tags found
No related merge requests found
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment