From 2782661206461004bc173546dd882b06d9c2f554 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 21:26:15 +0100 Subject: [PATCH] Enhance member gallery generation to support JSON format without image creation This commit updates the member gallery generation functionality to allow returning a list of members in JSON format without creating images. The `generateMemberGallery` method in the MemberService is modified to accept a new parameter, `createImage`, which determines whether images should be generated. This change improves the flexibility of the API for different use cases. --- backend/controllers/memberController.js | 8 ++++++-- backend/services/memberService.js | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/controllers/memberController.js b/backend/controllers/memberController.js index b146803..c46b384 100644 --- a/backend/controllers/memberController.js +++ b/backend/controllers/memberController.js @@ -131,10 +131,14 @@ const generateMemberGallery = async (req, res) => { const { authcode: userToken } = req.headers; const size = parseInt(req.query.size) || 200; // Default: 200x200 const format = req.query.format || 'image'; // 'image' or 'json' - const result = await MemberService.generateMemberGallery(userToken, clubId, size); + + // Bei format=json wird kein Bild erstellt, nur die Mitgliederliste zurückgegeben + const createImage = format !== 'json'; + const result = await MemberService.generateMemberGallery(userToken, clubId, size, createImage); + if (result.status === 200) { if (format === 'json') { - // Return member information for interactive gallery + // Return member information for interactive gallery (ohne Bild zu erstellen) return res.status(200).json({ members: result.galleryEntries.map(entry => ({ memberId: entry.memberId, diff --git a/backend/services/memberService.js b/backend/services/memberService.js index 1010a5d..3c55a0a 100644 --- a/backend/services/memberService.js +++ b/backend/services/memberService.js @@ -1086,7 +1086,7 @@ class MemberService { } } - async generateMemberGallery(userToken, clubId, size = 200) { + async generateMemberGallery(userToken, clubId, size = 200, createImage = true) { try { await checkAccess(userToken, clubId); @@ -1153,6 +1153,15 @@ class MemberService { error: 'Keine aktiven Mitglieder mit Bildern gefunden' }; } + + // Wenn kein Bild erstellt werden soll (z.B. bei format=json), nur die Liste zurückgeben + if (!createImage) { + return { + status: 200, + galleryEntries + }; + } + // Maximale Breite für die Galerie (Dialog-Breite 900px - 32px Padding = 868px) const maxGalleryWidth = 868; // Berechne maximale Anzahl Spalten, die in die Breite passen