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);
    }
};