diff --git a/server/routers/gamehub/index.js b/server/routers/gamehub/index.js index 34af599..301a512 100644 --- a/server/routers/gamehub/index.js +++ b/server/routers/gamehub/index.js @@ -8,6 +8,10 @@ router.get("/update-like", (request, response) => { response.send(require("./json/gamepage/success.json")); }); +router.get("/add-to-cart", (request, response) => { + response.send(require("./json/home-page-data/games-in-cart.json")); +}); + router.get("/categories", (request, response) => { response.send(require("./json/home-page-data/all-games.json")); }); @@ -16,18 +20,32 @@ router.get("/favourites", (request, response) => { response.send(require("./json/home-page-data/all-games.json")); }); +// router.get("/shopping-cart", (request, response) => { +// response.send(require("../json/shopping-cart/success.json")); +// }); + router.get("/shopping-cart", (request, response) => { - response.send(require("./json/shopping-cart/success.json")); + response.send(require("./json/home-page-data/games-in-cart.json")); }); -router.get("/home", (request, response) => { - response.send(require("./json/home-page-data/success.json")); +// Добавляем поддержку разных ответов для /home +router.get("/home", (req, res) => { + if (stubs.home === "success") { + res.send(require("./json/home-page-data/success.json")); + } else if (stubs.home === "empty") { + res.send({ data: [] }); // Отправляем пустой массив + } else { + res.status(500).json({ success: false, message: "Server error" }); + } }); router.get("/all-games", (request, response) => { response.send(require("./json/home-page-data/all-games.json")); }); +const stubs = { + home: "success", +}; // // Маршрут для обновления лайков // router.post("/update-like", (request, response) => { @@ -42,18 +60,17 @@ router.get("/all-games", (request, response) => { // }); // }); - const fs = require("fs").promises; const path = require("path"); // Path to JSON file -const commentsFilePath = path.join(__dirname, "./json/gamepage/success.json"); +const commentsFilePath = path.join(__dirname, "../json/gamepage/success.json"); // Read JSON file async function readComments() { const data = await fs.readFile(commentsFilePath, "utf-8"); const parsedData = JSON.parse(data); - console.log("Прочитанные данные:", parsedData); // Логируем полученные данные + console.log("Прочитанные данные:", parsedData); // Логируем полученные данные return parsedData; } // Write to JSON file @@ -92,5 +109,137 @@ router.post("/update-like", async (req, res) => { } }); +// Путь к JSON-файлу с корзиной +const cartFilePath = path.join( + __dirname, + "../json/home-page-data/games-in-cart.json" +); + +// Функция для чтения JSON-файла +async function readCart() { + const data = await fs.readFile(cartFilePath, "utf-8"); + return JSON.parse(data); +} + +// Функция для записи в JSON-файл +async function writeCart(data) { + await fs.writeFile(cartFilePath, JSON.stringify(data, null, 2), "utf-8"); +} + +// Маршрут для добавления/удаления товара в корзине +router.post("/add-to-cart", async (req, res) => { + const { id, action } = req.body; + + // Проверка наличия id и action + if (id === undefined || action === undefined) { + return res + .status(400) + .json({ success: false, message: "Invalid id or action" }); + } + + try { + const cartData = await readCart(); + let ids = cartData.data.ids; + + if (action === "add") { + // Если action "add", добавляем товар, если его нет в корзине + if (!ids?.includes(id)) { + ids.push(id); + } + } else if (action === "remove") { + // Если action "remove", удаляем товар, если он есть в корзине + if (ids?.includes(id)) { + ids = ids.filter((item) => item !== id); + } + } else { + // Если action невалиден + return res + .status(400) + .json({ success: false, message: "Invalid action" }); + } + + // Записываем обновленные данные обратно в файл + cartData.data.ids = ids; + await writeCart(cartData); + + res.status(200).json({ + success: true, + message: "Cart updated successfully", + data: cartData.data, // Возвращаем обновленные данные + }); + } catch (error) { + console.error("Error updating cart:", error); + res.status(500).json({ success: false, message: "Server error" }); + } +}); module.exports = router; + +const createElement = (key, value, buttonTitle) => ` + +`; + +router.get("/admin/home", (request, response) => { + response.send(` +