const pool = require('../db'); exports.showAddProductForm = (req, res) => { res.render('addProduct'); }; exports.createProduct = async (req, res) => { const { product_name, price, image, description } = req.body; const userEmail = req.session.userIdEmail; try { // ดึง user ID โดยใช้ email ที่เก็บไว้ใน session const [userRows] = await pool.query('SELECT id FROM users WHERE email = ?', [userEmail]); if (userRows.length === 0) { return res.status(400).send('ไม่พบข้อมูลผู้ใช้งาน'); } const ownerId = userRows[0].id; // insert ข้อมูลสินค้า โดยใช้ ID ของผู้ใช้งาน const sql = 'INSERT INTO products (product_name, price, image, description, owner) VALUES (?, ?, ?, ?, ?)'; await pool.query(sql, [product_name, price, image, description, ownerId]); res.redirect('/'); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการเพิ่มสินค้า: ' + err.message); } }; exports.showUpdateProductForm = async (req, res) => { const productId = req.params.id; try { const [rows] = await pool.query('SELECT * FROM products WHERE product_id = ?', [productId]); if (rows.length === 0) { return res.status(404).send('ไม่พบสินค้านี้'); } res.render('editProduct', { product: rows[0] }); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการโหลดข้อมูลสินค้า: ' + err.message); } }; exports.updateProduct = async (req, res) => { const productId = req.params.id; const { product_name, price, image, description } = req.body; const currentUserEmail = req.session.userIdEmail; try { // ดึงข้อมูลสินค้าพร้อมอีเมลของเจ้าของสินค้า const [rows] = await pool.query(` SELECT p.*, u.email as owner_email FROM products p JOIN users u ON p.owner = u.id WHERE p.product_id = ?`, [productId]); if (rows.length === 0) { return res.status(404).send('ไม่พบสินค้านี้'); } const product = rows[0]; // เปรียบเทียบด้วย email ที่ถูกต้อง if (product.owner_email !== currentUserEmail) { return res.status(403).send('คุณไม่มีสิทธิ์แก้ไขสินค้านี้'); } // ถ้ามีสิทธิ์ก็อัปเดตข้อมูลได้ const sql = 'UPDATE products SET product_name = ?, price = ?, image = ?, description = ? WHERE product_id = ?'; await pool.query(sql, [product_name, price, image, description, productId]); res.redirect('/'); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการอัปเดตสินค้า: ' + err.message); } }; exports.deleteProduct = async (req, res) => { const productId = req.params.id; const currentUserEmail = req.session.userIdEmail; try { // ดึงข้อมูลสินค้าพร้อมอีเมลเจ้าของสินค้า const [rows] = await pool.query(` SELECT p.*, u.email as owner_email FROM products p JOIN users u ON p.owner = u.id WHERE p.product_id = ?`, [productId]); if (rows.length === 0) { return res.status(404).send('ไม่พบสินค้านี้'); } const product = rows[0]; // ตรวจสอบสิทธิ์ด้วยอีเมล if (product.owner_email !== currentUserEmail) { return res.status(403).send('คุณไม่มีสิทธิ์ลบสินค้านี้'); } // ถ้าผ่านเงื่อนไข ก็สามารถลบสินค้าได้ await pool.query('DELETE FROM products WHERE product_id = ?', [productId]); res.redirect('/'); } catch (err) { res.status(500).send('Database error: ' + err.message); } }; exports.searchProducts = async (req, res) => { const searchQuery = req.query.q; // รับค่าค้นหาจาก query parameter try { const sql = 'SELECT * FROM products WHERE product_name LIKE ?'; const [rows] = await pool.query(sql, [`%${searchQuery}%`]); // ค้นหาชื่อสินค้าที่คล้ายกัน res.render('searchResults', { products: rows, searchQuery }); // ส่งผลลัพธ์ไปยังหน้า searchResults.ejs } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการค้นหา: ' + err.message); } }; exports.showProductDetails = async (req, res) => { const productId = req.params.id; try { const [rows] = await pool.query(` SELECT p.*, u.email as owner_email FROM products p JOIN users u ON p.owner = u.id WHERE p.product_id = ?`, [productId]); if (rows.length === 0) { return res.status(404).send('ไม่พบสินค้านี้'); } const product = rows[0]; res.render('product', { product, currentUserEmail: req.session.userIdEmail }); } catch (err) { res.status(500).send('เกิดข้อผิดพลาด: ' + err.message); } }; exports.orderHistory = async (req, res) => { if (!req.session.userIdEmail) { return res.status(401).send('กรุณาเข้าสู่ระบบเพื่อดูประวัติการสั่งซื้อ'); } try { 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; // ตรงนี้เปลี่ยนจาก user_id เป็น owner const [orders] = await pool.query( 'SELECT * FROM orders WHERE owner = ? ORDER BY created_at DESC', [userId] ); // ดึงรายการสินค้าสำหรับแต่ละคำสั่งซื้อ for (let order of orders) { const [items] = await pool.query( `SELECT oi.*, p.product_name, p.image FROM order_items oi JOIN products p ON oi.phone_id = p.product_id WHERE oi.order_id = ?`, [order.order_id] ); order.items = items; } res.render('orderHistory', { orders }); } catch (err) { res.status(500).send('เกิดข้อผิดพลาดในการดึงประวัติการสั่งซื้อ: ' + err.message); } };