Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit ca9ca69c authored by 65160394's avatar 65160394
Browse files

Project Round 8

parent fa27730c
No related branches found
No related tags found
No related merge requests found
......@@ -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('เกิดข้อผิดพลาดในการลบทัวร์');
}
};
//ค้นหาทัวร์
......
......@@ -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) {
......
......@@ -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 -->
<% } %>
......
......@@ -18,6 +18,6 @@
</li>
<% }); %>
</ul>
<a href="/tours/my-tours">กลับไปหน้าทัวร์</a>
<a href="/">กลับไปหน้าทัวร์</a>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment