diff --git a/shop-routes/order.js b/shop-routes/order.js index 94b03ac48e42cae1b592149f18bdf72e719594ed..4d9cda28a96b342b69a3b9f3b4d3baa5e6223b42 100644 --- a/shop-routes/order.js +++ b/shop-routes/order.js @@ -51,7 +51,7 @@ router.get('/history', isAuthenticated, async (req, res) => { }); // แสดงรายละเอียดออเดอร์ (เฉพาะผู้ที่ Login) -router.get('/details/:orderId', isAuthenticated, async (req, res) => { +router.get('/detail/:orderId', isAuthenticated, async (req, res) => { try { if (!req.session.id) { return res.status(400).json({ message: "Session ID not found. Please login again." }); @@ -61,8 +61,13 @@ router.get('/details/:orderId', isAuthenticated, async (req, res) => { console.log(`🔹 Fetching order ID: ${orderId}, Session ID: ${req.session.id}`); const [orderResults] = await pool.query( - `SELECT id, total_amount, status, shipping_address, created_at - FROM orders WHERE id = ? AND session_id = ?`, + `SELECT orders.id, orders.total_amount, orders.status, orders.shipping_address, orders.created_at, + GROUP_CONCAT(CONCAT(products.name, ' x ', order_items.quantity, ' (฿', order_items.price, ')') SEPARATOR ', ') as items_detail + FROM orders + JOIN order_items ON orders.id = order_items.order_id + JOIN products ON order_items.product_id = products.id + WHERE orders.id = ? AND orders.session_id = ? + GROUP BY orders.id`, [orderId, req.session.id] ); @@ -72,10 +77,7 @@ router.get('/details/:orderId', isAuthenticated, async (req, res) => { } console.log("Order found:", orderResults[0]); - - // เปลี่ยนจาก `res.json(orderResults[0]);` เป็น `res.render` - res.render('order-detail', { order: orderResults[0] }); - + res.json(orderResults[0]); } catch (error) { console.error("Error fetching order:", error); res.status(500).json({ message: "Something went wrong.", error: error.message }); @@ -87,7 +89,6 @@ router.put('/detail/:orderId', isAuthenticated, async (req, res) => { try { console.log("Updating order..."); console.log("Session ID:", req.session.id); - console.log("Order ID:", req.params.orderId); console.log("New Address:", req.body.shipping_address); const [orderResults] = await pool.query( @@ -174,10 +175,19 @@ router.post('/create', isAuthenticated, async (req, res) => { const total = cartItems.reduce((sum, item) => sum + (item.price * item.quantity), 0); + if (!req.session.id) { + return res.status(400).json({ message: "Session ID not found. Please login again." }); + } + const [order] = await conn.query( 'INSERT INTO orders (session_id, total_amount, status, shipping_address) VALUES (?, ?, ?, ?)', [req.session.id, total, 'pending', address] ); + + // ตรวจสอบว่า INSERT สำเร็จหรือไม่ + if (!order.insertId) { + throw new Error("Failed to create order."); + } for (const item of cartItems) { await conn.query(