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