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.
This commit is contained in:
Torsten Schulz (local)
2025-11-16 21:26:15 +01:00
parent d10b663dc1
commit 2782661206
2 changed files with 16 additions and 3 deletions

View File

@@ -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,

View File

@@ -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