const bcrypt = require('bcrypt');
const pool = require('../db');

module.exports = {
    registerUser: async (req, res) => {
        const { email, username, fname, lname, rpassword, confirm_password } = req.body;

        if (rpassword !== confirm_password) {
            req.flash('message', 'Passwords do not match!');
            return res.redirect('/register');
        }

        if (!email || !username || !fname || !lname || !rpassword || !confirm_password) {
            req.flash('message', 'Please fill in all fields!');
            return res.redirect('/register');
        }

        try {
            // ตรวจสอบว่าอีเมลมีอยู่ในระบบหรือไม่
            const [existingUser] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]);
            if (existingUser.length > 0) {
                req.flash('message', 'Email is already registered.');
                return res.redirect('/register');
            }

            // ตรวจสอบว่า username มีอยู่แล้วหรือไม่
            const [existingUsername] = await pool.execute('SELECT * FROM users WHERE username = ?', [username]);
            if (existingUsername.length > 0) {
                req.flash('message', 'Username is already taken.');
                return res.redirect('/register');
            }

            // แฮชรหัสผ่าน
            const hashedPassword = await bcrypt.hash(rpassword, 10);

            // บันทึกข้อมูลผู้ใช้ในฐานข้อมูล
            const query = 'INSERT INTO users (email, username, password, fname, lname) VALUES (?, ?, ?, ?, ?)';
            const result = await pool.execute(query, [email, username, hashedPassword, fname, lname]);

            // ตรวจสอบผลลัพธ์จากการแทรกข้อมูล
            if (result.affectedRows > 0) {
                req.flash('message', 'Registration successful! Please log in.');
                res.redirect('/login');
            } else {
                req.flash('message', 'Error occurred during registration. Please try again later.');
                res.redirect('/register');
            }
        } catch (err) {
            console.error('Error inserting user:', err);
            req.flash('message', 'Error occurred during registration. Please try again later.');
            res.redirect('/register');
        }
    }
};