diff --git a/controllers/tourController.js b/controllers/tourController.js index 8be7fe3c63865542e4be48bb148fdcc4196d7851..2ef88b95565f24202e9815380cc75e096c127c14 100644 --- a/controllers/tourController.js +++ b/controllers/tourController.js @@ -2,22 +2,22 @@ const { User, Tour , Booking } = require('../models/tourModel'); const pool = require('../config/database'); exports.getTours = async (req, res) => { - try { - const tours = await Tour.getAllTours(); - res.render('index', { tours,session: req.session }); - } catch (error) { - res.status(500).send(error.message); - } - }; + try { + const tours = await Tour.getAllTours(req.session.userId); // ดึงทัวร์ที่สร้างโดยผู้ใช้ที่ล็อกอิน + res.render('index', { tours, session: req.session }); + } catch (error) { + res.status(500).send(error.message); + } +}; - exports.getTourDetails = async (req, res) => { - try { - const tour = await Tour.getTourById(req.params.id); - res.render('tour-details', { tour }); - } catch (error) { - res.status(500).send(error.message); - } - }; +exports.getTourDetails = async (req, res) => { + try { + const tour = await Tour.getTourById(req.params.id); + res.render('tour-details', { tour }); + } catch (error) { + res.status(500).send(error.message); + } +}; //User// exports.getLogin = (req, res) => { @@ -139,17 +139,17 @@ exports.getCreateTour = (req, res) => { // บันทึกทัวร์ใหม่ exports.createTour = async (req, res) => { - try { - const { name, description, price, duration } = req.body; + const { name, description, price, duration } = req.body; - // ตรวจสอบว่าข้อมูลถูกต้อง - if (!name || !description || !price || !duration) { - return res.status(400).send('กรุณากรอกข้อมูลให้ครบทุกช่อง'); - } + if (!name || !description || !price || !duration) { + return res.status(400).send('กรุณากรอกข้อมูลให้ครบทุกช่อง'); + } + try { + // เก็บ userId ในฐานข้อมูลเมื่อสร้างทัวร์ใหม่ await pool.query( - 'INSERT INTO tours (name, description, price, duration) VALUES (?, ?, ?, ?)', - [name, description, price, duration] + 'INSERT INTO tours (name, description, price, duration, userId) VALUES (?, ?, ?, ?, ?)', + [name, description, price, duration, req.session.userId] // ใช้ req.session.userId เป็น owner ); res.redirect('/'); } catch (error) { @@ -173,14 +173,17 @@ exports.postCreateTour = async (req, res) => { res.render('createtour', { message: 'เกิดข้อผิดพลาดในการสร้างทัวร์' }); } }; - exports.getEditTour = async (req, res) => { - try { - const tour = await Tour.getTourById(req.params.id); - if (!tour) return res.status(404).send('ไม่พบข้อมูลทัวร์'); - res.render('edittour', { tour }); - } catch (error) { - res.status(500).send('เกิดข้อผิดพลาด'); +exports.getEditTour = async (req, res) => { + try { + const tour = await Tour.getTourById(req.params.id); + if (!tour) return res.status(404).send('ไม่พบข้อมูลทัวร์'); + if (tour.userId !== req.session.userId) { + return res.status(403).send('คุณไม่มีสิทธิ์แก้ไขทัวร์นี้'); } + res.render('edittour', { tour }); + } catch (error) { + res.status(500).send('เกิดข้อผิดพลาด'); + } }; exports.postEditTour = async (req, res) => { @@ -196,13 +199,18 @@ exports.postCreateTour = async (req, res) => { res.status(500).send('เกิดข้อผิดพลาดในการแก้ไขทัวร์'); } }; - exports.deleteTour = async (req, res) => { - try { - await Tour.deleteTour(req.params.id); // คำสั่งในการลบทัวร์ - res.redirect('/'); // ไปที่หน้า home หลังจากลบทัวร์ - } catch (error) { - res.status(500).send('เกิดข้อผิดพลาดในการลบทัวร์'); +exports.deleteTour = async (req, res) => { + try { + const tour = await Tour.getTourById(req.params.id); + if (!tour) return res.status(404).send('ไม่พบข้อมูลทัวร์'); + if (tour.userId !== req.session.userId) { + return res.status(403).send('คุณไม่มีสิทธิ์ลบทัวร์นี้'); } + await Tour.deleteTour(req.params.id); // ลบทัวร์ที่ผู้ใช้เป็นเจ้าของ + res.redirect('/'); // ไปที่หน้า home + } catch (error) { + res.status(500).send('เกิดข้อผิดพลาดในการลบทัวร์'); + } }; //ค้นหาทัวร์ diff --git a/models/tourModel.js b/models/tourModel.js index 43b662a5ffe9479ea1ba048e5cacec1da6f37df3..4502b33a219e1f62f3cf0364af53217957f978b0 100644 --- a/models/tourModel.js +++ b/models/tourModel.js @@ -2,10 +2,13 @@ const pool = require('../config/database'); const bcrypt = require('bcryptjs'); class Tour { // ดึงทัวร์ทั้งหมด - static async getAllTours() { + static async getAllTours(userId) { try { - console.log('Fetching all tours...'); - const [rows] = await pool.query('SELECT * FROM tours'); + console.log('Fetching tours for user:', userId); + + // ดึงทัวร์ทั้งหมดที่ userId ตรงกับผู้ใช้ที่ล็อกอิน + const [rows] = await pool.query('SELECT * FROM tours WHERE userId = ?', [userId]); + console.log('Tours fetched successfully:', rows); return rows; } catch (error) { diff --git a/views/index.ejs b/views/index.ejs index ccd14571e9d12dbe7c436eb0d58bb91944ec28ab..4742675629d43b53cb4e10edcb8c09c9037a75f8 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -18,9 +18,10 @@ <input type="text" name="query" placeholder="Search for tours..." required> <button type="submit">Search</button> </form> - <a href="/my-bookings">My-Booking</a> + <% if (session && session.userId) { %> <!-- ตรวจสอบ session --> <a href="/logout">Logout</a> + <a href="/my-bookings">My-Booking</a> <% } else { %> <a href="/login" class="login-btn">Login</a> <!-- ถ้ายังไม่ได้ login --> <% } %> diff --git a/views/myBookings.ejs b/views/myBookings.ejs index 6fabbe29615cbc8357f4994a9895597f23a6c8e7..0d32fad75b5a8241026e93e893252ff7cdddbac6 100644 --- a/views/myBookings.ejs +++ b/views/myBookings.ejs @@ -18,6 +18,6 @@ </li> <% }); %> </ul> - <a href="/tours/my-tours">กลับไปหน้าทัวร์</a> + <a href="/">กลับไปหน้าทัวร์</a> </body> </html>