const express = require('express');
const router = express.Router();
const AuthController = require('../Controllers/AuthController');
const NoteController = require('../Controllers/NoteController');
const CategoryController = require('../Controllers/CategoryController');
const jwt = require('jsonwebtoken');

// Middleware ตรวจสอบการเข้าสู่ระบบแบบง่าย
const webAuth = (req, res, next) => {
  const token = req.cookies ? req.cookies['auth-token'] : null;
  if (!token) {
    return res.redirect('/');
  }

  try {
    const verified = jwt.verify(token, process.env.TOKEN_SECRET);
    req.user = verified;
    next();
  } catch (err) {
    res.redirect('/');
  }
};

// Login routes
router.get("/", AuthController.showLoginPage);
router.post("/", AuthController.login);
router.post("/login", AuthController.login);

// Register routes
router.get("/register", AuthController.showRegisterPage);
router.post("/register", AuthController.signup);
router.post("/signup", AuthController.signup);

// Logout route
router.post("/logout", (req, res, next) => {
  const token = req.cookies ? req.cookies['auth-token'] : null;
  if (!token) {
    return res.redirect('/');
  }
  next();
}, AuthController.logout);

// Dashboard & Notes routes
router.get("/dashboard", webAuth, NoteController.index);
router.post("/dashboard", webAuth, NoteController.index);
router.get("/dashboard/search", webAuth, NoteController.search);
router.get("/dashboard/my-notes", webAuth, NoteController.myNotes);
router.post("/dashboard/create", webAuth, NoteController.create);
router.post("/dashboard/update", webAuth, NoteController.update);
router.post("/dashboard/update/:id", webAuth, NoteController.update);
router.post("/dashboard/:id/update", webAuth, NoteController.update);
router.get("/dashboard/:id/delete", webAuth, NoteController.delete);

// Categories routes
router.get("/categories", webAuth, CategoryController.index);
router.post("/categories", webAuth, CategoryController.index);
router.post("/categories/create", webAuth, CategoryController.create);
router.post("/categories/update", webAuth, CategoryController.update);
router.post("/categories/update/:id", webAuth, CategoryController.update);
router.post("/categories/:id/update", webAuth, CategoryController.update);
router.get("/categories/:id/delete", webAuth, CategoryController.delete);

module.exports = router;