feat: add MemberService with CRUD, validation, and soft-delete (Closes #21) (#70)

This commit was merged in pull request #70.
This commit is contained in:
2026-04-07 11:39:42 +02:00
parent fec34f2aa9
commit 938dc79a04
5 changed files with 693 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# Plan: Issue #21 - MemberService with CRUD operations
## Summary
Create MemberService that provides business logic for member CRUD operations. Includes
validation (required fields, date plausibility, duplicate detection), sub-entity management
(addresses, phones, emails), and soft-delete logic that hard-deletes sensitive data per
requirements section 4.5.
## Steps
1. Create `lib/Service/MemberService.php` with:
- create(): validate required fields, check duplicates, set timestamps, persist member + sub-entities
- find(): return member with loaded sub-entities
- findAll(): paginated list with optional filters
- update(): validate, track changes, update timestamps
- delete(): soft-delete (set deleted_at, set status geloescht, hard-delete sensitive data)
- Sub-entity CRUD: addAddress, updateAddress, deleteAddress, etc.
2. Validation logic:
- Required fields: vorname, nachname, geburtsdatum, eintritt
- Date plausibility: birthday not future, not >120 years ago, eintritt not before birthday
- Duplicate detection: warn on matching vorname + nachname + geburtsdatum
## AC Verification Checklist
1. [ ] MemberService class exists with proper DI constructor
2. [ ] Create method validates required fields and checks for duplicates
3. [ ] Read method returns member with sub-entities (addresses, phones, emails)
4. [ ] Update method validates fields and updates timestamps
5. [ ] Soft-delete sets status to geloescht and hard-deletes sensitive data
6. [ ] Date plausibility checks implemented
7. [ ] Sub-entity management methods exist (addresses, phones, emails)
8. [ ] Proper exception handling with meaningful error messages