const { User, Tour } = require('../models/tourModel');

exports.getTours = async (req, res) => {
  try {
    const tours = await Tour.getAllTours();
    res.render('index', { 
      tours: tours,
      session: req.session // ส่ง session ไปยัง ejs
    });
  } catch (error) {
    res.status(500).send('เกิดข้อผิดพลาด');
  }
};

exports.getTourDetails = async (req, res) => {
  try {
    const tour = await Tour.getTourById(req.params.id);
    if (!tour) return res.status(404).send('ไม่พบข้อมูล');
    res.render('tour-details', { tour });
  } catch (error) {
    res.status(500).send('เกิดข้อผิดพลาด');
  }
};

//User//
exports.getLogin = (req, res) => {
  res.render('login', { message: null });
};

exports.getRegister = (req, res) => {
  res.render('register', { message: null });
};

exports.postRegister = async (req, res) => {
  const { name, email, password, confirmPassword } = req.body;

  if (password !== confirmPassword) {
      return res.render('register', { message: 'Passwords do not match' });
  }

  try {
      const existingUser = await User.findOne(email);
      if (existingUser) {
          return res.render('register', { message: 'Email already in use' });
      }

      const userId = await User.create(name, email, password);
      req.session.userId = userId;
      res.redirect('/login');
  } catch (err) {
      console.error(err);
      res.render('register', { message: 'Error creating user' });
  }
};

exports.postLogin = async (req, res) => {
  const { email, password } = req.body;

  try {
      const user = await User.findOne(email); // หาผู้ใช้จากฐานข้อมูล

      if (!user) {
          return res.render('login', { message: 'Invalid email or password' });
      }

      const isMatch = await User.comparePassword(email, password); // ตรวจสอบรหัสผ่าน
      if (!isMatch) {
          return res.render('login', { message: 'Invalid email or password' });
      }

      req.session.userId = user.email; // เก็บ email ใน session
      req.session.userName = user.name; // เก็บชื่อผู้ใช้ใน session
      res.redirect('/'); // เมื่อ login สำเร็จให้ไปหน้า home
  } catch (err) {
      console.error(err);
      res.render('login', { message: 'Error logging in' });
  }
};


exports.Logout = (req, res) => {
  req.session.destroy(() => {
      res.redirect('/');
  });
};