require('dotenv').config(); const express = require('express'); const session = require('express-session'); const path = require('path'); const cors = require("cors"); const bodyParser = require('body-parser'); const db = require('./db'); const authRoutes = require('./routes/auth'); const chatAIRouter = require('./routes/chatAI'); const app = express(); // Middlewares app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // ตั้งค่า Session app.use(session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false })); // Serve Static Files app.use(express.static(path.join(__dirname, 'public'))); // ตั้งค่า View Engine app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); // ใช้ router สำหรับ Auth app.use('/auth', authRoutes); // ---------------------- Routes ---------------------- app.get('/', (req, res) => { res.render('auth/login', { error: null }); }); app.get('/register', (req, res) => { res.render('auth/register', { error: null, errors: null }); }); app.get('/index', async (req, res) => { try { const [activities] = await db.query('SELECT * FROM activity'); res.render('pages/index', { activities, user: req.session.user }); } catch (error) { console.error('Error fetching activities:', error); res.status(500).send('เกิดข้อผิดพลาดในการดึงข้อมูล'); } }); // Routes ที่ต้องล็อกอินก่อนเข้าใช้งาน const protectedRoutes = ['/booking', '/chat', '/dashboard', '/settings']; protectedRoutes.forEach(route => { app.get(route, (req, res) => { if (!req.session.user) return res.redirect('/'); res.render(`pages${route}`, { user: req.session.user }); }); }); // Chat AI Route app.use('/api', chatAIRouter); app.get('/chatAI', (req, res) => { res.render('pages/chatAI', { user: req.session.user }); }); // Start Server const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`🚀 Server started on port ${port}`); });