From 1bf5121c81a223fc93f38c85da1382963d19512f Mon Sep 17 00:00:00 2001
From: Atiwit Pattanapukdee <65160394@go.buu.ac.th>
Date: Sun, 16 Mar 2025 14:33:22 +0700
Subject: [PATCH] Project Round 2

---
 controllers/tourController.js | 35 ++++++++++++++++--------------
 routes/tourRoutes.js          |  7 +++---
 views/index.ejs               | 40 +++++++++++++++++++----------------
 3 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/controllers/tourController.js b/controllers/tourController.js
index e8f29ea..34b937e 100644
--- a/controllers/tourController.js
+++ b/controllers/tourController.js
@@ -1,20 +1,23 @@
-const Tour = require('../models/tourModel');
+const db = require('../config/db');
 
-exports.getTours = async (req, res) => {
-  try {
-    const tours = await Tour.getAllTours();
-    res.render('index', { tours });
-  } catch (error) {
-    res.status(500).send('เกิดข้อผิดพลาด');
+class Tour {
+  static async getAllTours() {
+    try {
+      const [rows] = await db.query('SELECT * FROM tours');
+      return rows;
+    } catch (error) {
+      throw error;
+    }
   }
-};
 
-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('เกิดข้อผิดพลาด');
+  static async getTourById(id) {
+    try {
+      const [rows] = await db.query('SELECT * FROM tours WHERE id = ?', [id]);
+      return rows.length > 0 ? rows[0] : null;
+    } catch (error) {
+      throw error;
+    }
   }
-};
+}
+
+module.exports = Tour;
diff --git a/routes/tourRoutes.js b/routes/tourRoutes.js
index 08b172e..de0f503 100644
--- a/routes/tourRoutes.js
+++ b/routes/tourRoutes.js
@@ -1,8 +1,9 @@
 const express = require('express');
+const { getTours, getTourDetails } = require('../controllers/tourController');
+
 const router = express.Router();
-const tourController = require('../controllers/tourController');
 
-router.get('/', tourController.getTours);
-router.get('/tour/:id', tourController.getTourDetails);
+router.get('/', getTours); // แสดงรายการทัวร์ทั้งหมด
+router.get('/tour/:id', getTourDetails); // แสดงรายละเอียดทัวร์ตาม id
 
 module.exports = router;
diff --git a/views/index.ejs b/views/index.ejs
index ee88341..ea99f22 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -18,25 +18,29 @@
   </header>
 
   <section class="tour-list">
-    <h2>Available Tours</h2>
-    <ul>
-      <% tours.forEach(tour => { %>
-        <li class="tour-card">
-          <a href="/tour/<%= tour.id %>">
-            <div class="tour-card-img">
-              <img src="<%= tour.imageUrl %>" alt="<%= tour.name %>">
-            </div>
-            <div class="tour-card-info">
-              <h3><%= tour.name %></h3>
-              <p><%= tour.description %></p>
-              <div class="price">
-                <span><%= tour.price %> THB</span>
+    <% if (tours.length === 0) { %>
+      <p>No tours available at the moment. Please check back later.</p>
+    <% } else { %>
+      <ul>
+        <% tours.forEach(tour => { %>
+          <li class="tour-card">
+            <a href="/tour/<%= tour.id %>">
+              <div class="tour-card-img">
+                <img src="<%= tour.imageUrl %>" alt="<%= tour.name %>">
               </div>
-            </div>
-          </a>
-        </li>
-      <% }) %>
-    </ul>
+              <div class="tour-card-info">
+                <h3><%= tour.name %></h3>
+                <p><%= tour.description %></p>
+                <div class="price">
+                  <span><%= tour.price %> THB</span>
+                </div>
+              </div>
+            </a>
+          </li>
+        <% }) %>
+      </ul>
+    <% } %>
+    
   </section>
 
   <footer>
-- 
GitLab