From 8c391f55affe04ef0e4d19b28d89ec1830121868 Mon Sep 17 00:00:00 2001
From: 65160024 <65160024@go.buu.ac.th>
Date: Sat, 29 Mar 2025 02:44:13 +0000
Subject: [PATCH] update

---
 index.js               | 55 +++++++++++++++---------------------------
 views/confirm-loan.ejs | 23 +++++++++---------
 2 files changed, 32 insertions(+), 46 deletions(-)

diff --git a/index.js b/index.js
index 17809a6..cc61c83 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 7811148..29357c5 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>
-- 
GitLab