diff --git a/index.js b/index.js index 17809a6f3ec15e146735e3e84985eea5bdfe2efb..cc61c83d491306bdc4698ff7184ef73f5d24ee52 100644 --- a/index.js +++ b/index.js @@ -361,45 +361,30 @@ app.post("/confirm-loan", (req, res) => { // Route เธชเธณเธซเธฃเธฑเธเธขเธทเธเธขเธฑเธเธเธฒเธฃเธขเธทเธก -app.post('/submit-loan', (req, res) => { - const { equipment_id, quantity } = req.body; - const user_id = req.session.user.id; // เนเธเน session เธเธญเธเธเธนเนเนเธเนเธ—เธตเนเธฅเนเธญเธเธญเธดเธ +app.post('/submit-loan', async (req, res) => { + try { + const user_id = req.user.id; // เธชเธกเธกเธ•เธดเธงเนเธฒเธเธนเนเนเธเนเธฅเนเธญเธเธญเธดเธเนเธฅเนเธง + const { equipment_id, quantity } = req.body; - if (!equipment_id || !quantity || !user_id) { - return res.status(400).json({ message: 'เธเนเธญเธกเธนเธฅเนเธกเนเธเธฃเธเธ–เนเธงเธ' }); - } + // เธ•เธฃเธงเธเธชเธญเธเธงเนเธฒเธญเธธเธเธเธฃเธ“เนเธกเธตเธเธณเธเธงเธเน€เธเธตเธขเธเธเธญเธซเธฃเธทเธญเนเธกเน + const [equipment] = await db.promise().query('SELECT * FROM equipment WHERE id = ?', [equipment_id]); - // เธ•เธฃเธงเธเธชเธญเธเธเธณเธเธงเธเธญเธธเธเธเธฃเธ“เนเธเธเน€เธซเธฅเธทเธญ - db.query('SELECT quantity FROM equipment WHERE id = ?', [equipment_id], (err, results) => { - if (err) { - console.error('เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”:', err); - return res.status(500).json({ message: 'เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธฒเธฃเธ”เธถเธเธเนเธญเธกเธนเธฅ' }); - } + if (equipment && equipment.quantity >= quantity) { + // เธเธฑเธเธ—เธถเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเธขเธทเธกเธฅเธเนเธเธ•เธฒเธฃเธฒเธ loans + await db.promise().query('INSERT INTO loans (user_id, equipment_id, quantity, status) VALUES (?, ?, ?, "pending")', [user_id, equipment_id, quantity]); - if (results.length === 0 || results[0].quantity < quantity) { - return res.status(400).json({ message: 'เธเธณเธเธงเธเธญเธธเธเธเธฃเธ“เนเนเธกเนเน€เธเธตเธขเธเธเธญ' }); - } + // เธเธฃเธฑเธเธเธณเธเธงเธเธญเธธเธเธเธฃเธ“เนเนเธเธ•เธฒเธฃเธฒเธ equipment + await db.promise().query('UPDATE equipment SET quantity = quantity - ? WHERE id = ?', [quantity, equipment_id]); - // เธเธฑเธเธ—เธถเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเธขเธทเธก - db.query('INSERT INTO loans (user_id, equipment_id, quantity, status) VALUES (?, ?, ?, ?)', - [user_id, equipment_id, quantity, 'borrowed'], (err) => { - if (err) { - console.error('เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธฒเธฃเธเธฑเธเธ—เธถเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเธขเธทเธก:', err); - return res.status(500).json({ message: 'เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธฒเธฃเธขเธทเธกเธญเธธเธเธเธฃเธ“เน' }); - } - - // เธญเธฑเธเน€เธ”เธ•เธเธณเธเธงเธเธญเธธเธเธเธฃเธ“เน - db.query('UPDATE equipment SET quantity = quantity - ? WHERE id = ?', - [quantity, equipment_id], (err) => { - if (err) { - console.error('เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธฒเธฃเธญเธฑเธเน€เธ”เธ•เธญเธธเธเธเธฃเธ“เน:', err); - return res.status(500).json({ message: 'เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธฒเธฃเธญเธฑเธเน€เธ”เธ•เธเนเธญเธกเธนเธฅ' }); - } - - res.json({ message: 'เธขเธทเธกเธญเธธเธเธเธฃเธ“เนเธชเธณเน€เธฃเนเธ' }); - }); - }); - }); + // เน€เธเธฅเธตเนเธขเธเน€เธชเนเธเธ—เธฒเธเนเธเธขเธฑเธเธซเธเนเธฒ "เธฃเธงเธกเธเธฒเธฃเธขเธทเธกเธญเธธเธเธเธฃเธ“เน" + res.redirect('/loans'); + } else { + res.send('เธเธณเธเธงเธเธญเธธเธเธเธฃเธ“เนเนเธกเนเน€เธเธตเธขเธเธเธญ'); + } + } catch (err) { + console.error('Error occurred:', err); + res.status(500).send('เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”เนเธเธเธ“เธฐเธ”เธณเน€เธเธดเธเธเธฒเธฃ'); + } }); diff --git a/views/confirm-loan.ejs b/views/confirm-loan.ejs index 7811148e8dad7893a3e33ecd6bae92448c5d573f..29357c51ab30f73ca17215409bf843fe7511a1ff 100644 --- a/views/confirm-loan.ejs +++ b/views/confirm-loan.ejs @@ -64,33 +64,34 @@ <script> // เน€เธกเธทเนเธญเธเธ”เธเธธเนเธก "เธขเธทเธเธขเธฑเธเธเธฒเธฃเธขเธทเธก" เนเธซเนเน€เธเธฅเธตเนเธขเธเน€เธชเนเธเธ—เธฒเธเนเธเธขเธฑเธเธซเธเนเธฒ /loans - document.getElementById('confirmButton').addEventListener('click', function (event) { - event.preventDefault(); // เธเนเธญเธเธเธฑเธเธซเธเนเธฒเธฃเธตเน€เธเธฃเธ - + document.getElementById('confirmButton').addEventListener('click', function () { + // เธชเนเธเธเนเธญเธกเธนเธฅเธขเธทเธกเนเธเธขเธฑเธเน€เธเธดเธฃเนเธเน€เธงเธญเธฃเน (เนเธเธเธฃเธ“เธตเธ—เธตเนเธ•เนเธญเธเธเธฒเธฃเนเธซเนเธกเธตเธเธฒเธฃเธเธฑเธเธ—เธถเธเธเนเธญเธกเธนเธฅเธเนเธญเธ) const equipment_id = "<%= equipment.id %>"; const quantity = "<%= quantity %>"; fetch('/submit-loan', { method: 'POST', headers: { - 'Content-Type': 'application/json', + 'Content-Type': 'application/json', // เธ•เธฑเนเธเธเนเธฒ header เนเธซเนเน€เธเนเธ application/json }, - body: JSON.stringify({ equipment_id, quantity }), + body: JSON.stringify({ + equipment_id: equipment_id, + quantity: quantity + }) }) - .then(response => response.json()) - .then(data => { - if (data.message === 'เธขเธทเธกเธญเธธเธเธเธฃเธ“เนเธชเธณเน€เธฃเนเธ') { - alert('เธขเธทเธกเธญเธธเธเธเธฃเธ“เนเธชเธณเน€เธฃเนเธ!'); + .then(response => { + if (response.ok) { + // เธซเธฅเธฑเธเธเธฒเธเธขเธทเธเธขเธฑเธเน€เธชเธฃเนเธเนเธฅเนเธงเน€เธเธฅเธตเนเธขเธเน€เธชเนเธเธ—เธฒเธเนเธเธ—เธตเน /loans window.location.href = '/loans'; } else { - alert(data.message); + alert('เธเธฒเธฃเธขเธทเธกเธญเธธเธเธเธฃเธ“เนเธฅเนเธกเน€เธซเธฅเธง'); } }) .catch(error => { alert('เน€เธเธดเธ”เธเนเธญเธเธดเธ”เธเธฅเธฒเธ”: ' + error); }); - }); + }); </script> </body>