From 7b2f9201db9ad059040a527684f932a4cd04f6e5 Mon Sep 17 00:00:00 2001 From: 65160381 <65160381@go.buu.ac.th> Date: Tue, 25 Mar 2025 04:22:43 +0700 Subject: [PATCH] 10 --- app.js | 26 +++++++++++++ public/edit.html | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 public/edit.html diff --git a/app.js b/app.js index 134200c..eab7165 100644 --- a/app.js +++ b/app.js @@ -149,6 +149,32 @@ app.post('/api/products', async (req, res) => { } }); + +// Get order details by order ID +app.get('/api/orders/:orderId', (req, res) => { + const orderId = parseInt(req.params.orderId); + const order = orders.find(o => o.order_id === orderId); + if (order) { + res.json(order); + } else { + res.status(404).send('Order not found'); + } +}); + +// Update order details by order ID +app.put('/api/orders/:orderId', (req, res) => { + const orderId = parseInt(req.params.orderId); + const { status, shipping_address } = req.body; + + const order = orders.find(o => o.order_id === orderId); + if (order) { + order.status = status || order.status; + order.shipping_address = shipping_address || order.shipping_address; + res.send('Order updated successfully'); + } else { + res.status(404).send('Order not found'); + } +}); // ตัวอย่างของการดึงข้อมูลสินค้าใน Node.js (Express) app.get('/api/products', async (req, res) => { const searchQuery = req.query.search || ''; // รับคำค้นจาก query string diff --git a/public/edit.html b/public/edit.html new file mode 100644 index 0000000..6c6d723 --- /dev/null +++ b/public/edit.html @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Edit Order</title> + <link rel="stylesheet" href="styles/home.css"> +</head> +<body> + + <header> + <h1>Edit Your Order</h1> + </header> + + <div id="order-details"> + <!-- Order details will be dynamically loaded here --> + </div> + + <button id="update-order-button" onclick="updateOrder()">Update Order</button> + + <footer> + <p>© 2025 ASA</p> + </footer> + + <script> + // Load order details from the API + async function loadOrderDetails() { + try { + const orderId = 1; // Replace with dynamic order ID + const response = await fetch(`/api/orders/${orderId}`); + const order = await response.json(); + + const orderDetailsContainer = document.getElementById('order-details'); + orderDetailsContainer.innerHTML = ` + <h2>Order ID: ${order.order_id}</h2> + <div> + <label for="order-status">Order Status:</label> + <select id="order-status"> + <option value="pending" ${order.status === 'pending' ? 'selected' : ''}>Pending</option> + <option value="shipped" ${order.status === 'shipped' ? 'selected' : ''}>Shipped</option> + <option value="delivered" ${order.status === 'delivered' ? 'selected' : ''}>Delivered</option> + </select> + </div> + <div> + <label for="order-shipping-address">Shipping Address:</label> + <input type="text" id="order-shipping-address" value="${order.shipping_address}" required> + </div> + <div> + <label for="order-products">Products:</label> + <ul id="order-products"> + ${order.products.map(product => ` + <li>${product.name} - $${product.price} x ${product.quantity}</li> + `).join('')} + </ul> + </div> + `; + } catch (error) { + console.error('Error loading order details:', error); + } + } + + // Update order details + async function updateOrder() { + const orderId = 1; // Replace with dynamic order ID + const status = document.getElementById('order-status').value; + const shippingAddress = document.getElementById('order-shipping-address').value; + + try { + const response = await fetch(`/api/orders/${orderId}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + status: status, + shipping_address: shippingAddress + }) + }); + + if (response.ok) { + alert('Order updated successfully!'); + window.location.href = '/'; // Redirect to home page or orders page + } else { + const errorMessage = await response.text(); + alert('Error updating order: ' + errorMessage); + } + } catch (error) { + console.error('Error updating order:', error); + alert('Error updating order'); + } + } + + // Load order details when page loads + window.onload = loadOrderDetails; + </script> +</body> +</html> -- GitLab