From 6d4afa46d701884251f4d207f7c14c7268c419bc Mon Sep 17 00:00:00 2001 From: "theis.gaedigk" Date: Tue, 19 Aug 2025 21:23:29 +0200 Subject: [PATCH] added more API functions --- backend/routes/apiV2.js | 40 ++++++++++++++++++++++++++++++++++-- backend/services/database.js | 22 ++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/backend/routes/apiV2.js b/backend/routes/apiV2.js index 8a707ca..f251c49 100644 --- a/backend/routes/apiV2.js +++ b/backend/routes/apiV2.js @@ -3,16 +3,19 @@ import dotenv from "dotenv"; import { getItemsFromDatabaseV2, changeInSafeStateV2, + setReturnDateV2, + setTakeDateV2, } from "../services/database.js"; dotenv.config(); const router = express.Router(); +// Route for API to get ALL items from the database router.get("/items/:key", async (req, res) => { if (req.params.key === process.env.ADMIN_ID) { const result = await getItemsFromDatabaseV2(); if (result.success) { - res.status(200).json(result.data); + res.status(200).json({ data: result.data }); } else { res.status(500).json({ message: "Failed to fetch items" }); } @@ -21,6 +24,7 @@ router.get("/items/:key", async (req, res) => { } }); +// Route for API to control the position of an item router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => { if (req.params.key === process.env.ADMIN_ID) { const itemId = req.params.itemId; @@ -28,7 +32,7 @@ router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => { if (state === "1" || state === "0") { const result = await changeInSafeStateV2(itemId, state); if (result.success) { - res.status(200).json({ message: "Item state updated successfully" }); + res.status(200).json({ data: result.data }); } else { res.status(500).json({ message: "Failed to update item state" }); } @@ -40,4 +44,36 @@ router.post("/controlInSafe/:key/:itemId/:state", async (req, res) => { } }); +// Route for API to set the return date +router.post("/setReturnDate/:key/:loan_code", async (req, res) => { + if (req.params.key === process.env.ADMIN_ID) { + const loanCode = req.params.loan_code; + + const result = await setReturnDateV2(loanCode); + if (result.success) { + res.status(200).json({ data: result.data }); + } else { + res.status(500).json({ message: "Failed to set return date" }); + } + } else { + res.status(403).json({ message: "Access denied" }); + } +}); + +// Route for API to set the take away date +router.post("/setTakeDate/:key/:loan_code", async (req, res) => { + if (req.params.key === process.env.ADMIN_ID) { + const loanCode = req.params.loan_code; + + const result = await setTakeDateV2(loanCode); + if (result.success) { + res.status(200).json({ data: result.data }); + } else { + res.status(500).json({ message: "Failed to set take date" }); + } + } else { + res.status(403).json({ message: "Access denied" }); + } +}); + export default router; diff --git a/backend/services/database.js b/backend/services/database.js index 2342985..8b6beb2 100644 --- a/backend/services/database.js +++ b/backend/services/database.js @@ -39,6 +39,28 @@ export const changeInSafeStateV2 = async (itemId, state) => { return { success: false }; }; +export const setReturnDateV2 = async (loanCode) => { + const [result] = await pool.query( + "UPDATE loans SET returned_date = NOW() WHERE loan_code = ?", + [loanCode] + ); + if (result.affectedRows > 0) { + return { success: true }; + } + return { success: false }; +}; + +export const setTakeDateV2 = async (loanCode) => { + const [result] = await pool.query( + "UPDATE loans SET take_date = NOW() WHERE loan_code = ?", + [loanCode] + ); + if (result.affectedRows > 0) { + return { success: true }; + } + return { success: false }; +}; + export const getItemsFromDatabase = async (role) => { const sql = role == 0