Add IDBConnection dependency to MemberService and wrap create(),
update(), and softDelete() in transactions (beginTransaction/commit/
rollback). This ensures atomicity when inserting/updating members
alongside sub-entities (addresses, phones, emails) — a failure at
any step now rolls back the entire operation instead of leaving
orphaned records.
(Closes#203)
Replace in-memory array_filter with a dedicated SQL query
WHERE deleted_at IS NOT NULL in MemberMapper::findArchived().
This fixes broken pagination (limit/offset now apply to archived
members only), eliminates unnecessary data transfer, and follows
the same pattern as the countArchived() fix from #201.
- MemberMapper: 8 new *WithRelations() methods that fetch members with
addresses, phones, and emails in a single query using LEFT JOINs
- MemberMapper: addJoinClauses() and fetchWithRelations() private helpers
that handle JOIN duplication (one member × multiple sub-entities)
- MemberService: refactored findAll, findByFamily, findByStatus, search,
findByBirthdayThisMonth, findWithUnpaidFees, findFiltered, fullTextSearch
to delegate to joined mapper methods
- MemberService: added arrayToMember() and arrayToAddress() helpers so
buildMatchContext() works with flat-array results from fullTextSearch
- MemberServiceTest: updated all existing tests to mock new method names
and return flat-array format with nested sub-entities
- MemberServiceTest: added 10 new tests covering joined methods, backward
compatibility, and correct shape of returned data
- Moved issue-200 plan from open/ to done/
- Make quickfilters combinable (status + rolle + birthday + unpaid fees with AND logic)
- Add Mitglieder/Erziehungsberechtigte role quickfilters
- Add PLZ and Wohnort columns from primary address for KJR reports
- Add saved filter system (localStorage-persisted, create/apply/delete)
- Backend: unified findFiltered() in MemberMapper/MemberService/MemberController
- Fix all 75 pre-existing test failures (constructor mismatches, optional geburtsdatum,
DsgvoController body reading, FileController lagerFiles API, CalDavBackend stub)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>