diff --git a/backend/services/memberTransferService.js b/backend/services/memberTransferService.js index ca41c2d..c83fb3b 100644 --- a/backend/services/memberTransferService.js +++ b/backend/services/memberTransferService.js @@ -373,12 +373,31 @@ class MemberTransferService { } }; } else { + // Extrahiere detaillierte Fehlerinformationen + let errorMessage = transferResult.error || 'Bulk-Übertragung fehlgeschlagen'; + + // Wenn die Fehlermeldung Validierungsfehler enthält, versuche zu identifizieren, welches Mitglied das Problem verursacht + if (errorMessage.includes('Zeile') || errorMessage.includes('Validierungsfehler')) { + // Versuche die Zeilennummer zu extrahieren + const lineMatch = errorMessage.match(/Zeile\s+(\d+)/); + if (lineMatch) { + const lineNumber = parseInt(lineMatch[1], 10); + // Zeile 1 = Index 0 im Array + const memberIndex = lineNumber - 1; + if (memberIndex >= 0 && memberIndex < membersArray.length) { + const problematicMember = membersArray[memberIndex]; + const memberName = `${problematicMember.firstName || ''} ${problematicMember.lastName || ''}`.trim() || 'Unbekanntes Mitglied'; + errorMessage = `${errorMessage}\n\nProblematisches Mitglied (Index ${memberIndex + 1}): ${memberName}`; + } + } + } + return { status: transferResult.status || 500, response: { success: false, message: 'Bulk-Übertragung fehlgeschlagen', - error: transferResult.error, + error: errorMessage, transferred: 0, total: members.length, errors: memberErrors @@ -727,10 +746,33 @@ class MemberTransferService { }; } catch (error) { errorLog('[transferMember] Error:', error); + + // Extrahiere detaillierte Fehlerinformationen + let errorMessage = 'Übertragung fehlgeschlagen'; + let statusCode = error.response?.status; + + if (error.response?.data) { + // Versuche verschiedene Felder für die Fehlermeldung + errorMessage = error.response.data.message || + error.response.data.error || + error.response.data.errorMessage || + (typeof error.response.data === 'string' ? error.response.data : errorMessage); + + // Logge die vollständige Fehlerantwort für Debugging + infoLog('[transferMember] Fehlerantwort vom externen Endpoint:', JSON.stringify(error.response.data, null, 2)); + } else if (error.message) { + errorMessage = error.message; + } + + // Logge den Status-Code für Debugging + if (statusCode) { + infoLog(`[transferMember] Externer Endpoint Status: ${statusCode}`); + } + return { success: false, - error: error.response?.data?.message || error.message || 'Übertragung fehlgeschlagen', - status: error.response?.status + error: errorMessage, + status: statusCode }; } } diff --git a/frontend/src/components/MemberTransferDialog.vue b/frontend/src/components/MemberTransferDialog.vue index bfda938..20b1e60 100644 --- a/frontend/src/components/MemberTransferDialog.vue +++ b/frontend/src/components/MemberTransferDialog.vue @@ -58,17 +58,27 @@