diff --git a/backend/src/routes/publiclinks/publiclinks-non-authenticated.ts b/backend/src/routes/publiclinks/publiclinks-non-authenticated.ts index 91f5a8c..af386a8 100644 --- a/backend/src/routes/publiclinks/publiclinks-non-authenticated.ts +++ b/backend/src/routes/publiclinks/publiclinks-non-authenticated.ts @@ -23,41 +23,30 @@ export default async function publiclinksNonAuthenticatedRoutes(server: FastifyI server.post("/workflows/submit/:token", async (req, reply) => { const { token } = req.params as { token: string }; const pin = req.headers['x-public-pin'] as string | undefined; - - // Payload vom Frontend (enthält nun 'quantity' statt 'startDate/endDate') const body = req.body as any; try { - /** - * TRANSFORMATION - * Wenn das Backend weiterhin Zeiträume erwartet, bauen wir diese hier: - * Wir nehmen 'jetzt' als Ende und rechnen die 'quantity' (Stunden) zurück. - */ const quantity = parseFloat(body.quantity) || 0; + + // Wir nutzen das vom User gewählte deliveryDate + // Falls kein Datum geschickt wurde, Fallback auf Heute + const baseDate = body.deliveryDate ? dayjs(body.deliveryDate) : dayjs(); + const payload = { ...body, - // Wir generieren Start/Ende, damit der Service kompatibel bleibt - endDate: new Date(), - startDate: dayjs().subtract(quantity, 'hour').toDate() + // Wir mappen das deliveryDate auf die Zeitstempel + // Start ist z.B. 08:00 Uhr am gewählten Tag, Ende ist Start + Menge + startDate: baseDate.hour(8).minute(0).toDate(), + endDate: baseDate.hour(8).add(quantity, 'hour').toDate(), + deliveryDate: baseDate.format('YYYY-MM-DD') }; - // Service aufrufen const result = await publicLinkService.submitFormData(server, token, payload, pin); - return reply.code(201).send(result); } catch (error: any) { server.log.error(error); - - if (error.message === "Link_NotFound") return reply.code(404).send({ error: "Link ungültig" }); - if (error.message === "Pin_Required") return reply.code(401).send({ error: "PIN erforderlich" }); - if (error.message === "Pin_Invalid") return reply.code(403).send({ error: "PIN ist falsch" }); - if (error.message === "Profile_Missing") return reply.code(400).send({ error: "Profil fehlt" }); - - return reply.code(500).send({ - error: "Fehler beim Speichern", - details: error.message - }); + return reply.code(500).send({ error: "Fehler beim Speichern", details: error.message }); } }); } \ No newline at end of file diff --git a/frontend/components/PublicDynamicForm.vue b/frontend/components/PublicDynamicForm.vue index 96eb003..eebf0a6 100644 --- a/frontend/components/PublicDynamicForm.vue +++ b/frontend/components/PublicDynamicForm.vue @@ -1,4 +1,6 @@ @@ -90,6 +114,20 @@ const submit = async () => {