Gitlab@Informatics

Skip to content
Snippets Groups Projects
Select Git revision
  • 96a1d042d3e5f41ff7e6708b78aba4ad51e63992
  • master default
  • main protected
3 results

product.js

Blame
  • product.js 4.10 KiB
    const express = require("express");
    const pool = require("../config/database");
    const multer = require("multer");
    const path = require("path");
    const fs = require("fs");
    
    
    const router = express.Router();
    
    // ตั้งค่าที่เก็บไฟล์รูป
    const uploadDir = "public/uploads";
    if (!fs.existsSync(uploadDir)) {
        fs.mkdirSync(uploadDir, { recursive: true });
    }
    
    // ตั้งค่า Multer สำหรับอัปโหลดรูป
    const storage = multer.diskStorage({
        destination: (req, file, cb) => {
            cb(null, uploadDir);
        },
        filename: (req, file, cb) => {
            cb(null, Date.now() + path.extname(file.originalname)); // ตั้งชื่อไฟล์เป็น timestamp
        }
    });
    const upload = multer({ storage: storage });
    
    // ดึงสินค้าทั้งหมด
    router.get("/", async (req, res) => {
        try {
            const [products] = await pool.execute("SELECT * FROM products");
            res.render("product", { products });
        } catch (error) {
            console.error("Error fetching products:", error);
            res.status(500).send("Error loading products.");
        }
    });
    
    // แสดงฟอร์มเพิ่มสินค้า
    router.get("/add", (req, res) => {
        res.render("product_add", { product: {}, message: "" });
    });
    
    // เพิ่มสินค้าใหม่พร้อมรูป
    router.post("/add", upload.single("image"), async (req, res) => {
        try {
            console.log("Debugging Data:", req.body);
            console.log("File Upload:", req.file);
    
            const { name, price, stock, description } = req.body;
            if (!name || !price || !stock || !description || !req.file) {
                throw new Error("Missing required fields");
            }
    
            const imagePath = "/uploads/" + req.file.filename;
    
            await pool.execute("INSERT INTO products (name, price, stock, description, image_url) VALUES (?, ?, ?, ?, ?)", 
                [name, price, stock, description, imagePath]);
    
            console.log("Product added successfully!");
            res.redirect("/products");
        } catch (error) {
            console.error("Error adding product:", error);
            res.status(500).json({ message: "Internal Server Error", error: error.message });
        }
    });
    
    
    // ดึงข้อมูลสินค้าตาม ID และแสดงหน้าแก้ไข
    router.get("/edit/:id", async (req, res) => {
        try {