Untitled
unknown
javascript
a year ago
3.0 kB
8
Indexable
const connection = require("../config/connection"); // Chuyển đổi connection.query thành hàm trả về Promise function queryDatabase(query, params = []) { return new Promise((resolve, reject) => { connection.query(query, params, (err, results) => { if (err) { return reject(err); } resolve(results); }); }); } // Tạo một order exports.createOrder = async (req, res) => { const { centre_id, table_id, items } = req.body; // Kiểm tra table_id if (!Number.isInteger(table_id) || table_id <= 0) { return res.status(400).json({ status: "Failed", message: "Table ID must be an integer greater than 0", }); } try { // Kiểm tra xem centre_id có hợp lệ không const centres = await queryDatabase('SELECT * FROM restaurant_centre WHERE centre_id = ?', [centre_id]); if (centres.length === 0) { return res.status(404).json({ status: "Failed", message: "No restaurant centre found", }); } const table_quantity = centres[0].quantity_table; if (table_id > table_quantity) { return res.status(404).json({ status: "Failed", message: "No active tables available", }); } // Kiểm tra xem có đơn hàng nào cho bàn này không const orders = await queryDatabase('SELECT * FROM orders WHERE table_id = ? AND centre_id = ?', [table_id, centre_id]); // Kiểm tra xem bàn có đang được sử dụng không function isAvailableTable(result) { return result.every(i => i.active !== 1); } if (orders.length === 0 || isAvailableTable(orders)) { // Tạo đơn hàng mới await queryDatabase( `INSERT INTO orders (orders_id, table_id, centre_id) SELECT COALESCE(MAX(orders_id), 0) + 1, ?, ? FROM orders`, [table_id, centre_id] ); } // Lấy giá của từng món async function getPrice(item_id) { const result = await queryDatabase('SELECT price FROM menu WHERE item_id = ?', [item_id]); if (result.length === 0) { throw new Error("No menu item found"); } return result[0].price; } // Tạo mảng giá cho từng món const itemPrices = await Promise.all( items.map(async (item) => { const price = await getPrice(item.item_id); return [centre_id, table_id, item.item_id, item.quantity, price]; }) ); // Tạo bản ghi order_item await queryDatabase( `INSERT INTO order_item (centre_id, table_id, item_id, quantity, price_item) VALUES ?`, [itemPrices] ); return res.status(200).json({ status: "Success", message: "Order created successfully", }); } catch (error) { console.error('Error:', error); return res.status(500).json({ status: "Failed", error: error.message, }); } finally { connection.end(); } };
Editor is loading...
Leave a Comment