const pool = require('../db'); exports.addToCart = (req, res) => { const { product_id, price } = req.body; const quantity = parseInt(req.body.quantity) || 1; if (!req.session.cart) { req.session.cart = []; } const existingProduct = req.session.cart.find(item => item.product_id === product_id); if (existingProduct) { existingProduct.quantity += quantity; } else { req.session.cart.push({ product_id, quantity, price }); } res.redirect('/cart'); }; exports.viewCart = async (req, res) => { const cart = req.session.cart || []; if (cart.length === 0) { return res.render('cart', { cart: [], products: [] }); } const productIds = cart.map(item => item.product_id); try { const [products] = await pool.query('SELECT * FROM products WHERE product_id IN (?)', [productIds]); // ผูกข้อมูลสินค้าเข้ากับตะกร้า const cartWithDetails = cart.map(item => { const product = products.find(p => p.product_id == item.product_id); // ตรวจสอบว่าเจอสินค้าไหม if (product) { return { ...item, product_name: product.product_name, image: product.image }; } else { // ถ้าไม่พบสินค้า, คืนค่าด้วยค่า default หรือข้อความ return { ...item, product_name: 'ไม่พบสินค้า', image: 'default_image.jpg' }; } }); res.render('cart', { cart: cartWithDetails }); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการโหลดตะกร้าสินค้า: ' + err.message); } }; exports.removeFromCart = (req, res) => { const product_id = req.params.id; req.session.cart = req.session.cart.filter(item => item.product_id !== product_id); res.redirect('/cart'); }; exports.checkout = async (req, res) => { if (!req.session.userIdEmail) { return res.status(401).send('กรุณาเข้าสู่ระบบก่อนทำการสั่งซื้อ'); } const cart = req.session.cart || []; if (cart.length === 0) { return res.redirect('/cart'); } try { const totalAmount = cart.reduce((sum, item) => sum + item.price * item.quantity, 0); const userEmail = req.session.userIdEmail; // ดึง user_id จาก email const [user] = await pool.query('SELECT id FROM users WHERE email = ?', [userEmail]); if (user.length === 0) { return res.status(404).send('ไม่พบผู้ใช้งาน'); } const userId = user[0].id; // สร้างคำสั่งซื้อใน Orders const [orderResult] = await pool.query('INSERT INTO orders (user_id, total_amount) VALUES (?, ?)', [userId, totalAmount]); const orderId = orderResult.insertId; // เพิ่มรายการสินค้าลงใน Order_Items const orderItems = cart.map(item => [orderId, item.product_id, item.quantity, item.price]); await pool.query('INSERT INTO order_items (order_id, book_id, quantity, price) VALUES ?', [orderItems]); // ล้างตะกร้าหลังจาก Checkout สำเร็จ req.session.cart = []; res.redirect('/orderConfirmation'); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการสั่งซื้อ: ' + err.message); } };