From 4c2b08adf8ec708174f68f79af08060da07fc1dd Mon Sep 17 00:00:00 2001 From: batmanisko Date: Tue, 29 Jul 2025 10:43:49 +0200 Subject: [PATCH] feat: refresh jidla endpoint --- server/src/routes/foodRoutes.ts | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/server/src/routes/foodRoutes.ts b/server/src/routes/foodRoutes.ts index d042cb2..6e247f7 100644 --- a/server/src/routes/foodRoutes.ts +++ b/server/src/routes/foodRoutes.ts @@ -1,10 +1,10 @@ -import express, { Request } from "express"; +import express, { Request, Response } from "express"; import { getLogin, getTrusted } from "../auth"; import { addChoice, getDateForWeekIndex, getToday, removeChoice, removeChoices, updateDepartureTime, updateNote } from "../service"; -import { getDayOfWeekIndex, parseToken } from "../utils"; +import { getDayOfWeekIndex, parseToken, getFirstWorkDayOfWeek } from "../utils"; import { getWebsocket } from "../websocket"; import { callNotifikace } from "../notifikace"; -import { AddChoiceData, ChangeDepartureTimeData, RemoveChoiceData, RemoveChoicesData, UdalostEnum, UpdateNoteData } from "../../../types/gen/types.gen"; +import { AddChoiceData, ChangeDepartureTimeData, RemoveChoiceData, RemoveChoicesData, UdalostEnum, UpdateNoteData, getRestaurantMenu } from "../../../types/gen/types.gen"; /** * Ověří a vrátí index dne v týdnu z požadavku, za předpokladu, že byl předán, a je zároveň @@ -141,4 +141,27 @@ router.post("/jdemeObed", async (req, res, next) => { } catch (e: any) { next(e) } }); +// /api/food/refresh?type=week&heslo=docasnyheslo +router.get("/refresh", async (req: Request, res: Response) => { + const { type, heslo } = req.query as { type?: string; heslo?: string }; + if (heslo !== "docasnyheslo") { + return res.status(403).json({ error: "Neplatné heslo" }); + } + if (type !== "week") { + return res.status(400).json({ error: "Neznámý typ refresh" }); + } + try { + // Pro všechny restaurace refreshni menu na aktuální týden + const restaurants = ["SLADOVNICKA", "TECHTOWER", "ZASTAVKAUMICHALA", "SENKSERIKOVA"] as const; + const firstDay = getFirstWorkDayOfWeek(getToday()); + const results: Record = {}; + for (const rest of restaurants) { + results[rest] = await getRestaurantMenu(rest, firstDay); + } + res.status(200).json({ ok: true, refreshed: results }); + } catch (e: any) { + res.status(500).json({ error: e?.message || "Chyba při refreshi" }); + } +}); + export default router; \ No newline at end of file